@provoly/hypervisor 0.0.10 → 0.0.11

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.
@@ -2,6 +2,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { HypEventCategory } from '../../model/event/hyp-event-category.type';
3
3
  import { HypEventCriticality } from '../../model/event/hyp-event-criticality.type';
4
4
  import { SubscriptionnerDirective } from '@provoly/dashboard';
5
+ import { DOMAINS } from '../../model/domains.constant';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../../store/equipment/equipment.service";
7
8
  import * as i2 from "@provoly/dashboard/components/checkbox";
@@ -38,6 +39,7 @@ export class EventDetailComponent extends SubscriptionnerDirective {
38
39
  this.modifiedEvents = new EventEmitter();
39
40
  this.procedureModifications = {};
40
41
  this.modifiedProcedure = new EventEmitter();
42
+ this.DOMAINS = DOMAINS.values;
41
43
  }
42
44
  get events() {
43
45
  return this._events.map((evt, idx) => ({ ...evt, ...(this.eventModifications[idx] ?? {}) }));
@@ -122,11 +124,11 @@ export class EventDetailComponent extends SubscriptionnerDirective {
122
124
  this.modifiedProcedure.next(this.procedure ? [this.procedureModifications, this.procedure] : undefined);
123
125
  }
124
126
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: EventDetailComponent, deps: [{ token: i1.EquipmentService }], target: i0.ɵɵFactoryTarget.Component }); }
125
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: EventDetailComponent, selector: "hvy-event-detail", inputs: { events: "events", procedure: "procedure", cancelModifications: "cancelModifications" }, outputs: { modifiedEvents: "modifiedEvents", modifiedProcedure: "modifiedProcedure" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ '@hvy.event.log.name' | i18n }}</h1>\n <button class=\"a-btn a-btn--secondary -fix-right\">{{ '@hvy.event.log.event.close' | i18n }}</button>\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events;track event.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"true\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n @if (opened[idx]) {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\" [items]=\"categories\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.startDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.startDate | forDateTimeLocal\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.endDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.endDate | forDateTimeLocal\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\">{{ '@hvy.action.send' | i18n }}</button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>{{ '@hvy.event.log.procedure.name' | i18n }}</h2>\n </div>\n <div>\n <p>{{ procedure.name }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\">\n @for (action of procedure.actions;track action.id) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\">\n <pry-icon iconSvg=\"six_dot\"></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i5.IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "component", type: i6.StatusDisplayComponent, selector: "hvy-status-display", inputs: ["event", "modifiable"], outputs: ["modified"] }, { kind: "component", type: i7.ProgressDisplayComponent, selector: "hvy-progress-display", inputs: ["progress"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i8.ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
127
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: EventDetailComponent, selector: "hvy-event-detail", inputs: { events: "events", procedure: "procedure", cancelModifications: "cancelModifications" }, outputs: { modifiedEvents: "modifiedEvents", modifiedProcedure: "modifiedProcedure" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ '@hvy.event.log.name' | i18n }}</h1>\n <button class=\"a-btn a-btn--secondary -fix-right\">{{ '@hvy.event.log.event.close' | i18n }}</button>\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events;track event.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"true\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n @if (opened[idx]) {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\" [items]=\"categories\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}</td>\n <td>\n <pry-select [items]=\"DOMAINS\" [ngModel]=\"event.domain\" i18nPrefix=\"@hvy.event.domain.\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.startDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.startDate | forDateTimeLocal\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.endDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.endDate | forDateTimeLocal\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\">{{ '@hvy.action.send' | i18n }}</button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>{{ '@hvy.event.log.procedure.name' | i18n }}</h2>\n </div>\n <div>\n <p>{{ procedure.name }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\">\n @for (action of procedure.actions;track action.id) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\">\n <pry-icon iconSvg=\"six_dot\"></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i5.IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "component", type: i6.StatusDisplayComponent, selector: "hvy-status-display", inputs: ["event", "modifiable"], outputs: ["modified"] }, { kind: "component", type: i7.ProgressDisplayComponent, selector: "hvy-progress-display", inputs: ["progress"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i8.ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
126
128
  }
127
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: EventDetailComponent, decorators: [{
128
130
  type: Component,
129
- args: [{ selector: 'hvy-event-detail', template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ '@hvy.event.log.name' | i18n }}</h1>\n <button class=\"a-btn a-btn--secondary -fix-right\">{{ '@hvy.event.log.event.close' | i18n }}</button>\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events;track event.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"true\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n @if (opened[idx]) {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\" [items]=\"categories\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.startDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.startDate | forDateTimeLocal\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.endDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.endDate | forDateTimeLocal\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\">{{ '@hvy.action.send' | i18n }}</button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>{{ '@hvy.event.log.procedure.name' | i18n }}</h2>\n </div>\n <div>\n <p>{{ procedure.name }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\">\n @for (action of procedure.actions;track action.id) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\">\n <pry-icon iconSvg=\"six_dot\"></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n" }]
131
+ args: [{ selector: 'hvy-event-detail', template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ '@hvy.event.log.name' | i18n }}</h1>\n <button class=\"a-btn a-btn--secondary -fix-right\">{{ '@hvy.event.log.event.close' | i18n }}</button>\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events;track event.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"true\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n @if (opened[idx]) {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\" [items]=\"categories\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}</td>\n <td>\n <pry-select [items]=\"DOMAINS\" [ngModel]=\"event.domain\" i18nPrefix=\"@hvy.event.domain.\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.startDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.startDate | forDateTimeLocal\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.endDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.endDate | forDateTimeLocal\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\">{{ '@hvy.action.send' | i18n }}</button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>{{ '@hvy.event.log.procedure.name' | i18n }}</h2>\n </div>\n <div>\n <p>{{ procedure.name }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\">\n @for (action of procedure.actions;track action.id) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\">\n <pry-icon iconSvg=\"six_dot\"></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n" }]
130
132
  }], ctorParameters: () => [{ type: i1.EquipmentService }], propDecorators: { modifiedEvents: [{
131
133
  type: Output
132
134
  }], modifiedProcedure: [{
@@ -138,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
138
140
  }], cancelModifications: [{
139
141
  type: Input
140
142
  }] } });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL2V2ZW50L2RldGFpbC9ldmVudC1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZXZlbnQvZGV0YWlsL2V2ZW50LWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7O0FBUTlELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSx3QkFBd0I7SUFXaEUsSUFBYSxNQUFNLENBQUMsTUFBeUI7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBQUEsQ0FBQztJQUVGLElBQWEsU0FBUyxDQUFDLFNBQXVC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QUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDdEMsQ0FBQztnQkFDRCxhQUFhO2dCQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFNBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRyxDQUFDOzhHQTFIVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix3UUNiakMseXBTQTRLQTs7MkZEL0phLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7cUZBU2xCLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUVNLE1BQU07c0JBQWxCLEtBQUs7Z0JBTU8sU0FBUztzQkFBckIsS0FBSztnQkFLTyxtQkFBbUI7c0JBQS9CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHlwUHJvY2VkdXJlIH0gZnJvbSAnLi4vLi4vbW9kZWwvaHlwLXByb2NlZHVyZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWwvZXZlbnQvaHlwLWV2ZW50LWRldGFpbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwRXZlbnRDYXRlZ29yeSB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1jYXRlZ29yeS50eXBlJztcbmltcG9ydCB7IEh5cEV2ZW50Q3JpdGljYWxpdHkgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtY3JpdGljYWxpdHkudHlwZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgSHlwRXF1aXBtZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvaHlwLWVxdWlwbWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRXF1aXBtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3N0b3JlL2VxdWlwbWVudC9lcXVpcG1lbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2h2eS1ldmVudC1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXZlbnQtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRXZlbnREZXRhaWxDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBvcGVuZWQ6IGJvb2xlYW5bXSA9IFtdO1xuICBjYXRlZ29yaWVzID0gSHlwRXZlbnRDYXRlZ29yeTtcbiAgY3JpdGljYWxpdGllcyA9IEh5cEV2ZW50Q3JpdGljYWxpdHk7XG4gIF9ldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdID0gW107XG4gIGV2ZW50TW9kaWZpY2F0aW9uczogUGFydGlhbDxIeXBFdmVudERldGFpbHM+W10gPSBbXTtcbiAgQE91dHB1dCgpIG1vZGlmaWVkRXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcjxbUGFydGlhbDxIeXBFdmVudERldGFpbHM+LCBIeXBFdmVudERldGFpbHNdW10+KCk7XG4gIF9wcm9jZWR1cmU/OiBIeXBQcm9jZWR1cmU7XG4gIHByb2NlZHVyZU1vZGlmaWNhdGlvbnM6IFBhcnRpYWw8SHlwUHJvY2VkdXJlPiA9IHt9O1xuICBAT3V0cHV0KCkgbW9kaWZpZWRQcm9jZWR1cmUgPSBuZXcgRXZlbnRFbWl0dGVyPFtQYXJ0aWFsPEh5cFByb2NlZHVyZT4sIEh5cFByb2NlZHVyZV0gfCB1bmRlZmluZWQ+KCk7XG5cbiAgQElucHV0KCkgc2V0IGV2ZW50cyhldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdKSB7XG4gICAgdGhpcy5fZXZlbnRzID0gZXZlbnRzLmZpbHRlcihldiA9PiAhIWV2KTtcbiAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9ucyA9IG5ldyBBcnJheSh0aGlzLl9ldmVudHMubGVuZ3RoKTtcbiAgICB0aGlzLm9wZW5lZCA9IGV2ZW50cy5sZW5ndGggPT09IDEgPyBbdHJ1ZV0gOiBbXTtcbiAgfTtcblxuICBASW5wdXQoKSBzZXQgcHJvY2VkdXJlKHByb2NlZHVyZTogSHlwUHJvY2VkdXJlKSB7XG4gICAgdGhpcy5fcHJvY2VkdXJlID0gcHJvY2VkdXJlO1xuICAgIHRoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucyA9IHt9O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGNhbmNlbE1vZGlmaWNhdGlvbnMoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9ucyA9IG5ldyBBcnJheSh0aGlzLl9ldmVudHMubGVuZ3RoKTtcbiAgICB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMgPSB7fTtcbiAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVxdWlwbWVudFNlcnZpY2U6IEVxdWlwbWVudFNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGV2ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzLm1hcCgoZXZ0LCBpZHgpID0+ICh7IC4uLmV2dCwgLi4uKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2lkeF0gPz8ge30pIH0pKTtcbiAgfVxuXG4gIGdldCBwcm9jZWR1cmUoKTogSHlwUHJvY2VkdXJlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcHJvY2VkdXJlID8gKHsgLi4udGhpcy5fcHJvY2VkdXJlLCAuLi4odGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zID8/IHt9KSwgZXZlbnRzOiB0aGlzLmV2ZW50cyB9KSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRvZ2dsZShpOiBudW1iZXIpIHtcbiAgICB0aGlzLm9wZW5lZFtpXSA9ICF0aGlzLm9wZW5lZFtpXTtcbiAgfVxuXG4gIG1vZGlmeUV2ZW50KGluZGV4OiBudW1iZXIsIHByb3A6IHN0cmluZywgJGV2ZW50OiBFdmVudCB8IHN0cmluZykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICRldmVudCBpbnN0YW5jZW9mIEV2ZW50ID8gJGV2ZW50LnRhcmdldD8udmFsdWUgOiAkZXZlbnQ7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0aGlzLl9ldmVudHNbaW5kZXhdW3Byb3BdICE9PSBuZXdWYWx1ZSkge1xuXG4gICAgICBpZiAoIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPSB7fTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XVtwcm9wXSA9IG5ld1ZhbHVlO1xuXG4gICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgYWNjZXNzKGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ0FMRVJUJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogdHJ1ZSxcbiAgICAgICAgICBjYXRlZ29yeTogdHJ1ZSxcbiAgICAgICAgICBjcml0aWNhbGl0eTogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgICAgICBhZGRyZXNzOiB0cnVlLFxuICAgICAgICAgIHNvdXJjZTogdHJ1ZSxcbiAgICAgICAgICBlcU5hbWU6IHRydWUsXG4gICAgICAgICAgZXFFbnRpdHk6IHRydWUsXG4gICAgICAgICAgc3RhcnREYXRlOiB0cnVlLFxuICAgICAgICAgIGVuZERhdGU6IHRydWUsXG4gICAgICAgIH07XG4gICAgICBjYXNlICdSRVBPUlQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IGZhbHNlLFxuICAgICAgICAgIGNhdGVnb3J5OiB0cnVlLFxuICAgICAgICAgIGNyaXRpY2FsaXR5OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgICAgICBhZGRyZXNzOiBmYWxzZSxcbiAgICAgICAgICBzb3VyY2U6IHRydWUsXG4gICAgICAgICAgZXFOYW1lOiBmYWxzZSxcbiAgICAgICAgICBlcUVudGl0eTogdHJ1ZSxcbiAgICAgICAgICBzdGFydERhdGU6IHRydWUsXG4gICAgICAgICAgZW5kRGF0ZTogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ09QRVJBVE9SJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBmYWxzZSxcbiAgICAgICAgICBjYXRlZ29yeTogZmFsc2UsXG4gICAgICAgICAgY3JpdGljYWxpdHk6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBmYWxzZSxcbiAgICAgICAgICBhZGRyZXNzOiBmYWxzZSxcbiAgICAgICAgICBzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgIGVxTmFtZTogZmFsc2UsXG4gICAgICAgICAgZXFFbnRpdHk6IGZhbHNlLFxuICAgICAgICAgIHN0YXJ0RGF0ZTogZmFsc2UsXG4gICAgICAgICAgZW5kRGF0ZTogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlRXF1aXBtZW50KGluZGV4OiBudW1iZXIsICRldmVudDogYW55KSB7XG4gICAgdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLmZpbmRCeU5hbWUoJGV2ZW50LnRhcmdldC52YWx1ZSkuc3Vic2NyaWJlKChlcXVpcG1lbnQ6IEh5cEVxdWlwbWVudCkgPT4ge1xuICAgICAgaWYgKGVxdWlwbWVudCAmJiB0aGlzLl9ldmVudHNbaW5kZXhdLm5hbWUgIT09IGVxdWlwbWVudC5uYW1lKSB7XG5cbiAgICAgICAgaWYgKCF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5lcXVpcG1lbnQgPSBlcXVpcG1lbnQ7XG4gICAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIF9vdXRwdXRNb2RpZmljYXRpb25zKCkge1xuICAgIHRoaXMubW9kaWZpZWRFdmVudHMubmV4dCh0aGlzLl9ldmVudHMubWFwKChldiwgaWR4KSA9PiBbdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaWR4XSwgZXZdKSk7XG4gICAgdGhpcy5tb2RpZmllZFByb2NlZHVyZS5uZXh0KHRoaXMucHJvY2VkdXJlID8gW3RoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucywgdGhpcy5wcm9jZWR1cmUhXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsXCI+XG4gIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9faGVhZGVyX19zcGxpdFwiPlxuICAgICAgPGgxPnt7ICdAaHZ5LmV2ZW50LmxvZy5uYW1lJyB8IGkxOG4gfX08L2gxPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLWZpeC1yaWdodFwiPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5jbG9zZScgfCBpMThuIH19PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2hlYWRlcl9fc3BsaXRcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+e3sgJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5kZWxldGUnIHwgaTE4biB9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2NvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19jb250YWluZXJfX3Njcm9sbGFibGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNcIj5cbiAgICAgICAgQGZvciAoZXZlbnQgb2YgZXZlbnRzO3RyYWNrIGV2ZW50LmlkO2xldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2hlYWRlclwiPlxuICAgICAgICAgICAgICA8cHJ5LWljb24gW2ljb25TdmddPVwiIW9wZW5lZFtpZHhdID8gJ2NoZXZyb25fYm90dG9tJyA6ICdjaGV2cm9uX3RvcCdcIiAoY2xpY2spPVwidG9nZ2xlKGlkeClcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8aHZ5LWljb24tZGlzcGxheSBbZXZlbnRdPVwiZXZlbnRcIj48L2h2eS1pY29uLWRpc3BsYXk+XG4gICAgICAgICAgICAgIDxoMj57eyBldmVudC5uYW1lIH19PC9oMj5cbiAgICAgICAgICAgICAgPGh2eS1zdGF0dXMtZGlzcGxheSBbZXZlbnRdPVwiZXZlbnRcIiBbbW9kaWZpYWJsZV09XCJ0cnVlXCI+PC9odnktc3RhdHVzLWRpc3BsYXk+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxkaXY+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmRlc2NyaXB0aW9uJyB8IGkxOG4gfX06IHt7IGV2ZW50LmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmFkZHJlc3MnIHwgaTE4biB9fToge3sgZXZlbnQuYWRkcmVzcyB9fTwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKG9wZW5lZFtpZHhdKSB7XG4gICAgICAgICAgICAgICAgQGlmIChhY2Nlc3MoZXZlbnQpO2FzIGFjY2Vzc1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICA8aDM+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmRldGFpbCcgfCBpMThuIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDx0YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5uYW1lJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFt2YWx1ZV09XCJldmVudC5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnbmFtZScsICRldmVudClcIiBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUubmFtZVwiPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmNhdGVnb3J5JyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0IFtuZ01vZGVsXT1cImV2ZW50LmNhdGVnb3J5XCIgW2l0ZW1zXT1cImNhdGVnb3JpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnY2F0ZWdvcnknLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAaHZ5LmV2ZW50LmNhdGVnb3J5LlwiIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5jYXRlZ29yeVwiPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNyaXRpY2FsaXR5Lm5hbWUnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3QgW25nTW9kZWxdPVwiZXZlbnQuY3JpdGljYWxpdHlcIiBbaXRlbXNdPVwiY3JpdGljYWxpdGllc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5jcml0aWNhbGl0eS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLmNyaXRpY2FsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2NyaXRpY2FsaXR5JywgJGV2ZW50KVwiPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5kZXNjcmlwdGlvbicgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHRleHRhcmVhIFtuZ01vZGVsXT1cImV2ZW50LmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2Rlc2NyaXB0aW9uJywgJGV2ZW50KVwiPjwvdGV4dGFyZWE+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuYWRkcmVzcycgfCBpMThuIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHRleHRhcmVhIFtuZ01vZGVsXT1cImV2ZW50LmFkZHJlc3NcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdhZGRyZXNzJywgJGV2ZW50KVwiPjwvdGV4dGFyZWE+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKFsnQUxFUlQnLCAnUkVQT1JUJ10uaW5jbHVkZXMoZXZlbnQudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LnNvdXJjZScgfCBpMThuIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgW3ZhbHVlXT1cImV2ZW50LmV4dGVybmFsU291cmNlUmVmID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuc291cmNlXCIgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdzb3VyY2UnLCAkZXZlbnQpXCI+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmVxdWlwbWVudCcgfCBpMThuIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmVxdWlwbWVudD8ubmFtZSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmVxTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VFcXVpcG1lbnQoaWR4LCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5lcXVpcG1lbnRFbnRpdHknIHwgaTE4biB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgW3ZhbHVlXT1cImV2ZW50LmVxdWlwbWVudD8uZW50aXR5ID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5PjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuc3RhcnREYXRlJyB8IGkxOG4gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFt2YWx1ZV09XCJldmVudC5zdGFydERhdGUgfCBmb3JEYXRlVGltZUxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuc3RhcnREYXRlXCIgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdzdGFydERhdGUnLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5lbmREYXRlJyB8IGkxOG4gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFt2YWx1ZV09XCJldmVudC5lbmREYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmVuZERhdGVcIiAoY2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2VuZERhdGUnLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jcmVhdGlvbkRhdGUnIHwgaTE4biB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuY3JlYXRpb25EYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sYXN0TW9kaWZpY2F0aW9uRGF0ZScgfCBpMThuIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJldmVudC5sYXN0TW9kaWZpY2F0aW9uRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIiByZWFkb25seT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNsb3NlRGF0ZScgfCBpMThuIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbdmFsdWVdPVwiZXZlbnQuY2xvc2VEYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9fY29udGVudF9fY29tbWVudHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5jb21tZW50cy5uYW1lJyB8IGkxOG4gfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgW3BsYWNlaG9sZGVyXT1cIignQGh2eS5ldmVudC5sb2cuZXZlbnQuY29tbWVudHMucGxhY2Vob2xkZXInIHwgaTE4bikgKyAnLi4uJ1wiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50X19jb21tZW50c19fYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+e3sgJ0BodnkuYWN0aW9uLnNlbmQnIHwgaTE4biB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZVwiPlxuICAgICAgICBAaWYgKHByb2NlZHVyZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVfX2hlYWRlclwiPlxuICAgICAgICAgICAgPGgyPnt7ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUubmFtZScgfCBpMThuIH19PC9oMj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHA+e3sgcHJvY2VkdXJlLm5hbWUgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZV9fcHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIDxwPnt7ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUucHJvZ3Jlc3MnIHwgaTE4biB9fTwvcD5cbiAgICAgICAgICAgIDxodnktcHJvZ3Jlc3MtZGlzcGxheSBbcHJvZ3Jlc3NdPVwicHJvY2VkdXJlLnByb2dyZXNzXCI+PC9odnktcHJvZ3Jlc3MtZGlzcGxheT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19hY3Rpb25zXCI+XG4gICAgICAgICAgICBAZm9yIChhY3Rpb24gb2YgcHJvY2VkdXJlLmFjdGlvbnM7dHJhY2sgYWN0aW9uLmlkKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVfX2FjdGlvbnNfX2FjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic2l4X2RvdFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgPHByeS1jaGVja2JveCBbbmdNb2RlbF09XCJhY3Rpb24uc3RhdHVzID09PSAnRE9ORSdcIj48L3ByeS1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGFjdGlvbi5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJtb3JlX2hvcml6XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbXB0eSB7XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAge3sgJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5ub0FjdGlvbicgfCBpMThuIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIj5cbiAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJhZGRcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICB7eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLmFkZEFjdGlvbicgfCBpMThuIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL2V2ZW50L2RldGFpbC9ldmVudC1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZXZlbnQvZGV0YWlsL2V2ZW50LWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7OztBQU12RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsd0JBQXdCO0lBWWhFLElBQWEsTUFBTSxDQUFDLE1BQXlCO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFD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cG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh5cFByb2NlZHVyZSB9IGZyb20gJy4uLy4uL21vZGVsL2h5cC1wcm9jZWR1cmUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cEV2ZW50RGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1kZXRhaWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cEV2ZW50Q2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtY2F0ZWdvcnkudHlwZSc7XG5pbXBvcnQgeyBIeXBFdmVudENyaXRpY2FsaXR5IH0gZnJvbSAnLi4vLi4vbW9kZWwvZXZlbnQvaHlwLWV2ZW50LWNyaXRpY2FsaXR5LnR5cGUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEh5cEVxdWlwbWVudCB9IGZyb20gJy4uLy4uL21vZGVsL2h5cC1lcXVpcG1lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVxdWlwbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zdG9yZS9lcXVpcG1lbnQvZXF1aXBtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRE9NQUlOUyB9IGZyb20gJy4uLy4uL21vZGVsL2RvbWFpbnMuY29uc3RhbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdodnktZXZlbnQtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2V2ZW50LWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEV2ZW50RGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgb3BlbmVkOiBib29sZWFuW10gPSBbXTtcbiAgY2F0ZWdvcmllcyA9IEh5cEV2ZW50Q2F0ZWdvcnk7XG4gIGNyaXRpY2FsaXRpZXMgPSBIeXBFdmVudENyaXRpY2FsaXR5O1xuICBfZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSA9IFtdO1xuICBldmVudE1vZGlmaWNhdGlvbnM6IFBhcnRpYWw8SHlwRXZlbnREZXRhaWxzPltdID0gW107XG4gIEBPdXRwdXQoKSBtb2RpZmllZEV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8W1BhcnRpYWw8SHlwRXZlbnREZXRhaWxzPiwgSHlwRXZlbnREZXRhaWxzXVtdPigpO1xuICBfcHJvY2VkdXJlPzogSHlwUHJvY2VkdXJlO1xuICBwcm9jZWR1cmVNb2RpZmljYXRpb25zOiBQYXJ0aWFsPEh5cFByb2NlZHVyZT4gPSB7fTtcbiAgQE91dHB1dCgpIG1vZGlmaWVkUHJvY2VkdXJlID0gbmV3IEV2ZW50RW1pdHRlcjxbUGFydGlhbDxIeXBQcm9jZWR1cmU+LCBIeXBQcm9jZWR1cmVdIHwgdW5kZWZpbmVkPigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRE9NQUlOUyA9IERPTUFJTlMudmFsdWVzO1xuXG4gIEBJbnB1dCgpIHNldCBldmVudHMoZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSkge1xuICAgIHRoaXMuX2V2ZW50cyA9IGV2ZW50cy5maWx0ZXIoZXYgPT4gISFldik7XG4gICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnMgPSBuZXcgQXJyYXkodGhpcy5fZXZlbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5vcGVuZWQgPSBldmVudHMubGVuZ3RoID09PSAxID8gW3RydWVdIDogW107XG4gIH07XG5cbiAgQElucHV0KCkgc2V0IHByb2NlZHVyZShwcm9jZWR1cmU6IEh5cFByb2NlZHVyZSkge1xuICAgIHRoaXMuX3Byb2NlZHVyZSA9IHByb2NlZHVyZTtcbiAgICB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMgPSB7fTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBjYW5jZWxNb2RpZmljYXRpb25zKGV2dDogYW55KSB7XG4gICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnMgPSBuZXcgQXJyYXkodGhpcy5fZXZlbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zID0ge307XG4gICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlcXVpcG1lbnRTZXJ2aWNlOiBFcXVpcG1lbnRTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBldmVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cy5tYXAoKGV2dCwgaWR4KSA9PiAoeyAuLi5ldnQsIC4uLih0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpZHhdID8/IHt9KSB9KSk7XG4gIH1cblxuICBnZXQgcHJvY2VkdXJlKCk6IEh5cFByb2NlZHVyZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb2NlZHVyZSA/ICh7IC4uLnRoaXMuX3Byb2NlZHVyZSwgLi4uKHRoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucyA/PyB7fSksIGV2ZW50czogdGhpcy5ldmVudHMgfSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICB0b2dnbGUoaTogbnVtYmVyKSB7XG4gICAgdGhpcy5vcGVuZWRbaV0gPSAhdGhpcy5vcGVuZWRbaV07XG4gIH1cblxuICBtb2RpZnlFdmVudChpbmRleDogbnVtYmVyLCBwcm9wOiBzdHJpbmcsICRldmVudDogRXZlbnQgfCBzdHJpbmcpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbmV3VmFsdWUgPSAkZXZlbnQgaW5zdGFuY2VvZiBFdmVudCA/ICRldmVudC50YXJnZXQ/LnZhbHVlIDogJGV2ZW50O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGhpcy5fZXZlbnRzW2luZGV4XVtwcm9wXSAhPT0gbmV3VmFsdWUpIHtcblxuICAgICAgaWYgKCF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdID0ge307XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF1bcHJvcF0gPSBuZXdWYWx1ZTtcblxuICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIGFjY2VzcyhldmVudDogSHlwRXZlbnREZXRhaWxzKSB7XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdBTEVSVCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IHRydWUsXG4gICAgICAgICAgY2F0ZWdvcnk6IHRydWUsXG4gICAgICAgICAgY3JpdGljYWxpdHk6IHRydWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRydWUsXG4gICAgICAgICAgYWRkcmVzczogdHJ1ZSxcbiAgICAgICAgICBzb3VyY2U6IHRydWUsXG4gICAgICAgICAgZXFOYW1lOiB0cnVlLFxuICAgICAgICAgIGVxRW50aXR5OiB0cnVlLFxuICAgICAgICAgIHN0YXJ0RGF0ZTogdHJ1ZSxcbiAgICAgICAgICBlbmREYXRlOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnUkVQT1JUJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBmYWxzZSxcbiAgICAgICAgICBjYXRlZ29yeTogdHJ1ZSxcbiAgICAgICAgICBjcml0aWNhbGl0eTogZmFsc2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRydWUsXG4gICAgICAgICAgYWRkcmVzczogZmFsc2UsXG4gICAgICAgICAgc291cmNlOiB0cnVlLFxuICAgICAgICAgIGVxTmFtZTogZmFsc2UsXG4gICAgICAgICAgZXFFbnRpdHk6IHRydWUsXG4gICAgICAgICAgc3RhcnREYXRlOiB0cnVlLFxuICAgICAgICAgIGVuZERhdGU6IHRydWUsXG4gICAgICAgIH07XG4gICAgICBjYXNlICdPUEVSQVRPUic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogZmFsc2UsXG4gICAgICAgICAgY2F0ZWdvcnk6IGZhbHNlLFxuICAgICAgICAgIGNyaXRpY2FsaXR5OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZmFsc2UsXG4gICAgICAgICAgYWRkcmVzczogZmFsc2UsXG4gICAgICAgICAgc291cmNlOiBmYWxzZSxcbiAgICAgICAgICBlcU5hbWU6IGZhbHNlLFxuICAgICAgICAgIGVxRW50aXR5OiBmYWxzZSxcbiAgICAgICAgICBzdGFydERhdGU6IGZhbHNlLFxuICAgICAgICAgIGVuZERhdGU6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUVxdWlwbWVudChpbmRleDogbnVtYmVyLCAkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZXF1aXBtZW50U2VydmljZS5maW5kQnlOYW1lKCRldmVudC50YXJnZXQudmFsdWUpLnN1YnNjcmliZSgoZXF1aXBtZW50OiBIeXBFcXVpcG1lbnQpID0+IHtcbiAgICAgIGlmIChlcXVpcG1lbnQgJiYgdGhpcy5fZXZlbnRzW2luZGV4XS5uYW1lICE9PSBlcXVpcG1lbnQubmFtZSkge1xuXG4gICAgICAgIGlmICghdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdID0ge307XG4gICAgICAgIH1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uZXF1aXBtZW50ID0gZXF1aXBtZW50O1xuICAgICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBfb3V0cHV0TW9kaWZpY2F0aW9ucygpIHtcbiAgICB0aGlzLm1vZGlmaWVkRXZlbnRzLm5leHQodGhpcy5fZXZlbnRzLm1hcCgoZXYsIGlkeCkgPT4gW3RoaXMuZXZlbnRNb2RpZmljYXRpb25zW2lkeF0sIGV2XSkpO1xuICAgIHRoaXMubW9kaWZpZWRQcm9jZWR1cmUubmV4dCh0aGlzLnByb2NlZHVyZSA/IFt0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMsIHRoaXMucHJvY2VkdXJlIV0gOiB1bmRlZmluZWQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbFwiPlxuICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2hlYWRlcl9fc3BsaXRcIj5cbiAgICAgIDxoMT57eyAnQGh2eS5ldmVudC5sb2cubmFtZScgfCBpMThuIH19PC9oMT5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IC1maXgtcmlnaHRcIj57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY2xvc2UnIHwgaTE4biB9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19oZWFkZXJfX3NwbGl0XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiPnt7ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUuZGVsZXRlJyB8IGkxOG4gfX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fY29udGFpbmVyX19zY3JvbGxhYmxlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzXCI+XG4gICAgICAgIEBmb3IgKGV2ZW50IG9mIGV2ZW50czt0cmFjayBldmVudC5pZDtsZXQgaWR4ID0gJGluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHByeS1pY29uIFtpY29uU3ZnXT1cIiFvcGVuZWRbaWR4XSA/ICdjaGV2cm9uX2JvdHRvbScgOiAnY2hldnJvbl90b3AnXCIgKGNsaWNrKT1cInRvZ2dsZShpZHgpXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPGh2eS1pY29uLWRpc3BsYXkgW2V2ZW50XT1cImV2ZW50XCI+PC9odnktaWNvbi1kaXNwbGF5PlxuICAgICAgICAgICAgICA8aDI+e3sgZXZlbnQubmFtZSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxodnktc3RhdHVzLWRpc3BsYXkgW2V2ZW50XT1cImV2ZW50XCIgW21vZGlmaWFibGVdPVwidHJ1ZVwiPjwvaHZ5LXN0YXR1cy1kaXNwbGF5PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9fY29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2Pnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5kZXNjcmlwdGlvbicgfCBpMThuIH19OiB7eyBldmVudC5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2Pnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5hZGRyZXNzJyB8IGkxOG4gfX06IHt7IGV2ZW50LmFkZHJlc3MgfX08L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChvcGVuZWRbaWR4XSkge1xuICAgICAgICAgICAgICAgIEBpZiAoYWNjZXNzKGV2ZW50KTthcyBhY2Nlc3NWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgPGgzPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5kZXRhaWwnIHwgaTE4biB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICA8dGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbdmFsdWVdPVwiZXZlbnQubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ25hbWUnLCAkZXZlbnQpXCIgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLm5hbWVcIj48L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5jYXRlZ29yeScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdCBbbmdNb2RlbF09XCJldmVudC5jYXRlZ29yeVwiIFtpdGVtc109XCJjYXRlZ29yaWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5jYXRlZ29yeS5cIiBbZGlzYWJsZWRdPVwiYWNjZXNzVmFsdWUuY2F0ZWdvcnlcIj48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jcml0aWNhbGl0eS5uYW1lJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0IFtuZ01vZGVsXT1cImV2ZW50LmNyaXRpY2FsaXR5XCIgW2l0ZW1zXT1cImNyaXRpY2FsaXRpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuY3JpdGljYWxpdHkuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5jcml0aWNhbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdjcml0aWNhbGl0eScsICRldmVudClcIj48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuZGVzY3JpcHRpb24nIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPjx0ZXh0YXJlYSBbbmdNb2RlbF09XCJldmVudC5kZXNjcmlwdGlvblwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdkZXNjcmlwdGlvbicsICRldmVudClcIj48L3RleHRhcmVhPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmFkZHJlc3MnIHwgaTE4biB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPjx0ZXh0YXJlYSBbbmdNb2RlbF09XCJldmVudC5hZGRyZXNzXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnYWRkcmVzcycsICRldmVudClcIj48L3RleHRhcmVhPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChbJ0FMRVJUJywgJ1JFUE9SVCddLmluY2x1ZGVzKGV2ZW50LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5zb3VyY2UnIHwgaTE4biB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFt2YWx1ZV09XCJldmVudC5leHRlcm5hbFNvdXJjZVJlZiA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLnNvdXJjZVwiIChjaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnc291cmNlJywgJGV2ZW50KVwiPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5lcXVpcG1lbnQnIHwgaTE4biB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJldmVudC5lcXVpcG1lbnQ/Lm5hbWUgPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5lcU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlRXF1aXBtZW50KGlkeCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZXF1aXBtZW50RW50aXR5JyB8IGkxOG4gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFt2YWx1ZV09XCJldmVudC5lcXVpcG1lbnQ/LmVudGl0eSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seT48L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmRvbWFpbi5uYW1lJyB8IGkxOG4gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0IFtpdGVtc109XCJET01BSU5TXCIgW25nTW9kZWxdPVwiZXZlbnQuZG9tYWluXCIgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuZG9tYWluLlwiPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LnN0YXJ0RGF0ZScgfCBpMThuIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbdmFsdWVdPVwiZXZlbnQuc3RhcnREYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLnN0YXJ0RGF0ZVwiIChjaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnc3RhcnREYXRlJywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZW5kRGF0ZScgfCBpMThuIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbdmFsdWVdPVwiZXZlbnQuZW5kRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5lbmREYXRlXCIgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdlbmREYXRlJywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuY3JlYXRpb25EYXRlJyB8IGkxOG4gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmNyZWF0aW9uRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubGFzdE1vZGlmaWNhdGlvbkRhdGUnIHwgaTE4biB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQubGFzdE1vZGlmaWNhdGlvbkRhdGUgfCBmb3JEYXRlVGltZUxvY2FsXCIgcmVhZG9ubHk+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jbG9zZURhdGUnIHwgaTE4biB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgW3ZhbHVlXT1cImV2ZW50LmNsb3NlRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2NvbnRlbnRfX2NvbW1lbnRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY29tbWVudHMubmFtZScgfCBpMThuIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIFtwbGFjZWhvbGRlcl09XCIoJ0BodnkuZXZlbnQubG9nLmV2ZW50LmNvbW1lbnRzLnBsYWNlaG9sZGVyJyB8IGkxOG4pICsgJy4uLidcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9fY29udGVudF9fY29tbWVudHNfX2J1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiPnt7ICdAaHZ5LmFjdGlvbi5zZW5kJyB8IGkxOG4gfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVcIj5cbiAgICAgICAgQGlmIChwcm9jZWR1cmUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19oZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMj57eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLm5hbWUnIHwgaTE4biB9fTwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwPnt7IHByb2NlZHVyZS5uYW1lIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVfX3Byb2dyZXNzXCI+XG4gICAgICAgICAgICA8cD57eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLnByb2dyZXNzJyB8IGkxOG4gfX08L3A+XG4gICAgICAgICAgICA8aHZ5LXByb2dyZXNzLWRpc3BsYXkgW3Byb2dyZXNzXT1cInByb2NlZHVyZS5wcm9ncmVzc1wiPjwvaHZ5LXByb2dyZXNzLWRpc3BsYXk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZV9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIHByb2NlZHVyZS5hY3Rpb25zO3RyYWNrIGFjdGlvbi5pZCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19hY3Rpb25zX19hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNpeF9kb3RcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggW25nTW9kZWxdPVwiYWN0aW9uLnN0YXR1cyA9PT0gJ0RPTkUnXCI+PC9wcnktY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPGRpdj57eyBhY3Rpb24ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwibW9yZV9ob3JpelwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZW1wdHkge1xuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIHt7ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUubm9BY3Rpb24nIHwgaTE4biB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYWRkXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAge3sgJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5hZGRBY3Rpb24nIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -19,6 +19,9 @@ export const enTranslations = {
19
19
  source: 'External reference',
20
20
  equipment: 'Equipment reference',
21
21
  equipmentEntity: 'Equipment entity',
22
+ domain: {
23
+ name: 'Métier'
24
+ },
22
25
  startDate: 'Start date',
23
26
  endDate: 'End date',
24
27
  creationDate: 'Creation date',
@@ -78,4 +81,4 @@ export const enTranslations = {
78
81
  },
79
82
  },
80
83
  };
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4udHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZ2VuZXJhbC9pMThuL2VuLnRyYW5zbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFO1lBQ0wsV0FBVyxFQUFFLGFBQWE7WUFDMUIsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPO2dCQUNkLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixRQUFRLEVBQUUsVUFBVTthQUNyQjtZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxHQUFHLEVBQUUsTUFBTTtnQkFDWCxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNELE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE1BQU0sRUFBRSxvQkFBb0I7WUFDNUIsU0FBUyxFQUFFLHFCQUFxQjtZQUNoQyxlQUFlLEVBQUUsa0JBQWtCO1lBQ25DLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLE9BQU8sRUFBRSxVQUFVO1lBQ25CLFlBQVksRUFBRSxlQUFlO1lBQzdCLG9CQUFvQixFQUFFLG1CQUFtQjtZQUN6QyxTQUFTLEVBQUUsWUFBWTtZQUN2QixHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRTtvQkFDTCxXQUFXLEVBQUUsYUFBYTtvQkFDMUIsT0FBTyxFQUFFLFNBQVM7b0JBQ2xCLE1BQU0sRUFBRSxhQUFhO29CQUNyQixJQUFJLEVBQUUsTUFBTTtvQkFDWixRQUFRLEVBQUUsVUFBVTtvQkFDcEIsUUFBUSxFQUFFO3dCQUNSLElBQUksRUFBRSxnQkFBZ0I7d0JBQ3RCLFdBQVcsRUFBRSxvQkFBb0I7cUJBQ2xDO2lCQUNGO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxNQUFNLEVBQUUsa0JBQWtCO29CQUMxQixRQUFRLEVBQUUsVUFBVTtvQkFDcEIsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLFNBQVMsRUFBRSxZQUFZO2lCQUN4QjthQUNGO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLE1BQU0sRUFBRSxZQUFZO2dCQUNwQixjQUFjLEVBQUUsZ0JBQWdCO2dCQUNoQyxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsYUFBYSxFQUFFLGVBQWU7YUFDL0I7U0FDRjtRQUNELFlBQVksRUFBRTtZQUNaLFNBQVMsRUFBRSxpQ0FBaUM7WUFDNUMsWUFBWSxFQUFFO2dCQUNaLEdBQUcsRUFBRSxNQUFNO2dCQUNYLFdBQVcsRUFBRSxhQUFhO2dCQUMxQixJQUFJLEVBQUUsTUFBTTthQUNiO1lBQ0QsaUJBQWlCLEVBQUU7Z0JBQ2pCLEdBQUcsRUFBRSxLQUFLO2dCQUNWLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixJQUFJLEVBQUUsTUFBTTtnQkFDWixHQUFHLEVBQUUsS0FBSzthQUNYO1NBQ0Y7UUFDRCxTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsV0FBVztZQUNqQixRQUFRLEVBQUUsc0JBQXNCO1NBQ2pDO1FBQ0QsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFLFNBQVM7WUFDbEIsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsTUFBTTtTQUNiO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGVuVHJhbnNsYXRpb25zID0ge1xuICAnQGh2eSc6IHtcbiAgICBldmVudDoge1xuICAgICAgY3JpdGljYWxpdHk6ICdDcml0aWNhbGl0eScsXG4gICAgICBuYW1lOiAnRXZlbnQnLFxuICAgICAgdHlwZToge1xuICAgICAgICBuYW1lOiAnRXZlbnQgdHlwZScsXG4gICAgICAgIEFMRVJUOiAnQWxlcnQnLFxuICAgICAgICBSRVBPUlQ6ICdSZXBvcnQnLFxuICAgICAgICBPUEVSQVRPUjogJ09wZXJhdG9yJyxcbiAgICAgIH0sXG4gICAgICBzdGF0dXM6IHtcbiAgICAgICAgbmFtZTogJ1N0YXR1cycsXG4gICAgICAgIE5FVzogJ09wZW4nLFxuICAgICAgICBJTl9QUk9HUkVTUzogJ0luIHByb2dyZXNzJyxcbiAgICAgICAgRE9ORTogJ0RvbmUnLFxuICAgICAgfSxcbiAgICAgIGFkZHJlc3M6ICdBZGRyZXNzJyxcbiAgICAgIHNvdXJjZTogJ0V4dGVybmFsIHJlZmVyZW5jZScsXG4gICAgICBlcXVpcG1lbnQ6ICdFcXVpcG1lbnQgcmVmZXJlbmNlJyxcbiAgICAgIGVxdWlwbWVudEVudGl0eTogJ0VxdWlwbWVudCBlbnRpdHknLFxuICAgICAgc3RhcnREYXRlOiAnU3RhcnQgZGF0ZScsXG4gICAgICBlbmREYXRlOiAnRW5kIGRhdGUnLFxuICAgICAgY3JlYXRpb25EYXRlOiAnQ3JlYXRpb24gZGF0ZScsXG4gICAgICBsYXN0TW9kaWZpY2F0aW9uRGF0ZTogJ01vZGlmaWNhdGlvbiBkYXRlJyxcbiAgICAgIGNsb3NlRGF0ZTogJ0Nsb3NlIGRhdGUnLFxuICAgICAgbG9nOiB7XG4gICAgICAgIG5hbWU6ICdFdmVudHMgbG9nJyxcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICBhZGRyZXNzOiAnQWRkcmVzcycsXG4gICAgICAgICAgZGV0YWlsOiAnSW5mb3JtYXRpb24nLFxuICAgICAgICAgIG5hbWU6ICdOYW1lJyxcbiAgICAgICAgICBjYXRlZ29yeTogJ0NhdGVnb3J5JyxcbiAgICAgICAgICBjb21tZW50czoge1xuICAgICAgICAgICAgbmFtZTogJ0V2ZW50IGNvbW1lbnRzJyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnV3JpdGUgeW91ciBjb21tZW50JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwcm9jZWR1cmU6IHtcbiAgICAgICAgICBkZWxldGU6ICdEZWxldGUgcHJvY2VkdXJlJyxcbiAgICAgICAgICBwcm9ncmVzczogJ1Byb2dyZXNzJyxcbiAgICAgICAgICBub0FjdGlvbjogJ05vIGFjdGlvbnMnLFxuICAgICAgICAgIG5hbWU6ICdDb21tb24gcHJvY2VkdXJlJyxcbiAgICAgICAgICBhZGRBY3Rpb246ICdBZGQgYWN0aW9uJ1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNhdGVnb3J5OiB7XG4gICAgICAgIEFMRVJUOiAnRHlzZnVuY3Rpb24gYWxlcnQnLFxuICAgICAgICBSRVBPUlQ6ICdHUkMgcmVwb3J0JyxcbiAgICAgICAgT1BFUkFUT1JfRVZFTlQ6ICdPcGVyYXRvciBldmVudCcsXG4gICAgICAgIEFMRVJUX0xJTUlUOiAnTGltaXQgYWxlcnQnLFxuICAgICAgICBNQU5JRkVTVEFUSU9OOiAnTWFuaWZlc3RhdGlvbicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZXZlbnRTdW1tYXJ5OiB7XG4gICAgICBub0NvbnRlbnQ6ICdObyBldmVudCB3aXRoIGdpdmVuIGNyaXRpY2FsaXR5JyxcbiAgICAgIHN0YXR1c0xhYmVsczoge1xuICAgICAgICBORVc6ICdPcGVuJyxcbiAgICAgICAgSU5fUFJPR1JFU1M6ICdJbiBwcm9ncmVzcycsXG4gICAgICAgIERPTkU6ICdEb25lJyxcbiAgICAgIH0sXG4gICAgICBjcml0aWNhbGl0eUxhYmVsczoge1xuICAgICAgICBMT1c6ICdMb3cnLFxuICAgICAgICBNRURJVU06ICdNZWRpdW0nLFxuICAgICAgICBISUdIOiAnSGlnaCcsXG4gICAgICAgIEFMTDogJ0FsbCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcHJvY2VkdXJlOiB7XG4gICAgICBuYW1lOiAnUHJvY2VkdXJlJyxcbiAgICAgIHByb2dyZXNzOiAnUHJvY2VkdXJlIHByb2dyZXNzICUnLFxuICAgIH0sXG4gICAgYWN0aW9uOiB7XG4gICAgICBjb25zdWx0OiAnQ29uc3VsdCcsXG4gICAgICBjbG9zZTogJ0Nsb3NlJyxcbiAgICAgIHNlbmQ6ICdTZW5kJyxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4udHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZ2VuZXJhbC9pMThuL2VuLnRyYW5zbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFO1lBQ0wsV0FBVyxFQUFFLGFBQWE7WUFDMUIsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPO2dCQUNkLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixRQUFRLEVBQUUsVUFBVTthQUNyQjtZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxHQUFHLEVBQUUsTUFBTTtnQkFDWCxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNELE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE1BQU0sRUFBRSxvQkFBb0I7WUFDNUIsU0FBUyxFQUFFLHFCQUFxQjtZQUNoQyxlQUFlLEVBQUUsa0JBQWtCO1lBQ25DLE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTthQUNmO1lBQ0QsU0FBUyxFQUFFLFlBQVk7WUFDdkIsT0FBTyxFQUFFLFVBQVU7WUFDbkIsWUFBWSxFQUFFLGVBQWU7WUFDN0Isb0JBQW9CLEVBQUUsbUJBQW1CO1lBQ3pDLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLEdBQUcsRUFBRTtnQkFDSCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsS0FBSyxFQUFFO29CQUNMLFdBQVcsRUFBRSxhQUFhO29CQUMxQixPQUFPLEVBQUUsU0FBUztvQkFDbEIsTUFBTSxFQUFFLGFBQWE7b0JBQ3JCLElBQUksRUFBRSxNQUFNO29CQUNaLFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUU7d0JBQ1IsSUFBSSxFQUFFLGdCQUFnQjt3QkFDdEIsV0FBVyxFQUFFLG9CQUFvQjtxQkFDbEM7aUJBQ0Y7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULE1BQU0sRUFBRSxrQkFBa0I7b0JBQzFCLFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsU0FBUyxFQUFFLFlBQVk7aUJBQ3hCO2FBQ0Y7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLG1CQUFtQjtnQkFDMUIsTUFBTSxFQUFFLFlBQVk7Z0JBQ3BCLGNBQWMsRUFBRSxnQkFBZ0I7Z0JBQ2hDLFdBQVcsRUFBRSxhQUFhO2dCQUMxQixhQUFhLEVBQUUsZUFBZTthQUMvQjtTQUNGO1FBQ0QsWUFBWSxFQUFFO1lBQ1osU0FBUyxFQUFFLGlDQUFpQztZQUM1QyxZQUFZLEVBQUU7Z0JBQ1osR0FBRyxFQUFFLE1BQU07Z0JBQ1gsV0FBVyxFQUFFLGFBQWE7Z0JBQzFCLElBQUksRUFBRSxNQUFNO2FBQ2I7WUFDRCxpQkFBaUIsRUFBRTtnQkFDakIsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLElBQUksRUFBRSxNQUFNO2dCQUNaLEdBQUcsRUFBRSxLQUFLO2FBQ1g7U0FDRjtRQUNELFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxXQUFXO1lBQ2pCLFFBQVEsRUFBRSxzQkFBc0I7U0FDakM7UUFDRCxNQUFNLEVBQUU7WUFDTixPQUFPLEVBQUUsU0FBUztZQUNsQixLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxNQUFNO1NBQ2I7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW5UcmFuc2xhdGlvbnMgPSB7XG4gICdAaHZ5Jzoge1xuICAgIGV2ZW50OiB7XG4gICAgICBjcml0aWNhbGl0eTogJ0NyaXRpY2FsaXR5JyxcbiAgICAgIG5hbWU6ICdFdmVudCcsXG4gICAgICB0eXBlOiB7XG4gICAgICAgIG5hbWU6ICdFdmVudCB0eXBlJyxcbiAgICAgICAgQUxFUlQ6ICdBbGVydCcsXG4gICAgICAgIFJFUE9SVDogJ1JlcG9ydCcsXG4gICAgICAgIE9QRVJBVE9SOiAnT3BlcmF0b3InLFxuICAgICAgfSxcbiAgICAgIHN0YXR1czoge1xuICAgICAgICBuYW1lOiAnU3RhdHVzJyxcbiAgICAgICAgTkVXOiAnT3BlbicsXG4gICAgICAgIElOX1BST0dSRVNTOiAnSW4gcHJvZ3Jlc3MnLFxuICAgICAgICBET05FOiAnRG9uZScsXG4gICAgICB9LFxuICAgICAgYWRkcmVzczogJ0FkZHJlc3MnLFxuICAgICAgc291cmNlOiAnRXh0ZXJuYWwgcmVmZXJlbmNlJyxcbiAgICAgIGVxdWlwbWVudDogJ0VxdWlwbWVudCByZWZlcmVuY2UnLFxuICAgICAgZXF1aXBtZW50RW50aXR5OiAnRXF1aXBtZW50IGVudGl0eScsXG4gICAgICBkb21haW46IHtcbiAgICAgICAgbmFtZTogJ03DqXRpZXInXG4gICAgICB9LFxuICAgICAgc3RhcnREYXRlOiAnU3RhcnQgZGF0ZScsXG4gICAgICBlbmREYXRlOiAnRW5kIGRhdGUnLFxuICAgICAgY3JlYXRpb25EYXRlOiAnQ3JlYXRpb24gZGF0ZScsXG4gICAgICBsYXN0TW9kaWZpY2F0aW9uRGF0ZTogJ01vZGlmaWNhdGlvbiBkYXRlJyxcbiAgICAgIGNsb3NlRGF0ZTogJ0Nsb3NlIGRhdGUnLFxuICAgICAgbG9nOiB7XG4gICAgICAgIG5hbWU6ICdFdmVudHMgbG9nJyxcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICBhZGRyZXNzOiAnQWRkcmVzcycsXG4gICAgICAgICAgZGV0YWlsOiAnSW5mb3JtYXRpb24nLFxuICAgICAgICAgIG5hbWU6ICdOYW1lJyxcbiAgICAgICAgICBjYXRlZ29yeTogJ0NhdGVnb3J5JyxcbiAgICAgICAgICBjb21tZW50czoge1xuICAgICAgICAgICAgbmFtZTogJ0V2ZW50IGNvbW1lbnRzJyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnV3JpdGUgeW91ciBjb21tZW50JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwcm9jZWR1cmU6IHtcbiAgICAgICAgICBkZWxldGU6ICdEZWxldGUgcHJvY2VkdXJlJyxcbiAgICAgICAgICBwcm9ncmVzczogJ1Byb2dyZXNzJyxcbiAgICAgICAgICBub0FjdGlvbjogJ05vIGFjdGlvbnMnLFxuICAgICAgICAgIG5hbWU6ICdDb21tb24gcHJvY2VkdXJlJyxcbiAgICAgICAgICBhZGRBY3Rpb246ICdBZGQgYWN0aW9uJ1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNhdGVnb3J5OiB7XG4gICAgICAgIEFMRVJUOiAnRHlzZnVuY3Rpb24gYWxlcnQnLFxuICAgICAgICBSRVBPUlQ6ICdHUkMgcmVwb3J0JyxcbiAgICAgICAgT1BFUkFUT1JfRVZFTlQ6ICdPcGVyYXRvciBldmVudCcsXG4gICAgICAgIEFMRVJUX0xJTUlUOiAnTGltaXQgYWxlcnQnLFxuICAgICAgICBNQU5JRkVTVEFUSU9OOiAnTWFuaWZlc3RhdGlvbicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZXZlbnRTdW1tYXJ5OiB7XG4gICAgICBub0NvbnRlbnQ6ICdObyBldmVudCB3aXRoIGdpdmVuIGNyaXRpY2FsaXR5JyxcbiAgICAgIHN0YXR1c0xhYmVsczoge1xuICAgICAgICBORVc6ICdPcGVuJyxcbiAgICAgICAgSU5fUFJPR1JFU1M6ICdJbiBwcm9ncmVzcycsXG4gICAgICAgIERPTkU6ICdEb25lJyxcbiAgICAgIH0sXG4gICAgICBjcml0aWNhbGl0eUxhYmVsczoge1xuICAgICAgICBMT1c6ICdMb3cnLFxuICAgICAgICBNRURJVU06ICdNZWRpdW0nLFxuICAgICAgICBISUdIOiAnSGlnaCcsXG4gICAgICAgIEFMTDogJ0FsbCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcHJvY2VkdXJlOiB7XG4gICAgICBuYW1lOiAnUHJvY2VkdXJlJyxcbiAgICAgIHByb2dyZXNzOiAnUHJvY2VkdXJlIHByb2dyZXNzICUnLFxuICAgIH0sXG4gICAgYWN0aW9uOiB7XG4gICAgICBjb25zdWx0OiAnQ29uc3VsdCcsXG4gICAgICBjbG9zZTogJ0Nsb3NlJyxcbiAgICAgIHNlbmQ6ICdTZW5kJyxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==
@@ -18,6 +18,9 @@ export const frTranslations = {
18
18
  source: 'Référence externe',
19
19
  equipment: 'Référence matériel',
20
20
  equipmentEntity: 'Entité de l\'équipement',
21
+ domain: {
22
+ name: 'Métier'
23
+ },
21
24
  startDate: 'Date de début',
22
25
  endDate: 'Date de fin',
23
26
  creationDate: 'Date de création',
@@ -85,4 +88,4 @@ export const frTranslations = {
85
88
  },
86
89
  },
87
90
  };
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnIudHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZ2VuZXJhbC9pMThuL2ZyLnRyYW5zbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLEtBQUssRUFBRSxRQUFRO2dCQUNmLE1BQU0sRUFBRSxhQUFhO2dCQUNyQixRQUFRLEVBQUUsV0FBVzthQUN0QjtZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixHQUFHLEVBQUUsU0FBUztnQkFDZCxXQUFXLEVBQUUsVUFBVTtnQkFDdkIsSUFBSSxFQUFFLFNBQVM7YUFDaEI7WUFDRCxPQUFPLEVBQUUsU0FBUztZQUNsQixNQUFNLEVBQUUsbUJBQW1CO1lBQzNCLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsZUFBZSxFQUFFLHlCQUF5QjtZQUMxQyxTQUFTLEVBQUUsZUFBZTtZQUMxQixPQUFPLEVBQUUsYUFBYTtZQUN0QixZQUFZLEVBQUUsa0JBQWtCO1lBQ2hDLG9CQUFvQixFQUFFLDhCQUE4QjtZQUNwRCxTQUFTLEVBQUUsaUJBQWlCO1lBQzVCLEdBQUcsRUFBRTtnQkFDSCxJQUFJLEVBQUUsd0JBQXdCO2dCQUM5QixLQUFLLEVBQUU7b0JBQ0wsV0FBVyxFQUFFLGFBQWE7b0JBQzFCLE9BQU8sRUFBRSxTQUFTO29CQUNsQixNQUFNLEVBQUUsY0FBYztvQkFDdEIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLEtBQUssRUFBRSw4QkFBOEI7b0JBQ3JDLFFBQVEsRUFBRTt3QkFDUixJQUFJLEVBQUUsOEJBQThCO3dCQUNwQyxXQUFXLEVBQUUsMkJBQTJCO3FCQUN6QztpQkFDRjtnQkFDRCxTQUFTLEVBQUU7b0JBQ1QsTUFBTSxFQUFFLHdCQUF3QjtvQkFDaEMsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUUsbUJBQW1CO29CQUN6QixTQUFTLEVBQUUsb0JBQW9CO2lCQUNoQzthQUNGO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLGlCQUFpQixFQUFFLDBCQUEwQjtnQkFDN0MsTUFBTSxFQUFFLGlCQUFpQjtnQkFDekIsY0FBYyxFQUFFLHFCQUFxQjtnQkFDckMsV0FBVyxFQUFFLGNBQWM7Z0JBQzNCLGFBQWEsRUFBRSxlQUFlO2FBQy9CO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLElBQUksRUFBRSxXQUFXO2dCQUNqQixHQUFHLEVBQUUsS0FBSztnQkFDVixNQUFNLEVBQUUsT0FBTztnQkFDZixJQUFJLEVBQUUsTUFBTTthQUNiO1NBQ0Y7UUFDRCxZQUFZLEVBQUU7WUFDWixTQUFTLEVBQUUsMENBQTBDO1lBQ3JELFlBQVksRUFBRTtnQkFDWixHQUFHLEVBQUUsVUFBVTtnQkFDZixXQUFXLEVBQUUsVUFBVTtnQkFDdkIsSUFBSSxFQUFFLFVBQVU7YUFDakI7WUFDRCxpQkFBaUIsRUFBRTtnQkFDakIsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsSUFBSSxFQUFFLE1BQU07Z0JBQ1osR0FBRyxFQUFFLE1BQU07YUFDWjtTQUNGO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLFdBQVc7WUFDakIsUUFBUSxFQUFFLHdCQUF3QjtTQUNuQztRQUNELE1BQU0sRUFBRTtZQUNOLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLElBQUksRUFBRSxTQUFTO1NBQ2hCO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGZyVHJhbnNsYXRpb25zID0ge1xuICAnQGh2eSc6IHtcbiAgICBldmVudDoge1xuICAgICAgbmFtZTogJ8OJdsOobmVtZW50JyxcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgbmFtZTogJ1R5cGUgZFxcJ8OpdsOobmVtZW50JyxcbiAgICAgICAgQUxFUlQ6ICdBbGVydGUnLFxuICAgICAgICBSRVBPUlQ6ICdTaWduYWxlbWVudCcsXG4gICAgICAgIE9QRVJBVE9SOiAnT3DDqXJhdGV1cicsXG4gICAgICB9LFxuICAgICAgc3RhdHVzOiB7XG4gICAgICAgIG5hbWU6ICdTdGF0dXQgw6l2w6huZW1lbnQnLFxuICAgICAgICBORVc6ICdOb3V2ZWF1JyxcbiAgICAgICAgSU5fUFJPR1JFU1M6ICdFbiBjb3VycycsXG4gICAgICAgIERPTkU6ICdDbMO0dHVyw6knLFxuICAgICAgfSxcbiAgICAgIGFkZHJlc3M6ICdBZHJlc3NlJyxcbiAgICAgIHNvdXJjZTogJ1LDqWbDqXJlbmNlIGV4dGVybmUnLFxuICAgICAgZXF1aXBtZW50OiAnUsOpZsOpcmVuY2UgbWF0w6lyaWVsJyxcbiAgICAgIGVxdWlwbWVudEVudGl0eTogJ0VudGl0w6kgZGUgbFxcJ8OpcXVpcGVtZW50JyxcbiAgICAgIHN0YXJ0RGF0ZTogJ0RhdGUgZGUgZMOpYnV0JyxcbiAgICAgIGVuZERhdGU6ICdEYXRlIGRlIGZpbicsXG4gICAgICBjcmVhdGlvbkRhdGU6ICdEYXRlIGRlIGNyw6lhdGlvbicsXG4gICAgICBsYXN0TW9kaWZpY2F0aW9uRGF0ZTogJ0RhdGUgZGVybmnDqHJlcyBtb2RpZmljYXRpb25zJyxcbiAgICAgIGNsb3NlRGF0ZTogJ0RhdGUgZGUgY2xvdMO7cmUnLFxuICAgICAgbG9nOiB7XG4gICAgICAgIG5hbWU6ICdKb3VybmFsIGRlcyDDqXbDqG5lbWVudHMnLFxuICAgICAgICBldmVudDoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgICAgICAgIGFkZHJlc3M6ICdBZHJlc3NlJyxcbiAgICAgICAgICBkZXRhaWw6ICdJbmZvcm1hdGlvbnMnLFxuICAgICAgICAgIG5hbWU6ICdOb20nLFxuICAgICAgICAgIGNhdGVnb3J5OiAnQ2F0w6lnb3JpZScsXG4gICAgICAgICAgY2xvc2U6ICdDbMO0dHVyZXIgdG91cyBjZXMgw6l2w6huZW1lbnRzJyxcbiAgICAgICAgICBjb21tZW50czoge1xuICAgICAgICAgICAgbmFtZTogJ0NvbW1lbnRhaXJlcyBkZSBsXFwnw6l2w6huZW1lbnQnLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICfDiWNyaXZleiB2b3RyZSBjb21tZW50YWlyZSdcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByb2NlZHVyZToge1xuICAgICAgICAgIGRlbGV0ZTogJ1N1cHByaW1lciBsYSBwcm9jw6lkdXJlJyxcbiAgICAgICAgICBwcm9ncmVzczogJ1Byb2dyZXNzaW9uJyxcbiAgICAgICAgICBub0FjdGlvbjogJ1BhcyBkXFwnYWN0aW9uJyxcbiAgICAgICAgICBuYW1lOiAnUHJvY8OpZHVyZSBjb21tdW5lJyxcbiAgICAgICAgICBhZGRBY3Rpb246ICdBam91dGVyIHVuZSBhY3Rpb24nXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgbmFtZTogXCJDYXTDqWdvcmllIGQnw6l2w6huZW1lbnRcIixcbiAgICAgICAgQUxFUlRfTUFMRlVOQ1RJT046ICdBbGVydGUgRHlzZm9uY3Rpb25uZW1lbnQnLFxuICAgICAgICBSRVBPUlQ6ICdTaWduYWxlbWVudCBHUkMnLFxuICAgICAgICBPUEVSQVRPUl9FVkVOVDogJ0V2w6huZW1lbnQgT3DDqXJhdGV1cicsXG4gICAgICAgIEFMRVJUX0xJTUlUOiAnQWxlcnRlIFNldWlsJyxcbiAgICAgICAgTUFOSUZFU1RBVElPTjogJ01hbmlmZXN0YXRpb24nLFxuICAgICAgfSxcbiAgICAgIGNyaXRpY2FsaXR5OiB7XG4gICAgICAgIG5hbWU6ICdDcml0aWNpdMOpJyxcbiAgICAgICAgTE9XOiAnQmFzJyxcbiAgICAgICAgTUVESVVNOiAnTW95ZW4nLFxuICAgICAgICBISUdIOiAnSGF1dCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZXZlbnRTdW1tYXJ5OiB7XG4gICAgICBub0NvbnRlbnQ6ICdBdWN1biDDqXbDqG5lbWVudCBhdmVjIGxhIGNyaXRpY2l0w6kgZG9ubsOpZScsXG4gICAgICBzdGF0dXNMYWJlbHM6IHtcbiAgICAgICAgTkVXOiAnTm91dmVhdXgnLFxuICAgICAgICBJTl9QUk9HUkVTUzogJ0VuIGNvdXJzJyxcbiAgICAgICAgRE9ORTogJ0Nsw7R0dXLDqXMnLFxuICAgICAgfSxcbiAgICAgIGNyaXRpY2FsaXR5TGFiZWxzOiB7XG4gICAgICAgIExPVzogJ0JhcycsXG4gICAgICAgIE1FRElVTTogJ01veWVuJyxcbiAgICAgICAgSElHSDogJ0hhdXQnLFxuICAgICAgICBBTEw6ICdUb3VzJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwcm9jZWR1cmU6IHtcbiAgICAgIG5hbWU6ICdQcm9jw6lkdXJlJyxcbiAgICAgIHByb2dyZXNzOiAnJSBhdmFuY2VtZW50IHByb2PDqWR1cmUnXG4gICAgfSxcbiAgICBhY3Rpb246IHtcbiAgICAgIGNvbnN1bHQ6ICdDb25zdWx0ZXInLFxuICAgICAgY2xvc2U6ICdDbG90w7tyZXInLFxuICAgICAgc2VuZDogJ0Vudm95ZXInXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnIudHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZ2VuZXJhbC9pMThuL2ZyLnRyYW5zbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLEtBQUssRUFBRSxRQUFRO2dCQUNmLE1BQU0sRUFBRSxhQUFhO2dCQUNyQixRQUFRLEVBQUUsV0FBVzthQUN0QjtZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixHQUFHLEVBQUUsU0FBUztnQkFDZCxXQUFXLEVBQUUsVUFBVTtnQkFDdkIsSUFBSSxFQUFFLFNBQVM7YUFDaEI7WUFDRCxPQUFPLEVBQUUsU0FBUztZQUNsQixNQUFNLEVBQUUsbUJBQW1CO1lBQzNCLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsZUFBZSxFQUFFLHlCQUF5QjtZQUMxQyxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFFBQVE7YUFDZjtZQUNELFNBQVMsRUFBRSxlQUFlO1lBQzFCLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFlBQVksRUFBRSxrQkFBa0I7WUFDaEMsb0JBQW9CLEVBQUUsOEJBQThCO1lBQ3BELFNBQVMsRUFBRSxpQkFBaUI7WUFDNUIsR0FBRyxFQUFFO2dCQUNILElBQUksRUFBRSx3QkFBd0I7Z0JBQzlCLEtBQUssRUFBRTtvQkFDTCxXQUFXLEVBQUUsYUFBYTtvQkFDMUIsT0FBTyxFQUFFLFNBQVM7b0JBQ2xCLE1BQU0sRUFBRSxjQUFjO29CQUN0QixJQUFJLEVBQUUsS0FBSztvQkFDWCxRQUFRLEVBQUUsV0FBVztvQkFDckIsS0FBSyxFQUFFLDhCQUE4QjtvQkFDckMsUUFBUSxFQUFFO3dCQUNSLElBQUksRUFBRSw4QkFBOEI7d0JBQ3BDLFdBQVcsRUFBRSwyQkFBMkI7cUJBQ3pDO2lCQUNGO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxNQUFNLEVBQUUsd0JBQXdCO29CQUNoQyxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLElBQUksRUFBRSxtQkFBbUI7b0JBQ3pCLFNBQVMsRUFBRSxvQkFBb0I7aUJBQ2hDO2FBQ0Y7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsaUJBQWlCLEVBQUUsMEJBQTBCO2dCQUM3QyxNQUFNLEVBQUUsaUJBQWlCO2dCQUN6QixjQUFjLEVBQUUscUJBQXFCO2dCQUNyQyxXQUFXLEVBQUUsY0FBYztnQkFDM0IsYUFBYSxFQUFFLGVBQWU7YUFDL0I7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEdBQUcsRUFBRSxLQUFLO2dCQUNWLE1BQU0sRUFBRSxPQUFPO2dCQUNmLElBQUksRUFBRSxNQUFNO2FBQ2I7U0FDRjtRQUNELFlBQVksRUFBRTtZQUNaLFNBQVMsRUFBRSwwQ0FBMEM7WUFDckQsWUFBWSxFQUFFO2dCQUNaLEdBQUcsRUFBRSxVQUFVO2dCQUNmLFdBQVcsRUFBRSxVQUFVO2dCQUN2QixJQUFJLEVBQUUsVUFBVTthQUNqQjtZQUNELGlCQUFpQixFQUFFO2dCQUNqQixHQUFHLEVBQUUsS0FBSztnQkFDVixNQUFNLEVBQUUsT0FBTztnQkFDZixJQUFJLEVBQUUsTUFBTTtnQkFDWixHQUFHLEVBQUUsTUFBTTthQUNaO1NBQ0Y7UUFDRCxTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsV0FBVztZQUNqQixRQUFRLEVBQUUsd0JBQXdCO1NBQ25DO1FBQ0QsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFLFdBQVc7WUFDcEIsS0FBSyxFQUFFLFVBQVU7WUFDakIsSUFBSSxFQUFFLFNBQVM7U0FDaEI7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZnJUcmFuc2xhdGlvbnMgPSB7XG4gICdAaHZ5Jzoge1xuICAgIGV2ZW50OiB7XG4gICAgICBuYW1lOiAnw4l2w6huZW1lbnQnLFxuICAgICAgdHlwZToge1xuICAgICAgICBuYW1lOiAnVHlwZSBkXFwnw6l2w6huZW1lbnQnLFxuICAgICAgICBBTEVSVDogJ0FsZXJ0ZScsXG4gICAgICAgIFJFUE9SVDogJ1NpZ25hbGVtZW50JyxcbiAgICAgICAgT1BFUkFUT1I6ICdPcMOpcmF0ZXVyJyxcbiAgICAgIH0sXG4gICAgICBzdGF0dXM6IHtcbiAgICAgICAgbmFtZTogJ1N0YXR1dCDDqXbDqG5lbWVudCcsXG4gICAgICAgIE5FVzogJ05vdXZlYXUnLFxuICAgICAgICBJTl9QUk9HUkVTUzogJ0VuIGNvdXJzJyxcbiAgICAgICAgRE9ORTogJ0Nsw7R0dXLDqScsXG4gICAgICB9LFxuICAgICAgYWRkcmVzczogJ0FkcmVzc2UnLFxuICAgICAgc291cmNlOiAnUsOpZsOpcmVuY2UgZXh0ZXJuZScsXG4gICAgICBlcXVpcG1lbnQ6ICdSw6lmw6lyZW5jZSBtYXTDqXJpZWwnLFxuICAgICAgZXF1aXBtZW50RW50aXR5OiAnRW50aXTDqSBkZSBsXFwnw6lxdWlwZW1lbnQnLFxuICAgICAgZG9tYWluOiB7XG4gICAgICAgIG5hbWU6ICdNw6l0aWVyJ1xuICAgICAgfSxcbiAgICAgIHN0YXJ0RGF0ZTogJ0RhdGUgZGUgZMOpYnV0JyxcbiAgICAgIGVuZERhdGU6ICdEYXRlIGRlIGZpbicsXG4gICAgICBjcmVhdGlvbkRhdGU6ICdEYXRlIGRlIGNyw6lhdGlvbicsXG4gICAgICBsYXN0TW9kaWZpY2F0aW9uRGF0ZTogJ0RhdGUgZGVybmnDqHJlcyBtb2RpZmljYXRpb25zJyxcbiAgICAgIGNsb3NlRGF0ZTogJ0RhdGUgZGUgY2xvdMO7cmUnLFxuICAgICAgbG9nOiB7XG4gICAgICAgIG5hbWU6ICdKb3VybmFsIGRlcyDDqXbDqG5lbWVudHMnLFxuICAgICAgICBldmVudDoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgICAgICAgIGFkZHJlc3M6ICdBZHJlc3NlJyxcbiAgICAgICAgICBkZXRhaWw6ICdJbmZvcm1hdGlvbnMnLFxuICAgICAgICAgIG5hbWU6ICdOb20nLFxuICAgICAgICAgIGNhdGVnb3J5OiAnQ2F0w6lnb3JpZScsXG4gICAgICAgICAgY2xvc2U6ICdDbMO0dHVyZXIgdG91cyBjZXMgw6l2w6huZW1lbnRzJyxcbiAgICAgICAgICBjb21tZW50czoge1xuICAgICAgICAgICAgbmFtZTogJ0NvbW1lbnRhaXJlcyBkZSBsXFwnw6l2w6huZW1lbnQnLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICfDiWNyaXZleiB2b3RyZSBjb21tZW50YWlyZSdcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByb2NlZHVyZToge1xuICAgICAgICAgIGRlbGV0ZTogJ1N1cHByaW1lciBsYSBwcm9jw6lkdXJlJyxcbiAgICAgICAgICBwcm9ncmVzczogJ1Byb2dyZXNzaW9uJyxcbiAgICAgICAgICBub0FjdGlvbjogJ1BhcyBkXFwnYWN0aW9uJyxcbiAgICAgICAgICBuYW1lOiAnUHJvY8OpZHVyZSBjb21tdW5lJyxcbiAgICAgICAgICBhZGRBY3Rpb246ICdBam91dGVyIHVuZSBhY3Rpb24nXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgbmFtZTogXCJDYXTDqWdvcmllIGQnw6l2w6huZW1lbnRcIixcbiAgICAgICAgQUxFUlRfTUFMRlVOQ1RJT046ICdBbGVydGUgRHlzZm9uY3Rpb25uZW1lbnQnLFxuICAgICAgICBSRVBPUlQ6ICdTaWduYWxlbWVudCBHUkMnLFxuICAgICAgICBPUEVSQVRPUl9FVkVOVDogJ0V2w6huZW1lbnQgT3DDqXJhdGV1cicsXG4gICAgICAgIEFMRVJUX0xJTUlUOiAnQWxlcnRlIFNldWlsJyxcbiAgICAgICAgTUFOSUZFU1RBVElPTjogJ01hbmlmZXN0YXRpb24nLFxuICAgICAgfSxcbiAgICAgIGNyaXRpY2FsaXR5OiB7XG4gICAgICAgIG5hbWU6ICdDcml0aWNpdMOpJyxcbiAgICAgICAgTE9XOiAnQmFzJyxcbiAgICAgICAgTUVESVVNOiAnTW95ZW4nLFxuICAgICAgICBISUdIOiAnSGF1dCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZXZlbnRTdW1tYXJ5OiB7XG4gICAgICBub0NvbnRlbnQ6ICdBdWN1biDDqXbDqG5lbWVudCBhdmVjIGxhIGNyaXRpY2l0w6kgZG9ubsOpZScsXG4gICAgICBzdGF0dXNMYWJlbHM6IHtcbiAgICAgICAgTkVXOiAnTm91dmVhdXgnLFxuICAgICAgICBJTl9QUk9HUkVTUzogJ0VuIGNvdXJzJyxcbiAgICAgICAgRE9ORTogJ0Nsw7R0dXLDqXMnLFxuICAgICAgfSxcbiAgICAgIGNyaXRpY2FsaXR5TGFiZWxzOiB7XG4gICAgICAgIExPVzogJ0JhcycsXG4gICAgICAgIE1FRElVTTogJ01veWVuJyxcbiAgICAgICAgSElHSDogJ0hhdXQnLFxuICAgICAgICBBTEw6ICdUb3VzJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwcm9jZWR1cmU6IHtcbiAgICAgIG5hbWU6ICdQcm9jw6lkdXJlJyxcbiAgICAgIHByb2dyZXNzOiAnJSBhdmFuY2VtZW50IHByb2PDqWR1cmUnXG4gICAgfSxcbiAgICBhY3Rpb246IHtcbiAgICAgIGNvbnN1bHQ6ICdDb25zdWx0ZXInLFxuICAgICAgY2xvc2U6ICdDbG90w7tyZXInLFxuICAgICAgc2VuZDogJ0Vudm95ZXInXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export const DOMAINS = {
2
+ values: ['DOMAIN1', 'DOMAIN2'],
3
+ };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWlucy5jb25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL21vZGVsL2RvbWFpbnMuY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUF5QjtJQUMzQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO0NBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRE9NQUlOUzogeyB2YWx1ZXM6IHN0cmluZ1tdIH0gPSB7XG4gIHZhbHVlczogWydET01BSU4xJywgJ0RPTUFJTjInXSxcbn07XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlwLWV2ZW50LWRldGFpbC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2h5cGVydmlzb3Ivc3JjL2xpYi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtZGV0YWlsLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHlwRXZlbnQgfSBmcm9tICcuL2h5cC1ldmVudC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEh5cEV2ZW50RGV0YWlscyBleHRlbmRzIEh5cEV2ZW50IHtcbiAgYWRkcmVzczogc3RyaW5nLFxuICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICBzdGF0dXM6IHN0cmluZztcbiAgbGFzdE1vZGlmaWNhdGlvbkRhdGU6IHN0cmluZyxcbiAgY3JlYXRpb25EYXRlOiBzdHJpbmcsXG4gIGVxdWlwbWVudD86IHtcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgZW50aXR5OiBzdHJpbmdcbiAgfSxcbiAgZXh0ZXJuYWxTb3VyY2VSZWY/OiBzdHJpbmcsXG4gIGNhdGVnb3J5OiBzdHJpbmcsXG4gIHN0YXJ0RGF0ZTogc3RyaW5nO1xuICBlbmREYXRlOiBzdHJpbmc7XG4gIGNsb3NlRGF0ZTogc3RyaW5nO1xuICBwcm9jZWR1cmVJZD86IHN0cmluZztcbiAgbGlua2VkRXZlbnRzOiBudW1iZXI7XG4gIHByb2NlZHVyZVByb2dyZXNzPzogbnVtYmVyO1xufVxuXG5cblxuXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlwLWV2ZW50LWRldGFpbC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2h5cGVydmlzb3Ivc3JjL2xpYi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtZGV0YWlsLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHlwRXZlbnQgfSBmcm9tICcuL2h5cC1ldmVudC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEh5cEV2ZW50RGV0YWlscyBleHRlbmRzIEh5cEV2ZW50IHtcbiAgYWRkcmVzczogc3RyaW5nLFxuICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICBzdGF0dXM6IHN0cmluZztcbiAgbGFzdE1vZGlmaWNhdGlvbkRhdGU6IHN0cmluZyxcbiAgY3JlYXRpb25EYXRlOiBzdHJpbmcsXG4gIGVxdWlwbWVudD86IHtcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgZW50aXR5OiBzdHJpbmdcbiAgfSxcbiAgZXh0ZXJuYWxTb3VyY2VSZWY/OiBzdHJpbmcsXG4gIGNhdGVnb3J5OiBzdHJpbmcsXG4gIHN0YXJ0RGF0ZTogc3RyaW5nO1xuICBlbmREYXRlOiBzdHJpbmc7XG4gIGNsb3NlRGF0ZTogc3RyaW5nO1xuICBwcm9jZWR1cmVJZD86IHN0cmluZztcbiAgbGlua2VkRXZlbnRzOiBudW1iZXI7XG4gIHByb2NlZHVyZVByb2dyZXNzPzogbnVtYmVyO1xuICBkb21haW4/OiBzdHJpbmc7XG59XG5cblxuXG5cbiJdfQ==
@@ -10,4 +10,5 @@ export * from './event/hyp-event-summary.interface';
10
10
  export * from './event/hyp-event-type';
11
11
  export * from './hyp-procedure.interface';
12
12
  export * from './hyp-equipment.interface';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL21vZGVsL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgaHlwZXJ2aXNvclxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQvaHlwLWV2ZW50LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50L2h5cC1ldmVudC1jYXRlZ29yeS50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQvaHlwLWV2ZW50LWNyaXRpY2FsaXR5LnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudC9oeXAtZXZlbnQtZGV0YWlsLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50L2h5cC1ldmVudC1zdGF0dXMudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50L2h5cC1ldmVudC1zdW1tYXJ5LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50L2h5cC1ldmVudC10eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vaHlwLXByb2NlZHVyZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9oeXAtZXF1aXBtZW50LmludGVyZmFjZSc7XG4iXX0=
13
+ export * from './domains.constant';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL21vZGVsL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBoeXBlcnZpc29yXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9ldmVudC9oeXAtZXZlbnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQvaHlwLWV2ZW50LWNhdGVnb3J5LnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudC9oeXAtZXZlbnQtY3JpdGljYWxpdHkudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50L2h5cC1ldmVudC1kZXRhaWwuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQvaHlwLWV2ZW50LXN0YXR1cy50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQvaHlwLWV2ZW50LXN1bW1hcnkuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQvaHlwLWV2ZW50LXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9oeXAtcHJvY2VkdXJlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2h5cC1lcXVpcG1lbnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZG9tYWlucy5jb25zdGFudCc7XG4iXX0=
@@ -25,6 +25,10 @@ const HypEventCategory = ['ALERT_MALFUNCTION', 'REPORT', 'OPERATOR_EVENT', 'ALER
25
25
 
26
26
  const HypEventCriticality = ['LOW', 'MEDIUM', 'HIGH'];
27
27
 
28
+ const DOMAINS = {
29
+ values: ['DOMAIN1', 'DOMAIN2'],
30
+ };
31
+
28
32
  const HypervisorActions = {
29
33
  setUrl: createAction('[Event] Set Backend Url', props())
30
34
  };
@@ -206,6 +210,7 @@ class EventDetailComponent extends SubscriptionnerDirective {
206
210
  this.modifiedEvents = new EventEmitter();
207
211
  this.procedureModifications = {};
208
212
  this.modifiedProcedure = new EventEmitter();
213
+ this.DOMAINS = DOMAINS.values;
209
214
  }
210
215
  get events() {
211
216
  return this._events.map((evt, idx) => ({ ...evt, ...(this.eventModifications[idx] ?? {}) }));
@@ -290,11 +295,11 @@ class EventDetailComponent extends SubscriptionnerDirective {
290
295
  this.modifiedProcedure.next(this.procedure ? [this.procedureModifications, this.procedure] : undefined);
291
296
  }
292
297
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: EventDetailComponent, deps: [{ token: EquipmentService }], target: i0.ɵɵFactoryTarget.Component }); }
293
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: EventDetailComponent, selector: "hvy-event-detail", inputs: { events: "events", procedure: "procedure", cancelModifications: "cancelModifications" }, outputs: { modifiedEvents: "modifiedEvents", modifiedProcedure: "modifiedProcedure" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ '@hvy.event.log.name' | i18n }}</h1>\n <button class=\"a-btn a-btn--secondary -fix-right\">{{ '@hvy.event.log.event.close' | i18n }}</button>\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events;track event.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"true\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n @if (opened[idx]) {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\" [items]=\"categories\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.startDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.startDate | forDateTimeLocal\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.endDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.endDate | forDateTimeLocal\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\">{{ '@hvy.action.send' | i18n }}</button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>{{ '@hvy.event.log.procedure.name' | i18n }}</h2>\n </div>\n <div>\n <p>{{ procedure.name }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\">\n @for (action of procedure.actions;track action.id) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\">\n <pry-icon iconSvg=\"six_dot\"></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "component", type: StatusDisplayComponent, selector: "hvy-status-display", inputs: ["event", "modifiable"], outputs: ["modified"] }, { kind: "component", type: ProgressDisplayComponent, selector: "hvy-progress-display", inputs: ["progress"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
298
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: EventDetailComponent, selector: "hvy-event-detail", inputs: { events: "events", procedure: "procedure", cancelModifications: "cancelModifications" }, outputs: { modifiedEvents: "modifiedEvents", modifiedProcedure: "modifiedProcedure" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ '@hvy.event.log.name' | i18n }}</h1>\n <button class=\"a-btn a-btn--secondary -fix-right\">{{ '@hvy.event.log.event.close' | i18n }}</button>\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events;track event.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"true\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n @if (opened[idx]) {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\" [items]=\"categories\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}</td>\n <td>\n <pry-select [items]=\"DOMAINS\" [ngModel]=\"event.domain\" i18nPrefix=\"@hvy.event.domain.\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.startDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.startDate | forDateTimeLocal\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.endDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.endDate | forDateTimeLocal\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\">{{ '@hvy.action.send' | i18n }}</button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>{{ '@hvy.event.log.procedure.name' | i18n }}</h2>\n </div>\n <div>\n <p>{{ procedure.name }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\">\n @for (action of procedure.actions;track action.id) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\">\n <pry-icon iconSvg=\"six_dot\"></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "component", type: StatusDisplayComponent, selector: "hvy-status-display", inputs: ["event", "modifiable"], outputs: ["modified"] }, { kind: "component", type: ProgressDisplayComponent, selector: "hvy-progress-display", inputs: ["progress"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
294
299
  }
295
300
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: EventDetailComponent, decorators: [{
296
301
  type: Component,
297
- args: [{ selector: 'hvy-event-detail', template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ '@hvy.event.log.name' | i18n }}</h1>\n <button class=\"a-btn a-btn--secondary -fix-right\">{{ '@hvy.event.log.event.close' | i18n }}</button>\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events;track event.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"true\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n @if (opened[idx]) {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\" [items]=\"categories\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.startDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.startDate | forDateTimeLocal\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.endDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.endDate | forDateTimeLocal\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\">{{ '@hvy.action.send' | i18n }}</button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>{{ '@hvy.event.log.procedure.name' | i18n }}</h2>\n </div>\n <div>\n <p>{{ procedure.name }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\">\n @for (action of procedure.actions;track action.id) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\">\n <pry-icon iconSvg=\"six_dot\"></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n" }]
302
+ args: [{ selector: 'hvy-event-detail', template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ '@hvy.event.log.name' | i18n }}</h1>\n <button class=\"a-btn a-btn--secondary -fix-right\">{{ '@hvy.event.log.event.close' | i18n }}</button>\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events;track event.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"true\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n @if (opened[idx]) {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\" [items]=\"categories\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}</td>\n <td>\n <pry-select [items]=\"DOMAINS\" [ngModel]=\"event.domain\" i18nPrefix=\"@hvy.event.domain.\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.startDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.startDate | forDateTimeLocal\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.endDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.endDate | forDateTimeLocal\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\">{{ '@hvy.action.send' | i18n }}</button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>{{ '@hvy.event.log.procedure.name' | i18n }}</h2>\n </div>\n <div>\n <p>{{ procedure.name }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\">\n @for (action of procedure.actions;track action.id) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\">\n <pry-icon iconSvg=\"six_dot\"></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n" }]
298
303
  }], ctorParameters: () => [{ type: EquipmentService }], propDecorators: { modifiedEvents: [{
299
304
  type: Output
300
305
  }], modifiedProcedure: [{
@@ -572,6 +577,9 @@ const enTranslations = {
572
577
  source: 'External reference',
573
578
  equipment: 'Equipment reference',
574
579
  equipmentEntity: 'Equipment entity',
580
+ domain: {
581
+ name: 'Métier'
582
+ },
575
583
  startDate: 'Start date',
576
584
  endDate: 'End date',
577
585
  creationDate: 'Creation date',
@@ -652,6 +660,9 @@ const frTranslations = {
652
660
  source: 'Référence externe',
653
661
  equipment: 'Référence matériel',
654
662
  equipmentEntity: 'Entité de l\'équipement',
663
+ domain: {
664
+ name: 'Métier'
665
+ },
655
666
  startDate: 'Date de début',
656
667
  endDate: 'Date de fin',
657
668
  creationDate: 'Date de création',
@@ -1005,5 +1016,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
1005
1016
  * Generated bundle index. Do not edit.
1006
1017
  */
1007
1018
 
1008
- export { EVENT_LINK, EVENT_TO_ICON, EquipmentService, EventActions, EventDetailComponent, EventEffects, EventIconPipe, EventListComponent, EventSelectors, EventService, EventSummaryActions, EventSummaryEffects, EventSummaryItemComponent, EventSummaryListComponent, EventSummaryPageComponent, EventSummarySelectors, ForDatetimeLocalPipe, HYP_BASE_CONFIG, HypEventCategory, HypEventCriticality, HypEventStatus, HypEventType, HypSelectors, HypervisorActions, HypervisorEffects, HypervisorService, IconDisplayComponent, ProgressDisplayComponent, PvyHypervisorModule, StatusDisplayComponent, enTranslations, eventFeatureKey, eventInitialState, eventReducer, eventSummaryFeatureKey, eventSummaryInitialState, eventSummaryReducer, frTranslations, hypFeatureKey, hypInitialState, hypervisorReducer };
1019
+ export { DOMAINS, EVENT_LINK, EVENT_TO_ICON, EquipmentService, EventActions, EventDetailComponent, EventEffects, EventIconPipe, EventListComponent, EventSelectors, EventService, EventSummaryActions, EventSummaryEffects, EventSummaryItemComponent, EventSummaryListComponent, EventSummaryPageComponent, EventSummarySelectors, ForDatetimeLocalPipe, HYP_BASE_CONFIG, HypEventCategory, HypEventCriticality, HypEventStatus, HypEventType, HypSelectors, HypervisorActions, HypervisorEffects, HypervisorService, IconDisplayComponent, ProgressDisplayComponent, PvyHypervisorModule, StatusDisplayComponent, enTranslations, eventFeatureKey, eventInitialState, eventReducer, eventSummaryFeatureKey, eventSummaryInitialState, eventSummaryReducer, frTranslations, hypFeatureKey, hypInitialState, hypervisorReducer };
1009
1020
  //# sourceMappingURL=provoly-hypervisor.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-hypervisor.mjs","sources":["../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-category.type.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-criticality.type.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/store/equipment/equipment.service.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-pipe/event-icon.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-display/icon-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-display/icon-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/status-display/status-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/status-display/status-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/progress-display/progress-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/progress-display/progress-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/for-datetime-local-pipe/for-datetime-local.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-detail.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-detail.component.html","../../../../projects/provoly/hypervisor/src/lib/store/event/event.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/event/list/event-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/list/event-list.component.html","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.const.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/item/event-summary-item.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/item/event-summary-item.component.html","../../../../projects/provoly/hypervisor/src/lib/event-summary/list/event-summary-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/list/event-summary-list.component.html","../../../../projects/provoly/hypervisor/src/lib/event-summary/page/event-summary-page.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/page/event-summary-page.component.html","../../../../projects/provoly/hypervisor/src/lib/general/base.token.ts","../../../../projects/provoly/hypervisor/src/lib/general/i18n/en.translations.ts","../../../../projects/provoly/hypervisor/src/lib/general/i18n/fr.translations.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-status.type.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-type.ts","../../../../projects/provoly/hypervisor/src/lib/model/public-api.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.effects.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.effects.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.effects.ts","../../../../projects/provoly/hypervisor/src/lib/hypervisor.module.ts","../../../../projects/provoly/hypervisor/public-api.ts","../../../../projects/provoly/hypervisor/provoly-hypervisor.ts"],"sourcesContent":["export const HypEventCategory = ['ALERT_MALFUNCTION', 'REPORT', 'OPERATOR_EVENT', 'ALERT_LIMIT', 'MANIFESTATION'];\n","export const HypEventCriticality = ['LOW', 'MEDIUM', 'HIGH'];\n\n","import { createAction, props } from '@ngrx/store';\n\nexport const HypervisorActions = {\n setUrl: createAction('[Event] Set Backend Url', props<{ url?: string }>())\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { HypervisorActions } from './hypervisor.actions';\n\nexport const hypFeatureKey = '@hvy/general';\n\nexport interface HypState {\n url: string;\n}\n\nexport const hypInitialState: HypState = {\n url: '/api/hypervisor',\n};\n\nconst internalReducer = createReducer<HypState>(\n hypInitialState,\n on(HypervisorActions.setUrl, (state, action) => ({\n ...state,\n url: action.url ?? state.url,\n })),\n);\n\nexport function hypervisorReducer(state: HypState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { hypFeatureKey, HypState } from './hypervisor.reducer';\n\n\nconst feature = createFeatureSelector<HypState>(hypFeatureKey);\nconst url = createSelector(feature, (state) => state.url);\n\nexport const HypSelectors = {\n feature,\n url\n};\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { HypEquipment } from '../../model/hyp-equipment.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EquipmentService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>,\n ) {\n }\n\n findByName(name: string): Observable<HypEquipment> {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n let params = new HttpParams();\n params = params.set('name', name);\n return this.httpClient.get<HypEquipment>(encodeURI(`${url}/equipment`), { params });\n }),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { HypEvent } from '../../model/event/hyp-event.interface';\nimport { Store } from '@ngrx/store';\nimport { DEFAULT_ICON_URL } from '@provoly/dashboard';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\n\nexport const EVENT_TO_ICON = {\n fn: (event: HypEvent | HypEventSummary | HypEventDetails, store: Store<any>) => of(DEFAULT_ICON_URL),\n};\n\n@Pipe({\n name: 'eventIcon',\n})\nexport class EventIconPipe implements PipeTransform {\n constructor(private store: Store<any>) {\n }\n\n transform(value: HypEvent | HypEventSummary | HypEventDetails, ...args: unknown[]): Observable<string> {\n return EVENT_TO_ICON.fn(value, this.store);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { HypEvent } from '../../model/event/hyp-event.interface';\n\n@Component({\n selector: 'hvy-icon-display',\n templateUrl: './icon-display.component.html'\n})\nexport class IconDisplayComponent {\n @Input() event!: HypEvent;\n}\n","<div class=\"\n m-hvy-event-summary-item__event-icon-container\n -hvy-{{ event.criticality.toString().toLowerCase()}}\n -hvy-{{event.type.toString().toLowerCase()}}\n \">\n <span\n class=\"m-hvy-event-summary-item__event-icon a-icon\"\n [ngStyle]=\"{\n 'mask-image': 'url(' + (event | eventIcon | async | getSecuredImage | async) + ')',\n '-webkit-mask-image': 'url(' + (event | eventIcon | async | getSecuredImage | async) + ')'\n }\"\n aria-hidden=\"true\"\n focusable=\"false\"\n ></span>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\n\n@Component({\n selector: 'hvy-status-display',\n templateUrl: './status-display.component.html',\n})\nexport class StatusDisplayComponent {\n\n @Output() modified = new EventEmitter<string>();\n private _event!: HypEventDetails;\n targetStatuses: string[] = [];\n targetsDisplayed: boolean = false;\n _modifiable = false;\n\n @Input() set event(event: HypEventDetails) {\n this._event = event;\n this.updateTargetStatuses();\n }\n\n @Input() set modifiable(modifiable: boolean) {\n this._modifiable = modifiable;\n this.updateTargetStatuses();\n }\n\n get modifiable() {\n return this._modifiable;\n }\n\n get event() {\n return this._event;\n }\n\n trigger(status: string) {\n this.modified.next(status);\n this.targetsDisplayed = false;\n }\n\n updateTargetStatuses() {\n this.targetStatuses = (this.modifiable && this.event.status !== 'DONE') ? ['DONE'] : [];\n }\n\n toggle() {\n this.targetsDisplayed = this.targetStatuses.length > 0 && !this.targetsDisplayed;\n }\n}\n","<span class=\"a-chip -md -{{event.status}} a-chip-status\" (click)=\"toggle()\" >\n {{ '@hvy.event.status.' + event.status | i18n }}\n @if (targetStatuses.length > 0) {\n <pry-icon iconSvg=\"chevron_bottom\" [width]=\"10\" [height]=\"10\"></pry-icon>\n }\n</span>\n@if (targetsDisplayed) {\n <div class=\"a-chip-status__target\">\n <div class=\"a-chip-status__target__filler\"></div>\n @for (status of targetStatuses;track status) {\n <div class=\"a-chip-status__target__item\" (click)=\"trigger(status)\">{{ '@hvy.event.status.' + status | i18n }}</div>\n }\n </div>\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvy-progress-display',\n templateUrl: './progress-display.component.html',\n})\nexport class ProgressDisplayComponent {\n\n @Input() progress: number = 50;\n\n}\n","<div class=\"o-progressbar\">\n <div class=\"o-progressbar__header\">\n <div>0%</div>\n @if (progress > 0 && progress < 100) {\n <div [style.flex-grow]=\"progress\" class=\"-value\">{{ progress }}%</div>\n }\n <div [style.flex-grow]=\"progress === 100 ? 100 : 100 - progress\">100%</div>\n </div>\n <div class=\"o-progressbar__value\">\n <div [style.flex-grow]=\"progress\" class=\"-filled\"></div>\n <div [style.flex-grow]=\"100 - progress\" class=\"-empty\"></div>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\n\n@Pipe({\n name: 'forDateTimeLocal',\n})\nexport class ForDatetimeLocalPipe implements PipeTransform {\n constructor(private store: Store<any>) {\n }\n\n transform(completeDate: string, ...args: unknown[]): string {\n return completeDate ? completeDate.substring(0, completeDate.lastIndexOf(':')) : '';\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypEventCategory } from '../../model/event/hyp-event-category.type';\nimport { HypEventCriticality } from '../../model/event/hyp-event-criticality.type';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEquipment } from '../../model/hyp-equipment.interface';\nimport { EquipmentService } from '../../store/equipment/equipment.service';\n\n@Component({\n selector: 'hvy-event-detail',\n templateUrl: './event-detail.component.html',\n})\nexport class EventDetailComponent extends SubscriptionnerDirective {\n opened: boolean[] = [];\n categories = HypEventCategory;\n criticalities = HypEventCriticality;\n _events: HypEventDetails[] = [];\n eventModifications: Partial<HypEventDetails>[] = [];\n @Output() modifiedEvents = new EventEmitter<[Partial<HypEventDetails>, HypEventDetails][]>();\n _procedure?: HypProcedure;\n procedureModifications: Partial<HypProcedure> = {};\n @Output() modifiedProcedure = new EventEmitter<[Partial<HypProcedure>, HypProcedure] | undefined>();\n\n @Input() set events(events: HypEventDetails[]) {\n this._events = events.filter(ev => !!ev);\n this.eventModifications = new Array(this._events.length);\n this.opened = events.length === 1 ? [true] : [];\n };\n\n @Input() set procedure(procedure: HypProcedure) {\n this._procedure = procedure;\n this.procedureModifications = {};\n }\n\n @Input() set cancelModifications(evt: any) {\n this.eventModifications = new Array(this._events.length);\n this.procedureModifications = {};\n this._outputModifications();\n }\n\n constructor(private equipmentService: EquipmentService) {\n super();\n }\n\n get events() {\n return this._events.map((evt, idx) => ({ ...evt, ...(this.eventModifications[idx] ?? {}) }));\n }\n\n get procedure(): HypProcedure | undefined {\n return this._procedure ? ({ ...this._procedure, ...(this.procedureModifications ?? {}), events: this.events }) : undefined;\n }\n\n toggle(i: number) {\n this.opened[i] = !this.opened[i];\n }\n\n modifyEvent(index: number, prop: string, $event: Event | string) {\n // @ts-ignore\n const newValue = $event instanceof Event ? $event.target?.value : $event;\n // @ts-ignore\n if (this._events[index][prop] !== newValue) {\n\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n // @ts-ignore\n this.eventModifications[index][prop] = newValue;\n\n this._outputModifications();\n }\n }\n\n access(event: HypEventDetails) {\n switch (event.type) {\n case 'ALERT':\n default:\n return {\n name: true,\n category: true,\n criticality: true,\n description: true,\n address: true,\n source: true,\n eqName: true,\n eqEntity: true,\n startDate: true,\n endDate: true,\n };\n case 'REPORT':\n return {\n name: false,\n category: true,\n criticality: false,\n description: true,\n address: false,\n source: true,\n eqName: false,\n eqEntity: true,\n startDate: true,\n endDate: true,\n };\n case 'OPERATOR':\n return {\n name: false,\n category: false,\n criticality: false,\n description: false,\n address: false,\n source: false,\n eqName: false,\n eqEntity: false,\n startDate: false,\n endDate: false,\n };\n }\n }\n\n changeEquipment(index: number, $event: any) {\n this.equipmentService.findByName($event.target.value).subscribe((equipment: HypEquipment) => {\n if (equipment && this._events[index].name !== equipment.name) {\n\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n // @ts-ignore\n this.eventModifications[index].equipment = equipment;\n this._outputModifications();\n }\n });\n }\n\n _outputModifications() {\n this.modifiedEvents.next(this._events.map((ev, idx) => [this.eventModifications[idx], ev]));\n this.modifiedProcedure.next(this.procedure ? [this.procedureModifications, this.procedure!] : undefined);\n }\n}\n","<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ '@hvy.event.log.name' | i18n }}</h1>\n <button class=\"a-btn a-btn--secondary -fix-right\">{{ '@hvy.event.log.event.close' | i18n }}</button>\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events;track event.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"true\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n @if (opened[idx]) {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\" [items]=\"categories\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.startDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.startDate | forDateTimeLocal\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.endDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.endDate | forDateTimeLocal\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\">{{ '@hvy.action.send' | i18n }}</button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>{{ '@hvy.event.log.procedure.name' | i18n }}</h2>\n </div>\n <div>\n <p>{{ procedure.name }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\">\n @for (action of procedure.actions;track action.id) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\">\n <pry-icon iconSvg=\"six_dot\"></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\n\nexport const EventActions = {\n load: createAction('[Event] Load Events', props<{ next?: boolean }>()),\n loadSuccess: createAction('[Event Api] (bus) Load Events Success', props<{\n events: HypEventDetails[],\n startingFrom?: number\n }>()),\n loadFailure: createAction('[Event Api] Load Events Failure', props<{ error: string }>()),\n filter: createAction('[Event Api] Set filters', props<{ filters: { [key: string]: string[] } }>()),\n select: createAction('[Event Api] Select', props<{ cumulative: boolean, ids: string[] }>()),\n get: createAction('[Event] Load specific Event', props<{ id: string }>()),\n getForProcedure: createAction('[Event] Load specific Event for procedure', props<{ id: string }>()),\n getSuccess: createAction('[Event Api] (bus) Get Events/Procedure Success', props<{\n event?: HypEventDetails,\n procedure?: HypProcedure\n }>()),\n getFailure: createAction('[Event Api] Get Events/Procedure Failure', props<{ error: string }>()),\n save: createAction('[Event] Save Event', props<{ event: HypEventDetails }>()),\n saveProcedure: createAction('[Event] Save Procedure and linked Events', props<{ procedure: HypProcedure }>()),\n saveSuccess: createAction('[Event] Save success', props<{ event?: HypEventDetails, procedure?: HypProcedure }>()),\n saveFailure: createAction('[Event] Save failure', props<{ error: string }>()),\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { EventActions } from './event.actions';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\n\nexport const eventFeatureKey = '@hvy/event';\n\nexport interface EventState {\n events: HypEventDetails[];\n noMoreEvents: boolean;\n loading: boolean;\n filters: { [key: string]: string[] },\n selectedIds: string[];\n details: {\n event?: HypEventDetails;\n procedure?: HypProcedure;\n }\n}\n\nexport const eventInitialState: EventState = {\n events: [],\n noMoreEvents: false,\n loading: false,\n filters: {},\n selectedIds: [],\n details: {},\n};\n\nconst internalReducer = createReducer<EventState>(\n eventInitialState,\n on(EventActions.load, (state, action) => ({\n ...state,\n loading: true,\n })),\n on(EventActions.loadSuccess, (state, { events, startingFrom }) => {\n return ({\n ...state,\n loading: false,\n noMoreEvents: events.length < 20,\n events: [...state.events.slice(0, startingFrom), ...events],\n });\n }),\n on(EventActions.loadFailure, (state, action) => ({\n ...state,\n loading: false,\n events: [],\n })),\n on(EventActions.filter, (state, { filters }) => ({\n ...state,\n filters,\n })),\n on(EventActions.select, (state, { ids, cumulative }) => ({\n ...state,\n selectedIds: !cumulative ? ids : [...state.selectedIds, ...ids].reduce((p, c) => p.indexOf(c) === -1 ? [...p, c] : p.filter(p1 => p1 !== c), [] as string[]),\n })),\n on(EventActions.get, EventActions.getForProcedure, (state, _) => ({\n ...state,\n details: {},\n })),\n on(EventActions.getSuccess, (state, { event, procedure }) => ({\n ...state,\n details: { event, procedure },\n })),\n);\n\nexport function eventReducer(state: EventState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { eventFeatureKey, EventState } from './event.reducer';\n\n\nconst feature = createFeatureSelector<EventState>(eventFeatureKey);\nconst events = createSelector(feature, (state) => state.events);\nconst noMoreEvents = createSelector(feature, (state) => state.noMoreEvents);\nconst selectedIds = createSelector(feature, (state) => state.selectedIds);\nconst loading = createSelector(feature, (state) => state.loading);\nconst filters = createSelector(feature, (state) => state.filters);\nconst details = createSelector(feature, (state) => state.details);\n\nexport const EventSelectors = {\n feature,\n events,\n selectedIds,\n loading,\n filters,\n details,\n noMoreEvents\n};\n","import { AfterViewInit, Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { auditTime, filter, fromEvent, map, Observable, withLatestFrom } from 'rxjs';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\n\nexport const EVENT_LINK = {\n fn: (event: HypEventDetails | HypEventSummary, store: Store<any>) => ['./', event.id],\n};\n\n@Component({\n selector: 'hvy-event-list',\n templateUrl: './event-list.component.html',\n})\nexport class EventListComponent extends SubscriptionnerDirective implements AfterViewInit {\n events$: Observable<HypEventDetails[]>;\n selectedIds$: Observable<string[]>;\n EVENT_LINK = EVENT_LINK;\n _store = this.store;\n\n constructor(private store: Store<any>, private el: ElementRef) {\n super();\n this.store.dispatch(EventActions.load({}));\n this.events$ = this.store.select(EventSelectors.events);\n this.selectedIds$ = this.store.select(EventSelectors.selectedIds);\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n fromEvent(this.el.nativeElement, 'scroll')\n .pipe(\n // Are we close to end\n map((e: any) => {\n const target = e.currentTarget;\n return target.scrollHeight - target.offsetHeight - target.scrollTop;\n }),\n withLatestFrom(this.store.select(EventSelectors.noMoreEvents)),\n filter(([remaningScroll, noMore]) => !noMore && remaningScroll < 200),\n auditTime(200),\n ).subscribe(() => {\n this.store.dispatch(EventActions.load({ next: true }));\n }));\n }\n\n select(event: HypEventDetails, $event: MouseEvent) {\n this.store.dispatch(EventActions.select({ ids: [event.id], cumulative: true }));\n $event.preventDefault();\n $event.stopPropagation();\n }\n}\n","<table class=\"o-hvy-events-table\">\n <thead>\n <tr class=\"o-hvy-events-table__header\">\n <th></th>\n <th>{{ '@hvy.event.criticality.name' | i18n }}</th>\n <th>{{ '@hvy.event.name' | i18n }}</th>\n <th>{{ '@hvy.event.category.name' | i18n }}</th>\n <th>{{ '@hvy.event.address' | i18n }}</th>\n <th>{{ '@hvy.event.creationDate' | i18n }}</th>\n <th>{{ '@hvy.event.lastModificationDate' | i18n }}</th>\n <th>{{ '@hvy.event.status.name' | i18n }}</th>\n <th>{{ '@hvy.procedure.progress' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr class=\"o-hvy-events-table__line\" *ngFor=\"let event of events$|async\" (click)=\"select(event, $event)\">\n <td class=\"o-hvy-events-table__line__cell\">\n <pry-checkbox [ngModel]=\"(selectedIds$|async)!.includes(event.id)\"></pry-checkbox>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <div class=\"o-hvy-events-table__line__cell__name__main\">{{ event.name }}</div>\n <div\n class=\"o-hvy-events-table__line__cell__name__sub\">{{ event.equipment?.name ? event.equipment?.name : '' }}\n </div>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">{{ '@hvy.event.category.' + event.category | i18n }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.address }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.creationDate| sinceDate: { onlyLocale: true } }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.lastModificationDate | sinceDate: { onlyLocale: true } }}</td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-status-display [event]=\"event\"></hvy-status-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n {{ event.procedureProgress }} %\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <a [routerLink]=\"EVENT_LINK.fn(event, _store)\">\n > {{ '@hvy.action.consult' | i18n }} @if (event.linkedEvents > 1) {\n ({{ event.linkedEvents }})\n }\n </a>\n </td>\n </tr>\n </tbody>\n</table>\n","import { createAction, props } from '@ngrx/store';\nimport { HypEventSummaries } from '../../model/event/hyp-event-summary.interface';\n\nexport const EventSummaryActions = {\n load: createAction('[Event] Load Summaries'),\n loadSuccess: createAction('[Event Api] Load Summaries Success', props<{ summaries: HypEventSummaries }>()),\n loadFailure: createAction('[Event Api] Load Summaries Failure', props<{ error: string }>())\n};\n","export const emptySummaries = {\n NEW: { events: [], count: 0 },\n IN_PROGRESS: { events: [], count: 0 },\n DONE: { events: [], count: 0 }\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { EventSummaryActions } from './event-summary.actions';\nimport { emptySummaries } from './event-summary.const';\nimport { HypEventSummaries } from '../../model/event/hyp-event-summary.interface';\n\nexport const eventSummaryFeatureKey = '@hvy/event-summary';\n\nexport interface EventSummaryState {\n summaries: HypEventSummaries\n loading: boolean;\n}\n\nexport const eventSummaryInitialState: EventSummaryState = {\n summaries: { ...emptySummaries },\n loading: false,\n};\n\nconst internalReducer = createReducer<EventSummaryState>(\n eventSummaryInitialState,\n on(EventSummaryActions.load, (state, action) => ({\n ...state,\n loading: true\n })),\n on(EventSummaryActions.loadSuccess, (state, { summaries }) => ({\n ...state,\n loading: false,\n summaries\n })),\n on(EventSummaryActions.loadFailure, (state, action) => ({\n ...state,\n loading: false\n }))\n);\n\nexport function eventSummaryReducer(state: EventSummaryState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { eventSummaryFeatureKey, EventSummaryState } from './event-summary.reducer';\n\nconst feature = createFeatureSelector<EventSummaryState>(eventSummaryFeatureKey);\nconst summaries = createSelector(feature, (state) => state.summaries);\nconst loading = createSelector(feature, (state) => state.loading);\n\nexport const EventSummarySelectors = {\n feature,\n summaries,\n loading\n};\n","import { Component, Input } from '@angular/core';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { EVENT_LINK } from '../../event/list/event-list.component';\nimport { Store } from '@ngrx/store';\n\n@Component({\n selector: 'hvy-event-summary-item',\n templateUrl: './event-summary-item.component.html',\n})\nexport class EventSummaryItemComponent {\n @Input({ required: true }) event!: HypEventSummary;\n @Input() linkBase: string[] = [];\n EVENT_LINK = EVENT_LINK;\n\n constructor(public store: Store) {\n }\n}\n","<div class=\"m-hvy-event-summary-item\" [routerLink]=\"EVENT_LINK.fn(event, store)\">\n <div class=\"m-hvy-event-summary-item__title\">\n <h4>\n {{ event.name }}\n </h4>\n </div>\n <div class=\"m-hvy-event-summary-item__content\">\n <span>\n {{\n event.manifestation ?\n (event.manifestation.startDate | date : 'dd/MM HH:MM') + ' - ' + (event.manifestation.endDate | date : 'dd/MM HH:MM') :\n event.interventionRequestTitle\n }}\n </span>\n </div>\n <div class=\"m-hvy-event-summary-item__footer\">\n <div class=\"m-hvy-event-summary-item__icons\">\n <span class=\"m-hvy-event-summary-item__intervention-counter\">{{ event.interventionRequestCount }}</span>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </div>\n <div class=\"m-hvy-event-summary-item__date\">\n <span>\n {{ event.lastModificationDate | date : 'd MMMM . HH:MM' }}\n </span>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\n\n@Component({\n selector: 'hvy-event-summary-list',\n templateUrl: './event-summary-list.component.html'\n})\nexport class EventSummaryListComponent implements OnInit {\n @Input() events: HypEventSummary[] = [];\n @Input() totalEventCount = 0;\n @Input() status: string = '';\n @Input() consultLink: string[] = [];\n @Input() itemLinkBase: string[] = [];\n\n constructor(private store: Store<any>, private router: Router) {\n }\n\n ngOnInit() {\n this.consultLink = this.consultLink.length > 0 ? this.consultLink : ['events'];\n this.itemLinkBase = this.itemLinkBase.length > 0 ? this.itemLinkBase : ['events'];\n }\n\n filterAndRoute(status: string) {\n this.router.navigate([...this.consultLink]);\n this.store.dispatch(EventActions.filter({ filters: { status: [status] } }));\n }\n}\n","<div class=\"o-hvy-event-summary-list -hvy-{{status.toLowerCase()}}\">\n <div class=\"o-hvy-event-summary-list__header\">\n <h3 class=\"o-hvy-event-summary-list__title\">\n {{ '@hvy.eventSummary.statusLabels.' + status | i18n }}\n </h3>\n <span class=\"o-hvy-event-summary-list__counter\">\n {{ totalEventCount }}\n </span>\n </div>\n <div class=\"o-hvy-event-summary-list__content\">\n @for (event of events; track event.id) {\n <hvy-event-summary-item\n [event]=\"event\"\n [linkBase]=\"itemLinkBase\">\n </hvy-event-summary-item>\n } @empty {\n <span class=\"o-hvy-event-summary-list__no-content\">\n {{ '@hvy.eventSummary.noContent' | i18n }}\n </span>\n }\n </div>\n <div class=\"o-hvy-event-summary-list__footer\">\n <button class=\"o-hvy-event-summary-list__footer-button\" (click)=\"filterAndRoute(status)\">\n Consulter\n <pry-icon iconSvg=\"arrow\"></pry-icon>\n </button>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { HypEventSummaries } from '../../model/event/hyp-event-summary.interface';\nimport { Observable } from 'rxjs';\nimport { EventSummaryActions } from '../../store/event-summary/event-summary.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { map } from 'rxjs/operators';\nimport { EventSummarySelectors } from '../../store/event-summary/event-summary.selectors';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\n\n@Component({\n selector: 'hvy-event-summary-page',\n templateUrl: './event-summary-page.component.html'\n})\nexport class EventSummaryPageComponent extends SubscriptionnerDirective {\n @Input() pageTitle = '';\n summaries: HypEventSummaries = {\n NEW: { events: [], count: 0 },\n IN_PROGRESS: { events: [], count: 0 },\n DONE: { events: [], count: 0 },\n };\n selectedCriticality$: Observable<string | undefined>;\n criticalityList = [ \"LOW\", \"MEDIUM\", \"HIGH\", \"ALL\"];\n\n constructor(private store: Store<any>) {\n super();\n this.store.dispatch(EventSummaryActions.load());\n this.selectedCriticality$ = this.store.select(EventSelectors.filters).pipe(\n map((filters) => filters['criticality']?.[0] ?? 'ALL'),\n );\n this.subscriptions.add(\n this.store.select(EventSummarySelectors.summaries).subscribe((summaries) => {\n this.summaries = summaries;\n }),\n );\n }\n\n filterByCriticality($event: string) {\n $event === 'ALL' ? this.store.dispatch(EventActions.filter({ filters: { criticality: [] } })) :\n this.store.dispatch(EventActions.filter({ filters: { criticality: [$event] } }));\n this.store.dispatch(EventSummaryActions.load());\n }\n\n asIsOrder() {\n return 0;\n }\n}\n","<div class=\"o-hvy-event-summary-page\">\n <div class=\"o-hvy-event-summary-page__header\">\n @if (pageTitle) {\n <h3 class=\"o-hvy-event-summary-page__title\">{{ pageTitle }}</h3>\n }\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\">\n <label class=\"a-label m-filter__label\" for=\"criticality-filter\">{{ '@hvy.event.criticality.name' | i18n }} :&nbsp;</label>\n <pry-select\n id=\"criticality-filter\"\n class=\"o-hvy-event-summary-page__filter\"\n [items]=\"criticalityList\"\n [ngModel]=\"selectedCriticality$ | async\"\n (ngModelChange)=\"filterByCriticality($event)\"\n [translate]=\"true\"\n i18nPrefix=\"@hvy.eventSummary.criticalityLabels.\"\n >\n </pry-select>\n </div>\n </div>\n <div class=\"o-hvy-event-summary-page__content\">\n @for (summaryList of summaries | keyvalue: asIsOrder; track summaryList.key) {\n <hvy-event-summary-list\n class=\"o-hvy-event-summary-page__summary-list\"\n [status]=\"summaryList.key\"\n [totalEventCount]=\"summaryList.value.count\"\n [events]=\"summaryList.value.events\">\n </hvy-event-summary-list>\n }\n </div>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport const HYP_BASE_CONFIG = new InjectionToken<string>('base config');\n","export const enTranslations = {\n '@hvy': {\n event: {\n criticality: 'Criticality',\n name: 'Event',\n type: {\n name: 'Event type',\n ALERT: 'Alert',\n REPORT: 'Report',\n OPERATOR: 'Operator',\n },\n status: {\n name: 'Status',\n NEW: 'Open',\n IN_PROGRESS: 'In progress',\n DONE: 'Done',\n },\n address: 'Address',\n source: 'External reference',\n equipment: 'Equipment reference',\n equipmentEntity: 'Equipment entity',\n startDate: 'Start date',\n endDate: 'End date',\n creationDate: 'Creation date',\n lastModificationDate: 'Modification date',\n closeDate: 'Close date',\n log: {\n name: 'Events log',\n event: {\n description: 'Description',\n address: 'Address',\n detail: 'Information',\n name: 'Name',\n category: 'Category',\n comments: {\n name: 'Event comments',\n placeholder: 'Write your comment',\n },\n },\n procedure: {\n delete: 'Delete procedure',\n progress: 'Progress',\n noAction: 'No actions',\n name: 'Common procedure',\n addAction: 'Add action'\n },\n },\n category: {\n ALERT: 'Dysfunction alert',\n REPORT: 'GRC report',\n OPERATOR_EVENT: 'Operator event',\n ALERT_LIMIT: 'Limit alert',\n MANIFESTATION: 'Manifestation',\n },\n },\n eventSummary: {\n noContent: 'No event with given criticality',\n statusLabels: {\n NEW: 'Open',\n IN_PROGRESS: 'In progress',\n DONE: 'Done',\n },\n criticalityLabels: {\n LOW: 'Low',\n MEDIUM: 'Medium',\n HIGH: 'High',\n ALL: 'All',\n },\n },\n procedure: {\n name: 'Procedure',\n progress: 'Procedure progress %',\n },\n action: {\n consult: 'Consult',\n close: 'Close',\n send: 'Send',\n },\n },\n};\n","export const frTranslations = {\n '@hvy': {\n event: {\n name: 'Évènement',\n type: {\n name: 'Type d\\'évènement',\n ALERT: 'Alerte',\n REPORT: 'Signalement',\n OPERATOR: 'Opérateur',\n },\n status: {\n name: 'Statut évènement',\n NEW: 'Nouveau',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturé',\n },\n address: 'Adresse',\n source: 'Référence externe',\n equipment: 'Référence matériel',\n equipmentEntity: 'Entité de l\\'équipement',\n startDate: 'Date de début',\n endDate: 'Date de fin',\n creationDate: 'Date de création',\n lastModificationDate: 'Date dernières modifications',\n closeDate: 'Date de clotûre',\n log: {\n name: 'Journal des évènements',\n event: {\n description: 'Description',\n address: 'Adresse',\n detail: 'Informations',\n name: 'Nom',\n category: 'Catégorie',\n close: 'Clôturer tous ces évènements',\n comments: {\n name: 'Commentaires de l\\'évènement',\n placeholder: 'Écrivez votre commentaire'\n }\n },\n procedure: {\n delete: 'Supprimer la procédure',\n progress: 'Progression',\n noAction: 'Pas d\\'action',\n name: 'Procédure commune',\n addAction: 'Ajouter une action'\n },\n },\n category: {\n name: \"Catégorie d'évènement\",\n ALERT_MALFUNCTION: 'Alerte Dysfonctionnement',\n REPORT: 'Signalement GRC',\n OPERATOR_EVENT: 'Evènement Opérateur',\n ALERT_LIMIT: 'Alerte Seuil',\n MANIFESTATION: 'Manifestation',\n },\n criticality: {\n name: 'Criticité',\n LOW: 'Bas',\n MEDIUM: 'Moyen',\n HIGH: 'Haut',\n },\n },\n eventSummary: {\n noContent: 'Aucun évènement avec la criticité donnée',\n statusLabels: {\n NEW: 'Nouveaux',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturés',\n },\n criticalityLabels: {\n LOW: 'Bas',\n MEDIUM: 'Moyen',\n HIGH: 'Haut',\n ALL: 'Tous',\n },\n },\n procedure: {\n name: 'Procédure',\n progress: '% avancement procédure'\n },\n action: {\n consult: 'Consulter',\n close: 'Clotûrer',\n send: 'Envoyer'\n },\n },\n};\n","export const HypEventStatus = ['NEW', 'IN_PROGRESS', 'DONE'];\n","export enum HypEventType {\n ALERT,\n REPORT,\n OPERATOR\n}\n","/*\n * Public API Surface of hypervisor\n */\n\nexport * from './event/hyp-event.interface';\nexport * from './event/hyp-event-category.type';\nexport * from './event/hyp-event-criticality.type';\nexport * from './event/hyp-event-detail.interface';\nexport * from './event/hyp-event-status.type';\nexport * from './event/hyp-event-summary.interface';\nexport * from './event/hyp-event-type';\nexport * from './hyp-procedure.interface';\nexport * from './hyp-equipment.interface';\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable, withLatestFrom } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { EventSelectors } from './event.selectors';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>,\n ) {\n }\n\n list(startWith = 0): Observable<Array<HypEventDetails>> {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n withLatestFrom(this.store.select(EventSelectors.filters)),\n mergeMap(([url, filters]) => {\n let params = new HttpParams();\n Object.keys(filters).forEach(filter => {\n filters[filter].forEach((filterValue) => {\n params = params.set(filter, filterValue);\n });\n });\n const pageSize = 20;\n params = params.set('page', (startWith / pageSize) + 1);\n return this.httpClient.get<Array<HypEventDetails>>(encodeURI(`${url}/events`), { params });\n }),\n );\n }\n\n get(id: string) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEventDetails>(encodeURI(`${url}/events/id/${id}`));\n }),\n );\n }\n\n getProcedure(id: string) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypProcedure>(encodeURI(`${url}/procedures/id/${id}`));\n }),\n );\n }\n\n save(event: HypEventDetails) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.post<HypEventDetails>(encodeURI(`${url}/events/${event.type.toLowerCase()}`), event);\n }),\n );\n }\n\n saveProcedure(procedure: HypProcedure) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.post<HypProcedure>(encodeURI(`${url}/procedures`), procedure);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { EventActions } from './event.actions';\nimport { EventService } from './event.service';\nimport { filter, withLatestFrom } from 'rxjs';\nimport { EventSelectors } from './event.selectors';\nimport { Store } from '@ngrx/store';\n\n@Injectable()\nexport class EventEffects {\n loadEvents$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.load),\n debounceTime(200),\n withLatestFrom(this.store.select(EventSelectors.events), this.store.select(EventSelectors.noMoreEvents)),\n filter(([action, events, noMore]) => !noMore),\n mergeMap(([action, stateEvents]) =>\n this.eventService.list(action.next ? stateEvents.length : 0).pipe(\n map((events) => EventActions.loadSuccess({ events, startingFrom: action.next ? stateEvents.length : 0 })),\n catchError((error) => [EventActions.loadFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n getEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.get),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.get(action.id).pipe(\n map((event) => EventActions.getSuccess({ event })),\n catchError((error) => [EventActions.getFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n getForProcedureEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.getForProcedure),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.getProcedure(action.id).pipe(\n map((procedure) => EventActions.getSuccess({ procedure })),\n catchError((error) => [EventActions.getFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n saveEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.save),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.save(action.event).pipe(\n map((event) => EventActions.saveSuccess({ event })),\n catchError((error) => [EventActions.saveFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n saveProcedure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.saveProcedure),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.saveProcedure(action.procedure).pipe(\n map((procedure) => EventActions.saveSuccess({ procedure })),\n catchError((error) => [EventActions.saveFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private eventService: EventService,\n private store: Store\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Store } from '@ngrx/store';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HypervisorService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n}\n","import { Injectable } from '@angular/core';\nimport { Actions } from '@ngrx/effects';\nimport { HypervisorService } from './hypervisor.service';\n\n@Injectable()\nexport class HypervisorEffects {\n\n constructor(\n private actions$: Actions,\n private eventService: HypervisorService,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable, withLatestFrom } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { EventSelectors } from '../event/event.selectors';\nimport { HypEventSummaries } from '../../model/public-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventSummaryService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {\n }\n\n list(): Observable<HypEventSummaries> {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n withLatestFrom(this.store.select(EventSelectors.filters)),\n mergeMap(([url, filters]) => {\n let params = new HttpParams();\n Object.keys(filters).forEach(filter => {\n filters[filter].forEach((filterValue) => {\n params = params.set(filter, filterValue);\n });\n });\n return this.httpClient.get<HypEventSummaries>(encodeURI(`${url}/events/summary`), { params });\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { EventSummaryActions } from './event-summary.actions';\nimport { EventSummaryService } from './event-summary.service';\n\n@Injectable()\nexport class EventSummaryEffects {\n loadSummaries$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventSummaryActions.load),\n debounceTime(200),\n mergeMap((action) =>\n this.eventSummaryService.list().pipe(\n map((summaries) => EventSummaryActions.loadSuccess({ summaries })),\n catchError((error) => [EventSummaryActions.loadFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private eventSummaryService: EventSummaryService,\n ) {\n }\n}\n","import { Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { Store, StoreModule } from '@ngrx/store';\nimport { eventFeatureKey, eventReducer } from './store/event/event.reducer';\nimport { EventEffects } from './store/event/event.effects';\nimport { EventDetailComponent } from './event/detail/event-detail.component';\nimport { hypervisorReducer, hypFeatureKey } from './store/hypervisor/hypervisor.reducer';\nimport { HypervisorEffects } from './store/hypervisor/hypervisor.effects';\nimport { HYP_BASE_CONFIG } from './general/base.token';\nimport { HypervisorActions } from './store/hypervisor/hypervisor.actions';\nimport { AsyncPipe, DatePipe, JsonPipe, KeyValuePipe, NgForOf, NgStyle } from '@angular/common';\nimport {\n PryCoreModule,\n PryDatePickerModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n} from '@provoly/dashboard';\nimport { enTranslations } from './general/i18n/en.translations';\nimport { frTranslations } from './general/i18n/fr.translations';\nimport { IconDisplayComponent } from './general/icon-display/icon-display.component';\nimport { EventIconPipe } from './general/icon-pipe/event-icon.pipe';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { EventListComponent } from './event/list/event-list.component';\nimport { FormsModule } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';\nimport { EventSummaryListComponent } from './event-summary/list/event-summary-list.component';\nimport { EventSummaryItemComponent } from './event-summary/item/event-summary-item.component';\nimport { EventSummaryEffects } from './store/event-summary/event-summary.effects';\nimport { eventSummaryFeatureKey, eventSummaryReducer } from './store/event-summary/event-summary.reducer';\nimport { EventSummaryPageComponent } from './event-summary/page/event-summary-page.component';\nimport { ForDatetimeLocalPipe } from './general/for-datetime-local-pipe/for-datetime-local.pipe';\nimport { StatusDisplayComponent } from './general/status-display/status-display.component';\nimport { ProgressDisplayComponent } from './general/progress-display/progress-display.component';\n\nconst components = [\n EventDetailComponent,\n EventListComponent,\n IconDisplayComponent,\n EventSummaryItemComponent,\n EventSummaryListComponent,\n EventSummaryPageComponent,\n EventIconPipe,\n ForDatetimeLocalPipe,\n StatusDisplayComponent,\n ProgressDisplayComponent\n];\n\n@NgModule({\n declarations: [\n ...components,\n ],\n imports: [\n StoreModule.forFeature(hypFeatureKey, hypervisorReducer),\n StoreModule.forFeature(eventFeatureKey, eventReducer),\n StoreModule.forFeature(eventSummaryFeatureKey, eventSummaryReducer),\n EffectsModule.forFeature([EventEffects, EventSummaryEffects, HypervisorEffects]),\n NgForOf,\n AsyncPipe,\n PryI18nModule,\n PryCoreModule,\n AsyncPipe,\n PryCoreModule,\n NgStyle,\n PryCheckboxModule,\n FormsModule,\n RouterLink,\n PrySinceDateModule,\n DatePipe,\n PryIconModule,\n KeyValuePipe,\n PrySelectModule,\n FormsModule,\n JsonPipe,\n PryDatePickerModule,\n ],\n exports: [\n ...components\n ],\n})\nexport class PvyHypervisorModule {\n static forRoot(options: { url?: string }): ModuleWithProviders<PvyHypervisorModule> {\n\n return {\n ngModule: PvyHypervisorModule,\n providers: [\n { provide: HYP_BASE_CONFIG, useValue: options },\n ],\n };\n }\n\n constructor(@Inject(HYP_BASE_CONFIG) private baseConfig: {\n url: string\n }, private store: Store<any>, private i18nService: PryI18nService) {\n this.store.dispatch(HypervisorActions.setUrl({ url: baseConfig.url }));\n this.i18nService.addLangObject('en', '@hvy', enTranslations);\n this.i18nService.addLangObject('fr', '@hvy', frTranslations);\n }\n}\n","/*\n * Public API Surface of hypervisor\n */\nexport * from './src/lib/event/public-api';\nexport * from './src/lib/event-summary/public-api';\nexport * from './src/lib/general/public-api';\nexport * from './src/lib/model/public-api';\nexport * from './src/lib/hypervisor.module';\nexport * from './src/lib/store/event/public-api';\nexport * from './src/lib/store/event-summary/public-api';\nexport * from './src/lib/store/equipment/public-api';\nexport * from './src/lib/store/hypervisor/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["internalReducer","feature","i2","i1","i3.EventIconPipe","i1.EquipmentService","i3","i4","i5.IconDisplayComponent","i6.StatusDisplayComponent","i7.ProgressDisplayComponent","i8.ForDatetimeLocalPipe","loading","i5","i6.IconDisplayComponent","i7.StatusDisplayComponent","i8","i3.IconDisplayComponent","i4.EventSummaryItemComponent","map","i4.EventSummaryListComponent","mergeMap","i2.EventService","i2.HypervisorService","i2.EventSummaryService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,gBAAgB,GAAG,CAAC,mBAAmB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe;;ACAnG,MAAA,mBAAmB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM;;ACE9C,MAAA,iBAAiB,GAAG;AAC/B,IAAA,MAAM,EAAE,YAAY,CAAC,yBAAyB,EAAE,KAAK,EAAoB,CAAC;;;ACArE,MAAM,aAAa,GAAG,eAAe;AAM/B,MAAA,eAAe,GAAa;AACvC,IAAA,GAAG,EAAE,iBAAiB;EACtB;AAEF,MAAMA,iBAAe,GAAG,aAAa,CACnC,eAAe,EACf,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC/C,IAAA,GAAG,KAAK;AACR,IAAA,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;CAC7B,CAAC,CAAC,CACJ,CAAC;AAEc,SAAA,iBAAiB,CAAC,KAAe,EAAE,MAAc,EAAA;AAC/D,IAAA,OAAOA,iBAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxC;;ACnBA,MAAMC,SAAO,GAAG,qBAAqB,CAAW,aAAa,CAAC,CAAC;AAC/D,MAAM,GAAG,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC;AAE7C,MAAA,YAAY,GAAG;aAC1BA,SAAO;IACP,GAAG;;;MCCQ,gBAAgB,CAAA;IAC3B,WACU,CAAA,UAAsB,EACtB,KAAiB,EAAA;QADjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KAE1B;AAED,IAAA,UAAU,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;AACxB,aAAA,IAAI,CACH,QAAQ,CAAC,CAAC,GAAG,KAAI;AACf,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAClC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAe,SAAS,CAAC,CAAG,EAAA,GAAG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;SACrF,CAAC,CACH,CAAC;KACL;8GAjBU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACDY,MAAA,aAAa,GAAG;IAC3B,EAAE,EAAE,CAAC,KAAmD,EAAE,KAAiB,KAAK,EAAE,CAAC,gBAAgB,CAAC;EACpG;MAKW,aAAa,CAAA;AACxB,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACpC;AAED,IAAA,SAAS,CAAC,KAAmD,EAAE,GAAG,IAAe,EAAA;QAC/E,OAAO,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5C;8GANU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAb,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,WAAW;AAClB,iBAAA,CAAA;;;MCPY,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,oFCPjC,8lBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDRa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,8lBAAA,EAAA,CAAA;8BAInB,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MEDK,sBAAsB,CAAA;AAJnC,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;QAEhD,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;QAC9B,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAClC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAgCrB,KAAA;IA9BC,IAAa,KAAK,CAAC,KAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,IAAa,UAAU,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,OAAO,CAAC,MAAc,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC/B;IAED,oBAAoB,GAAA;QAClB,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;KACzF;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;KAClF;8GArCU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,mJCPnC,olBAcA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDPa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,olBAAA,EAAA,CAAA;8BAKpB,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAMM,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAKO,UAAU,EAAA,CAAA;sBAAtB,KAAK;;;MEdK,wBAAwB,CAAA;AAJrC,IAAA,WAAA,GAAA;QAMW,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;AAEhC,KAAA;8GAJY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,8FCNrC,kgBAaA,EAAA,CAAA,CAAA,EAAA;;2FDPa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,kgBAAA,EAAA,CAAA;8BAKvB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEFK,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACpC;AAED,IAAA,SAAS,CAAC,YAAoB,EAAE,GAAG,IAAe,EAAA;QAChD,OAAO,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;KACrF;8GANU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAApB,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,kBAAkB;AACzB,iBAAA,CAAA;;;ACQK,MAAO,oBAAqB,SAAQ,wBAAwB,CAAA;IAWhE,IAAa,MAAM,CAAC,MAAyB,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;KACjD;;IAED,IAAa,SAAS,CAAC,SAAuB,EAAA;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;KAClC;IAED,IAAa,mBAAmB,CAAC,GAAQ,EAAA;AACvC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,WAAA,CAAoB,gBAAkC,EAAA;AACpD,QAAA,KAAK,EAAE,CAAC;QADU,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QA3BtD,IAAM,CAAA,MAAA,GAAc,EAAE,CAAC;QACvB,IAAU,CAAA,UAAA,GAAG,gBAAgB,CAAC;QAC9B,IAAa,CAAA,aAAA,GAAG,mBAAmB,CAAC;QACpC,IAAO,CAAA,OAAA,GAAsB,EAAE,CAAC;QAChC,IAAkB,CAAA,kBAAA,GAA+B,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAiD,CAAC;QAE7F,IAAsB,CAAA,sBAAA,GAA0B,EAAE,CAAC;AACzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAqD,CAAC;KAqBnG;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;KAC9F;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,sBAAsB,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,SAAS,CAAC;KAC5H;AAED,IAAA,MAAM,CAAC,CAAS,EAAA;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAClC;AAED,IAAA,WAAW,CAAC,KAAa,EAAE,IAAY,EAAE,MAAsB,EAAA;;AAE7D,QAAA,MAAM,QAAQ,GAAG,MAAM,YAAY,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;;AAEzE,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;YAE1C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;aACrC;;YAED,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;YAEhD,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;KACF;AAED,IAAA,MAAM,CAAC,KAAsB,EAAA;AAC3B,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,OAAO,CAAC;AACb,YAAA;gBACE,OAAO;AACL,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,OAAO,EAAE,IAAI;iBACd,CAAC;AACJ,YAAA,KAAK,QAAQ;gBACX,OAAO;AACL,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,OAAO,EAAE,IAAI;iBACd,CAAC;AACJ,YAAA,KAAK,UAAU;gBACb,OAAO;AACL,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,OAAO,EAAE,KAAK;iBACf,CAAC;SACL;KACF;IAED,eAAe,CAAC,KAAa,EAAE,MAAW,EAAA;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,SAAuB,KAAI;AAC1F,YAAA,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;gBAE5D,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AACnC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;iBACrC;;gBAED,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;gBACrD,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B;AACH,SAAC,CAAC,CAAC;KACJ;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAU,CAAC,GAAG,SAAS,CAAC,CAAC;KAC1G;8GA1HU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,wQCbjC,ypSA4KA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,oBAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/Ja,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,ypSAAA,EAAA,CAAA;kFASlB,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAGG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBAEM,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAMO,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAKO,mBAAmB,EAAA,CAAA;sBAA/B,KAAK;;;AE/BK,MAAA,YAAY,GAAG;AAC1B,IAAA,IAAI,EAAE,YAAY,CAAC,qBAAqB,EAAE,KAAK,EAAsB,CAAC;AACtE,IAAA,WAAW,EAAE,YAAY,CAAC,uCAAuC,EAAE,KAAK,EAGpE,CAAC;AACL,IAAA,WAAW,EAAE,YAAY,CAAC,iCAAiC,EAAE,KAAK,EAAqB,CAAC;AACxF,IAAA,MAAM,EAAE,YAAY,CAAC,yBAAyB,EAAE,KAAK,EAA4C,CAAC;AAClG,IAAA,MAAM,EAAE,YAAY,CAAC,oBAAoB,EAAE,KAAK,EAA0C,CAAC;AAC3F,IAAA,GAAG,EAAE,YAAY,CAAC,6BAA6B,EAAE,KAAK,EAAkB,CAAC;AACzE,IAAA,eAAe,EAAE,YAAY,CAAC,2CAA2C,EAAE,KAAK,EAAkB,CAAC;AACnG,IAAA,UAAU,EAAE,YAAY,CAAC,gDAAgD,EAAE,KAAK,EAG5E,CAAC;AACL,IAAA,UAAU,EAAE,YAAY,CAAC,0CAA0C,EAAE,KAAK,EAAqB,CAAC;AAChG,IAAA,IAAI,EAAE,YAAY,CAAC,oBAAoB,EAAE,KAAK,EAA8B,CAAC;AAC7E,IAAA,aAAa,EAAE,YAAY,CAAC,0CAA0C,EAAE,KAAK,EAA+B,CAAC;AAC7G,IAAA,WAAW,EAAE,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAAyD,CAAC;AACjH,IAAA,WAAW,EAAE,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAAqB,CAAC;;;AClBxE,MAAM,eAAe,GAAG,aAAa;AAc/B,MAAA,iBAAiB,GAAe;AAC3C,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,OAAO,EAAE,EAAE;EACX;AAEF,MAAMX,iBAAe,GAAG,aAAa,CACnC,iBAAiB,EACjB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACxC,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAI;AAC/D,IAAA,QAAQ;AACN,QAAA,GAAG,KAAK;AACR,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,EAAE;AAChC,QAAA,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,GAAG,MAAM,CAAC;AAC5D,KAAA,EAAE;AACL,CAAC,CAAC,EACF,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC/C,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,MAAM,EAAE,EAAE;AACX,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM;AAC/C,IAAA,GAAG,KAAK;IACR,OAAO;AACR,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM;AACvD,IAAA,GAAG,KAAK;AACR,IAAA,WAAW,EAAE,CAAC,UAAU,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,EAAc,CAAC;AAC7J,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM;AAChE,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,EAAE;AACZ,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM;AAC5D,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;CAC9B,CAAC,CAAC,CACJ,CAAC;AAEc,SAAA,YAAY,CAAC,KAAiB,EAAE,MAAc,EAAA;AAC5D,IAAA,OAAOA,iBAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxC;;AC/DA,MAAMC,SAAO,GAAG,qBAAqB,CAAa,eAAe,CAAC,CAAC;AACnE,MAAM,MAAM,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;AAChE,MAAM,YAAY,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC;AAC5E,MAAM,WAAW,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC;AAC1E,MAAMW,SAAO,GAAG,cAAc,CAACX,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;AAClE,MAAM,OAAO,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;AAClE,MAAM,OAAO,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;AAErD,MAAA,cAAc,GAAG;aAC5BA,SAAO;IACP,MAAM;IACN,WAAW;aACXW,SAAO;IACP,OAAO;IACP,OAAO;IACP,YAAY;;;ACVD,MAAA,UAAU,GAAG;AACxB,IAAA,EAAE,EAAE,CAAC,KAAwC,EAAE,KAAiB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;EACrF;AAMI,MAAO,kBAAmB,SAAQ,wBAAwB,CAAA;IAM9D,WAAoB,CAAA,KAAiB,EAAU,EAAc,EAAA;AAC3D,QAAA,KAAK,EAAE,CAAC;QADU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAH7D,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;AACxB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAIlB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;KACnE;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;aACvC,IAAI;;AAEH,QAAA,GAAG,CAAC,CAAC,CAAM,KAAI;AACb,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC;YAC/B,OAAO,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC;SACrE,CAAC,EACF,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,EAC9D,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,cAAc,GAAG,GAAG,CAAC,EACrE,SAAS,CAAC,GAAG,CAAC,CACf,CAAC,SAAS,CAAC,MAAK;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SACxD,CAAC,CAAC,CAAC;KACP;IAED,MAAM,CAAC,KAAsB,EAAE,MAAkB,EAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,CAAC,eAAe,EAAE,CAAC;KAC1B;8GAlCU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,6ECjB/B,isEAiDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAc,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDhCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,isEAAA,EAAA,CAAA;;;AEXf,MAAA,mBAAmB,GAAG;AACjC,IAAA,IAAI,EAAE,YAAY,CAAC,wBAAwB,CAAC;AAC5C,IAAA,WAAW,EAAE,YAAY,CAAC,oCAAoC,EAAE,KAAK,EAAoC,CAAC;AAC1G,IAAA,WAAW,EAAE,YAAY,CAAC,oCAAoC,EAAE,KAAK,EAAqB,CAAC;;;ACNtF,MAAM,cAAc,GAAG;IAC5B,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;IAC7B,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;IACrC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;CAC/B;;ACCM,MAAM,sBAAsB,GAAG,qBAAqB;AAO9C,MAAA,wBAAwB,GAAsB;AACzD,IAAA,SAAS,EAAE,EAAE,GAAG,cAAc,EAAE;AAChC,IAAA,OAAO,EAAE,KAAK;EACd;AAEF,MAAM,eAAe,GAAG,aAAa,CACnC,wBAAwB,EACxB,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC/C,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM;AAC7D,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;IACd,SAAS;AACV,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACtD,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;CACf,CAAC,CAAC,CACJ,CAAC;AAEc,SAAA,mBAAmB,CAAC,KAAwB,EAAE,MAAc,EAAA;AAC1E,IAAA,OAAO,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxC;;ACjCA,MAAM,OAAO,GAAG,qBAAqB,CAAoB,sBAAsB,CAAC,CAAC;AACjF,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AACtE,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;AAErD,MAAA,qBAAqB,GAAG;IACnC,OAAO;IACP,SAAS;IACT,OAAO;;;MCDI,yBAAyB,CAAA;AAKpC,IAAA,WAAA,CAAmB,KAAY,EAAA;QAAZ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QAHtB,IAAQ,CAAA,QAAA,GAAa,EAAE,CAAC;QACjC,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;KAGvB;8GANU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,gHCTtC,29BA2BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDlBa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,29BAAA,EAAA,CAAA;4EAIP,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAChB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEDK,yBAAyB,CAAA;IAOpC,WAAoB,CAAA,KAAiB,EAAU,MAAc,EAAA;QAAzC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QANpD,IAAM,CAAA,MAAA,GAAsB,EAAE,CAAC;QAC/B,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;QACpB,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;QACpB,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;QAC3B,IAAY,CAAA,YAAA,GAAa,EAAE,CAAC;KAGpC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC;KACnF;AAED,IAAA,cAAc,CAAC,MAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KAC7E;8GAlBU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,4MCVtC,q+BA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDlBa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,q+BAAA,EAAA,CAAA;mGAIzB,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;;;AEAF,MAAO,yBAA0B,SAAQ,wBAAwB,CAAA;AAUrE,IAAA,WAAA,CAAoB,KAAiB,EAAA;AACnC,QAAA,KAAK,EAAE,CAAC;QADU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAT5B,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAsB;YAC7B,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YAC7B,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACrC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;SAC/B,CAAC;QAEF,IAAe,CAAA,eAAA,GAAG,CAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAIlD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CACxEC,KAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CACvD,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AACzE,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC5B,CAAC,CACH,CAAC;KACH;AAED,IAAA,mBAAmB,CAAC,MAAc,EAAA;QAChC,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;KACjD;IAED,SAAS,GAAA;AACP,QAAA,OAAO,CAAC,CAAC;KACV;8GA/BU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhB,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,yHCftC,itCA8BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDfa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,itCAAA,EAAA,CAAA;4EAIzB,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEdK,eAAe,GAAG,IAAI,cAAc,CAAS,aAAa;;ACF1D,MAAA,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE;AACL,YAAA,WAAW,EAAE,aAAa;AAC1B,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,QAAQ,EAAE,UAAU;AACrB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA;AACD,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,SAAS,EAAE,qBAAqB;AAChC,YAAA,eAAe,EAAE,kBAAkB;AACnC,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,oBAAoB,EAAE,mBAAmB;AACzC,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,GAAG,EAAE;AACH,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,KAAK,EAAE;AACL,oBAAA,WAAW,EAAE,aAAa;AAC1B,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,MAAM,EAAE,aAAa;AACrB,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,gBAAgB;AACtB,wBAAA,WAAW,EAAE,oBAAoB;AAClC,qBAAA;AACF,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,MAAM,EAAE,kBAAkB;AAC1B,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE,kBAAkB;AACxB,oBAAA,SAAS,EAAE,YAAY;AACxB,iBAAA;AACF,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,aAAa,EAAE,eAAe;AAC/B,aAAA;AACF,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,SAAS,EAAE,iCAAiC;AAC5C,YAAA,YAAY,EAAE;AACZ,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,GAAG,EAAE,KAAK;AACX,aAAA;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,QAAQ,EAAE,sBAAsB;AACjC,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;AACF,KAAA;;;AC9EU,MAAA,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,QAAQ,EAAE,WAAW;AACtB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,WAAW,EAAE,UAAU;AACvB,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA;AACD,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,mBAAmB;AAC3B,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,eAAe,EAAE,yBAAyB;AAC1C,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,YAAY,EAAE,kBAAkB;AAChC,YAAA,oBAAoB,EAAE,8BAA8B;AACpD,YAAA,SAAS,EAAE,iBAAiB;AAC5B,YAAA,GAAG,EAAE;AACH,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,KAAK,EAAE;AACL,oBAAA,WAAW,EAAE,aAAa;AAC1B,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,MAAM,EAAE,cAAc;AACtB,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,KAAK,EAAE,8BAA8B;AACrC,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,8BAA8B;AACpC,wBAAA,WAAW,EAAE,2BAA2B;AACzC,qBAAA;AACF,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,MAAM,EAAE,wBAAwB;AAChC,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,SAAS,EAAE,oBAAoB;AAChC,iBAAA;AACF,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,gBAAA,MAAM,EAAE,iBAAiB;AACzB,gBAAA,cAAc,EAAE,qBAAqB;AACrC,gBAAA,WAAW,EAAE,cAAc;AAC3B,gBAAA,aAAa,EAAE,eAAe;AAC/B,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,MAAM,EAAE,OAAO;AACf,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA;AACF,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,SAAS,EAAE,0CAA0C;AACrD,YAAA,YAAY,EAAE;AACZ,gBAAA,GAAG,EAAE,UAAU;AACf,gBAAA,WAAW,EAAE,UAAU;AACvB,gBAAA,IAAI,EAAE,UAAU;AACjB,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,MAAM,EAAE,OAAO;AACf,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,GAAG,EAAE,MAAM;AACZ,aAAA;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,QAAQ,EAAE,wBAAwB;AACnC,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,IAAI,EAAE,SAAS;AAChB,SAAA;AACF,KAAA;;;ACrFU,MAAA,cAAc,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM;;ICA/C,aAIX;AAJD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,YAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACV,CAAC,EAJW,YAAY,KAAZ,YAAY,GAIvB,EAAA,CAAA,CAAA;;ACJD;;AAEG;;MCUU,YAAY,CAAA;IACvB,WACU,CAAA,UAAsB,EACtB,KAAiB,EAAA;QADjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KAE1B;IAED,IAAI,CAAC,SAAS,GAAG,CAAC,EAAA;QAChB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;aACxB,IAAI,CACH,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EACzD,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAI;AAC1B,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,IAAG;gBACpC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;oBACtC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC3C,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,YAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC;AACxD,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAyB,SAAS,CAAC,CAAG,EAAA,GAAG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;SAC5F,CAAC,CACH,CAAC;KACL;AAED,IAAA,GAAG,CAAC,EAAU,EAAA;QACZ,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;AACxB,aAAA,IAAI,CACH,QAAQ,CAAC,CAAC,GAAG,KAAI;AACf,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAkB,SAAS,CAAC,CAAA,EAAG,GAAG,CAAc,WAAA,EAAA,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC;SAClF,CAAC,CACH,CAAC;KACL;AAED,IAAA,YAAY,CAAC,EAAU,EAAA;QACrB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;AACxB,aAAA,IAAI,CACH,QAAQ,CAAC,CAAC,GAAG,KAAI;AACf,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAe,SAAS,CAAC,CAAA,EAAG,GAAG,CAAkB,eAAA,EAAA,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC;SACnF,CAAC,CACH,CAAC;KACL;AAED,IAAA,IAAI,CAAC,KAAsB,EAAA;QACzB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;AACxB,aAAA,IAAI,CACH,QAAQ,CAAC,CAAC,GAAG,KAAI;YACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAkB,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,QAAA,EAAW,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAC7G,CAAC,CACH,CAAC;KACL;AAED,IAAA,aAAa,CAAC,SAAuB,EAAA;QACnC,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;AACxB,aAAA,IAAI,CACH,QAAQ,CAAC,CAAC,GAAG,KAAI;AACf,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAe,SAAS,CAAC,CAAA,EAAG,GAAG,CAAa,WAAA,CAAA,CAAC,EAAE,SAAS,CAAC,CAAC;SACtF,CAAC,CACH,CAAC;KACL;8GAhEU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCDY,YAAY,CAAA;AAoEvB,IAAA,WAAA,CACU,QAAiB,EACjB,YAA0B,EAC1B,KAAY,EAAA;QAFZ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;AAtEtB,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,MACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EACzB,YAAY,CAAC,GAAG,CAAC,EACjB,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,EACxG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAC7CmB,UAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,KAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAC/DF,KAAG,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,EACzG,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACpE,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,MACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EACxB,YAAY,CAAC,GAAG,CAAC,EACjBE,UAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CACnCF,KAAG,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAClD,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACnE,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAC,MACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,EACpC,YAAY,CAAC,GAAG,CAAC,EACjBE,UAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAC5CF,KAAG,CAAC,CAAC,SAAS,KAAK,YAAY,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAC1D,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACnE,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,MACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EACzB,YAAY,CAAC,GAAG,CAAC,EACjBE,UAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CACvCF,KAAG,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EACnD,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACpE,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,MAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,EAClC,YAAY,CAAC,GAAG,CAAC,EACjBE,UAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CACpDF,KAAG,CAAC,CAAC,SAAS,KAAK,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAC3D,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACpE,CACF,CACF,CACF,CAAC;KAOD;8GAzEU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhB,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAmB,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAhB,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAZ,YAAY,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;MCFE,iBAAiB,CAAA;IAC5B,WACU,CAAA,UAAsB,EACtB,KAAiB,EAAA;QADjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACvB;8GAJO,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCDY,iBAAiB,CAAA;IAE5B,WACU,CAAA,QAAiB,EACjB,YAA+B,EAAA;QAD/B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAmB;KAExC;8GANU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAoB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;MCOE,mBAAmB,CAAA;IAC9B,WACU,CAAA,UAAsB,EACtB,KAAiB,EAAA;QADjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KAE1B;IAED,IAAI,GAAA;QACF,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;aACxB,IAAI,CACH,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EACzD,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAI;AAC1B,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,IAAG;gBACpC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;oBACtC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC3C,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAoB,SAAS,CAAC,CAAG,EAAA,GAAG,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;SAC/F,CAAC,CACH,CAAC;KACL;8GAtBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAArB,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCHY,mBAAmB,CAAA;IAc9B,WACU,CAAA,QAAiB,EACjB,mBAAwC,EAAA;QADxC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AAflD,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,MAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAChC,YAAY,CAAC,GAAG,CAAC,EACjBmB,UAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,IAAI,CAClCF,KAAG,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAClE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC3E,CACF,CACF,CACF,CAAC;KAMD;8GAlBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhB,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;AC+BX,MAAM,UAAU,GAAG;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,oBAAoB;IACpB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,aAAa;IACb,oBAAoB;IACpB,sBAAsB;IACtB,wBAAwB;CACzB,CAAC;MAkCW,mBAAmB,CAAA;IAC9B,OAAO,OAAO,CAAC,OAAyB,EAAA;QAEtC,OAAO;AACL,YAAA,QAAQ,EAAE,mBAAmB;AAC7B,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;AAChD,aAAA;SACF,CAAC;KACH;AAED,IAAA,WAAA,CAA6C,UAE5C,EAAU,KAAiB,EAAU,WAA2B,EAAA;QAFpB,IAAU,CAAA,UAAA,GAAV,UAAU,CAEtD;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;AAC/D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;KAC9D;AAjBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAWV,eAAe,EAAA,EAAA,EAAA,KAAA,EAAArB,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAXxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBA5C9B,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;YACpB,yBAAyB;YACzB,yBAAyB;YACzB,yBAAyB;YACzB,aAAa;YACb,oBAAoB;YACpB,sBAAsB;AACtB,YAAA,wBAAwB,mHAYtB,OAAO;YACP,SAAS;YACT,aAAa;YACb,aAAa;YACb,SAAS;YACT,aAAa;YACb,OAAO;YACP,iBAAiB;YACjB,WAAW;YACX,UAAU;YACV,kBAAkB;YAClB,QAAQ;YACR,aAAa;YACb,YAAY;YACZ,eAAe;YACf,WAAW;YACX,QAAQ;AACR,YAAA,mBAAmB,aAtCrB,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;YACpB,yBAAyB;YACzB,yBAAyB;YACzB,yBAAyB;YACzB,aAAa;YACb,oBAAoB;YACpB,sBAAsB;YACtB,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAmCb,mBAAmB,EAAA,OAAA,EAAA,CA3B5B,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,iBAAiB,CAAC;AACxD,YAAA,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC;AACrD,YAAA,WAAW,CAAC,UAAU,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;YACnE,aAAa,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;YAGhF,aAAa;YACb,aAAa;YAEb,aAAa;YAEb,iBAAiB;YACjB,WAAW;YAEX,kBAAkB;YAElB,aAAa;YAEb,eAAe;YACf,WAAW;YAEX,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhC/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;AACZ,wBAAA,GAAG,UAAU;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,iBAAiB,CAAC;AACxD,wBAAA,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC;AACrD,wBAAA,WAAW,CAAC,UAAU,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;wBACnE,aAAa,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;wBAChF,OAAO;wBACP,SAAS;wBACT,aAAa;wBACb,aAAa;wBACb,SAAS;wBACT,aAAa;wBACb,OAAO;wBACP,iBAAiB;wBACjB,WAAW;wBACX,UAAU;wBACV,kBAAkB;wBAClB,QAAQ;wBACR,aAAa;wBACb,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,QAAQ;wBACR,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,GAAG,UAAU;AACd,qBAAA;AACF,iBAAA,CAAA;;0BAYc,MAAM;2BAAC,eAAe,CAAA;;;AC7FrC;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"provoly-hypervisor.mjs","sources":["../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-category.type.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-criticality.type.ts","../../../../projects/provoly/hypervisor/src/lib/model/domains.constant.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/store/equipment/equipment.service.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-pipe/event-icon.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-display/icon-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/icon-display/icon-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/status-display/status-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/status-display/status-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/progress-display/progress-display.component.ts","../../../../projects/provoly/hypervisor/src/lib/general/progress-display/progress-display.component.html","../../../../projects/provoly/hypervisor/src/lib/general/for-datetime-local-pipe/for-datetime-local.pipe.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-detail.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/detail/event-detail.component.html","../../../../projects/provoly/hypervisor/src/lib/store/event/event.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/event/list/event-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/event/list/event-list.component.html","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.actions.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.const.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.reducer.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.selectors.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/item/event-summary-item.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/item/event-summary-item.component.html","../../../../projects/provoly/hypervisor/src/lib/event-summary/list/event-summary-list.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/list/event-summary-list.component.html","../../../../projects/provoly/hypervisor/src/lib/event-summary/page/event-summary-page.component.ts","../../../../projects/provoly/hypervisor/src/lib/event-summary/page/event-summary-page.component.html","../../../../projects/provoly/hypervisor/src/lib/general/base.token.ts","../../../../projects/provoly/hypervisor/src/lib/general/i18n/en.translations.ts","../../../../projects/provoly/hypervisor/src/lib/general/i18n/fr.translations.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-status.type.ts","../../../../projects/provoly/hypervisor/src/lib/model/event/hyp-event-type.ts","../../../../projects/provoly/hypervisor/src/lib/model/public-api.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/event/event.effects.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/hypervisor/hypervisor.effects.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.service.ts","../../../../projects/provoly/hypervisor/src/lib/store/event-summary/event-summary.effects.ts","../../../../projects/provoly/hypervisor/src/lib/hypervisor.module.ts","../../../../projects/provoly/hypervisor/public-api.ts","../../../../projects/provoly/hypervisor/provoly-hypervisor.ts"],"sourcesContent":["export const HypEventCategory = ['ALERT_MALFUNCTION', 'REPORT', 'OPERATOR_EVENT', 'ALERT_LIMIT', 'MANIFESTATION'];\n","export const HypEventCriticality = ['LOW', 'MEDIUM', 'HIGH'];\n\n","export const DOMAINS: { values: string[] } = {\n values: ['DOMAIN1', 'DOMAIN2'],\n};\n","import { createAction, props } from '@ngrx/store';\n\nexport const HypervisorActions = {\n setUrl: createAction('[Event] Set Backend Url', props<{ url?: string }>())\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { HypervisorActions } from './hypervisor.actions';\n\nexport const hypFeatureKey = '@hvy/general';\n\nexport interface HypState {\n url: string;\n}\n\nexport const hypInitialState: HypState = {\n url: '/api/hypervisor',\n};\n\nconst internalReducer = createReducer<HypState>(\n hypInitialState,\n on(HypervisorActions.setUrl, (state, action) => ({\n ...state,\n url: action.url ?? state.url,\n })),\n);\n\nexport function hypervisorReducer(state: HypState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { hypFeatureKey, HypState } from './hypervisor.reducer';\n\n\nconst feature = createFeatureSelector<HypState>(hypFeatureKey);\nconst url = createSelector(feature, (state) => state.url);\n\nexport const HypSelectors = {\n feature,\n url\n};\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { HypEquipment } from '../../model/hyp-equipment.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EquipmentService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>,\n ) {\n }\n\n findByName(name: string): Observable<HypEquipment> {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n let params = new HttpParams();\n params = params.set('name', name);\n return this.httpClient.get<HypEquipment>(encodeURI(`${url}/equipment`), { params });\n }),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { HypEvent } from '../../model/event/hyp-event.interface';\nimport { Store } from '@ngrx/store';\nimport { DEFAULT_ICON_URL } from '@provoly/dashboard';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\n\nexport const EVENT_TO_ICON = {\n fn: (event: HypEvent | HypEventSummary | HypEventDetails, store: Store<any>) => of(DEFAULT_ICON_URL),\n};\n\n@Pipe({\n name: 'eventIcon',\n})\nexport class EventIconPipe implements PipeTransform {\n constructor(private store: Store<any>) {\n }\n\n transform(value: HypEvent | HypEventSummary | HypEventDetails, ...args: unknown[]): Observable<string> {\n return EVENT_TO_ICON.fn(value, this.store);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { HypEvent } from '../../model/event/hyp-event.interface';\n\n@Component({\n selector: 'hvy-icon-display',\n templateUrl: './icon-display.component.html'\n})\nexport class IconDisplayComponent {\n @Input() event!: HypEvent;\n}\n","<div class=\"\n m-hvy-event-summary-item__event-icon-container\n -hvy-{{ event.criticality.toString().toLowerCase()}}\n -hvy-{{event.type.toString().toLowerCase()}}\n \">\n <span\n class=\"m-hvy-event-summary-item__event-icon a-icon\"\n [ngStyle]=\"{\n 'mask-image': 'url(' + (event | eventIcon | async | getSecuredImage | async) + ')',\n '-webkit-mask-image': 'url(' + (event | eventIcon | async | getSecuredImage | async) + ')'\n }\"\n aria-hidden=\"true\"\n focusable=\"false\"\n ></span>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\n\n@Component({\n selector: 'hvy-status-display',\n templateUrl: './status-display.component.html',\n})\nexport class StatusDisplayComponent {\n\n @Output() modified = new EventEmitter<string>();\n private _event!: HypEventDetails;\n targetStatuses: string[] = [];\n targetsDisplayed: boolean = false;\n _modifiable = false;\n\n @Input() set event(event: HypEventDetails) {\n this._event = event;\n this.updateTargetStatuses();\n }\n\n @Input() set modifiable(modifiable: boolean) {\n this._modifiable = modifiable;\n this.updateTargetStatuses();\n }\n\n get modifiable() {\n return this._modifiable;\n }\n\n get event() {\n return this._event;\n }\n\n trigger(status: string) {\n this.modified.next(status);\n this.targetsDisplayed = false;\n }\n\n updateTargetStatuses() {\n this.targetStatuses = (this.modifiable && this.event.status !== 'DONE') ? ['DONE'] : [];\n }\n\n toggle() {\n this.targetsDisplayed = this.targetStatuses.length > 0 && !this.targetsDisplayed;\n }\n}\n","<span class=\"a-chip -md -{{event.status}} a-chip-status\" (click)=\"toggle()\" >\n {{ '@hvy.event.status.' + event.status | i18n }}\n @if (targetStatuses.length > 0) {\n <pry-icon iconSvg=\"chevron_bottom\" [width]=\"10\" [height]=\"10\"></pry-icon>\n }\n</span>\n@if (targetsDisplayed) {\n <div class=\"a-chip-status__target\">\n <div class=\"a-chip-status__target__filler\"></div>\n @for (status of targetStatuses;track status) {\n <div class=\"a-chip-status__target__item\" (click)=\"trigger(status)\">{{ '@hvy.event.status.' + status | i18n }}</div>\n }\n </div>\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvy-progress-display',\n templateUrl: './progress-display.component.html',\n})\nexport class ProgressDisplayComponent {\n\n @Input() progress: number = 50;\n\n}\n","<div class=\"o-progressbar\">\n <div class=\"o-progressbar__header\">\n <div>0%</div>\n @if (progress > 0 && progress < 100) {\n <div [style.flex-grow]=\"progress\" class=\"-value\">{{ progress }}%</div>\n }\n <div [style.flex-grow]=\"progress === 100 ? 100 : 100 - progress\">100%</div>\n </div>\n <div class=\"o-progressbar__value\">\n <div [style.flex-grow]=\"progress\" class=\"-filled\"></div>\n <div [style.flex-grow]=\"100 - progress\" class=\"-empty\"></div>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\n\n@Pipe({\n name: 'forDateTimeLocal',\n})\nexport class ForDatetimeLocalPipe implements PipeTransform {\n constructor(private store: Store<any>) {\n }\n\n transform(completeDate: string, ...args: unknown[]): string {\n return completeDate ? completeDate.substring(0, completeDate.lastIndexOf(':')) : '';\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypEventCategory } from '../../model/event/hyp-event-category.type';\nimport { HypEventCriticality } from '../../model/event/hyp-event-criticality.type';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEquipment } from '../../model/hyp-equipment.interface';\nimport { EquipmentService } from '../../store/equipment/equipment.service';\nimport { DOMAINS } from '../../model/domains.constant';\n\n@Component({\n selector: 'hvy-event-detail',\n templateUrl: './event-detail.component.html',\n})\nexport class EventDetailComponent extends SubscriptionnerDirective {\n opened: boolean[] = [];\n categories = HypEventCategory;\n criticalities = HypEventCriticality;\n _events: HypEventDetails[] = [];\n eventModifications: Partial<HypEventDetails>[] = [];\n @Output() modifiedEvents = new EventEmitter<[Partial<HypEventDetails>, HypEventDetails][]>();\n _procedure?: HypProcedure;\n procedureModifications: Partial<HypProcedure> = {};\n @Output() modifiedProcedure = new EventEmitter<[Partial<HypProcedure>, HypProcedure] | undefined>();\n protected readonly DOMAINS = DOMAINS.values;\n\n @Input() set events(events: HypEventDetails[]) {\n this._events = events.filter(ev => !!ev);\n this.eventModifications = new Array(this._events.length);\n this.opened = events.length === 1 ? [true] : [];\n };\n\n @Input() set procedure(procedure: HypProcedure) {\n this._procedure = procedure;\n this.procedureModifications = {};\n }\n\n @Input() set cancelModifications(evt: any) {\n this.eventModifications = new Array(this._events.length);\n this.procedureModifications = {};\n this._outputModifications();\n }\n\n constructor(private equipmentService: EquipmentService) {\n super();\n }\n\n get events() {\n return this._events.map((evt, idx) => ({ ...evt, ...(this.eventModifications[idx] ?? {}) }));\n }\n\n get procedure(): HypProcedure | undefined {\n return this._procedure ? ({ ...this._procedure, ...(this.procedureModifications ?? {}), events: this.events }) : undefined;\n }\n\n toggle(i: number) {\n this.opened[i] = !this.opened[i];\n }\n\n modifyEvent(index: number, prop: string, $event: Event | string) {\n // @ts-ignore\n const newValue = $event instanceof Event ? $event.target?.value : $event;\n // @ts-ignore\n if (this._events[index][prop] !== newValue) {\n\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n // @ts-ignore\n this.eventModifications[index][prop] = newValue;\n\n this._outputModifications();\n }\n }\n\n access(event: HypEventDetails) {\n switch (event.type) {\n case 'ALERT':\n default:\n return {\n name: true,\n category: true,\n criticality: true,\n description: true,\n address: true,\n source: true,\n eqName: true,\n eqEntity: true,\n startDate: true,\n endDate: true,\n };\n case 'REPORT':\n return {\n name: false,\n category: true,\n criticality: false,\n description: true,\n address: false,\n source: true,\n eqName: false,\n eqEntity: true,\n startDate: true,\n endDate: true,\n };\n case 'OPERATOR':\n return {\n name: false,\n category: false,\n criticality: false,\n description: false,\n address: false,\n source: false,\n eqName: false,\n eqEntity: false,\n startDate: false,\n endDate: false,\n };\n }\n }\n\n changeEquipment(index: number, $event: any) {\n this.equipmentService.findByName($event.target.value).subscribe((equipment: HypEquipment) => {\n if (equipment && this._events[index].name !== equipment.name) {\n\n if (!this.eventModifications[index]) {\n this.eventModifications[index] = {};\n }\n // @ts-ignore\n this.eventModifications[index].equipment = equipment;\n this._outputModifications();\n }\n });\n }\n\n _outputModifications() {\n this.modifiedEvents.next(this._events.map((ev, idx) => [this.eventModifications[idx], ev]));\n this.modifiedProcedure.next(this.procedure ? [this.procedureModifications, this.procedure!] : undefined);\n }\n}\n","<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ '@hvy.event.log.name' | i18n }}</h1>\n <button class=\"a-btn a-btn--secondary -fix-right\">{{ '@hvy.event.log.event.close' | i18n }}</button>\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events;track event.id;let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon [iconSvg]=\"!opened[idx] ? 'chevron_bottom' : 'chevron_top'\" (click)=\"toggle(idx)\"></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display [event]=\"event\" [modifiable]=\"true\"></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n <div>{{ '@hvy.event.log.event.description' | i18n }}: {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }}: {{ event.address }}</div>\n @if (opened[idx]) {\n @if (access(event);as accessValue) {\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span></td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\" [readonly]=\"accessValue.name\"></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.category\" [items]=\"categories\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\" [disabled]=\"accessValue.category\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span></td>\n <td>\n <pry-select [ngModel]=\"event.criticality\" [items]=\"criticalities\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span></td>\n <td><textarea [ngModel]=\"event.description\" class=\"a-form-field\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"></textarea></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }}</td>\n <td><textarea [ngModel]=\"event.address\" class=\"a-form-field\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"></textarea></td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.externalSourceRef ?? ''\"\n [readonly]=\"accessValue.source\" (change)=\"modifyEvent(idx, 'source', $event)\"></td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }}</td>\n <td>\n <input type=\"text\" class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }}</td>\n <td><input type=\"text\" class=\"a-form-field\" [value]=\"event.equipment?.entity ?? ''\"\n readonly></td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}</td>\n <td>\n <pry-select [items]=\"DOMAINS\" [ngModel]=\"event.domain\" i18nPrefix=\"@hvy.event.domain.\"></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.startDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.startDate | forDateTimeLocal\"\n [readonly]=\"accessValue.startDate\" (change)=\"modifyEvent(idx, 'startDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.endDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.endDate | forDateTimeLocal\"\n [readonly]=\"accessValue.endDate\" (change)=\"modifyEvent(idx, 'endDate', $event)\">\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\" readonly>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }}</td>\n <td>\n <input type=\"datetime-local\" class=\"a-form-field\" [value]=\"event.closeDate | forDateTimeLocal\"\n readonly>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }}</h3>\n <textarea [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\">{{ '@hvy.action.send' | i18n }}</button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>{{ '@hvy.event.log.procedure.name' | i18n }}</h2>\n </div>\n <div>\n <p>{{ procedure.name }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"procedure.progress\"></hvy-progress-display>\n </div>\n <div class=\"o-hvy-events-detail__procedure__actions\">\n @for (action of procedure.actions;track action.id) {\n <div class=\"o-hvy-events-detail__procedure__actions__action\">\n <pry-icon iconSvg=\"six_dot\"></pry-icon>\n <pry-checkbox [ngModel]=\"action.status === 'DONE'\"></pry-checkbox>\n <div>{{ action.name }}</div>\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </div>\n } @empty {\n <div>\n {{ '@hvy.event.log.procedure.noAction' | i18n }}\n </div>\n }\n </div>\n <div>\n <button class=\"a-btn a-btn--primary\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@hvy.event.log.procedure.addAction' | i18n }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\n\nexport const EventActions = {\n load: createAction('[Event] Load Events', props<{ next?: boolean }>()),\n loadSuccess: createAction('[Event Api] (bus) Load Events Success', props<{\n events: HypEventDetails[],\n startingFrom?: number\n }>()),\n loadFailure: createAction('[Event Api] Load Events Failure', props<{ error: string }>()),\n filter: createAction('[Event Api] Set filters', props<{ filters: { [key: string]: string[] } }>()),\n select: createAction('[Event Api] Select', props<{ cumulative: boolean, ids: string[] }>()),\n get: createAction('[Event] Load specific Event', props<{ id: string }>()),\n getForProcedure: createAction('[Event] Load specific Event for procedure', props<{ id: string }>()),\n getSuccess: createAction('[Event Api] (bus) Get Events/Procedure Success', props<{\n event?: HypEventDetails,\n procedure?: HypProcedure\n }>()),\n getFailure: createAction('[Event Api] Get Events/Procedure Failure', props<{ error: string }>()),\n save: createAction('[Event] Save Event', props<{ event: HypEventDetails }>()),\n saveProcedure: createAction('[Event] Save Procedure and linked Events', props<{ procedure: HypProcedure }>()),\n saveSuccess: createAction('[Event] Save success', props<{ event?: HypEventDetails, procedure?: HypProcedure }>()),\n saveFailure: createAction('[Event] Save failure', props<{ error: string }>()),\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { EventActions } from './event.actions';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\n\nexport const eventFeatureKey = '@hvy/event';\n\nexport interface EventState {\n events: HypEventDetails[];\n noMoreEvents: boolean;\n loading: boolean;\n filters: { [key: string]: string[] },\n selectedIds: string[];\n details: {\n event?: HypEventDetails;\n procedure?: HypProcedure;\n }\n}\n\nexport const eventInitialState: EventState = {\n events: [],\n noMoreEvents: false,\n loading: false,\n filters: {},\n selectedIds: [],\n details: {},\n};\n\nconst internalReducer = createReducer<EventState>(\n eventInitialState,\n on(EventActions.load, (state, action) => ({\n ...state,\n loading: true,\n })),\n on(EventActions.loadSuccess, (state, { events, startingFrom }) => {\n return ({\n ...state,\n loading: false,\n noMoreEvents: events.length < 20,\n events: [...state.events.slice(0, startingFrom), ...events],\n });\n }),\n on(EventActions.loadFailure, (state, action) => ({\n ...state,\n loading: false,\n events: [],\n })),\n on(EventActions.filter, (state, { filters }) => ({\n ...state,\n filters,\n })),\n on(EventActions.select, (state, { ids, cumulative }) => ({\n ...state,\n selectedIds: !cumulative ? ids : [...state.selectedIds, ...ids].reduce((p, c) => p.indexOf(c) === -1 ? [...p, c] : p.filter(p1 => p1 !== c), [] as string[]),\n })),\n on(EventActions.get, EventActions.getForProcedure, (state, _) => ({\n ...state,\n details: {},\n })),\n on(EventActions.getSuccess, (state, { event, procedure }) => ({\n ...state,\n details: { event, procedure },\n })),\n);\n\nexport function eventReducer(state: EventState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { eventFeatureKey, EventState } from './event.reducer';\n\n\nconst feature = createFeatureSelector<EventState>(eventFeatureKey);\nconst events = createSelector(feature, (state) => state.events);\nconst noMoreEvents = createSelector(feature, (state) => state.noMoreEvents);\nconst selectedIds = createSelector(feature, (state) => state.selectedIds);\nconst loading = createSelector(feature, (state) => state.loading);\nconst filters = createSelector(feature, (state) => state.filters);\nconst details = createSelector(feature, (state) => state.details);\n\nexport const EventSelectors = {\n feature,\n events,\n selectedIds,\n loading,\n filters,\n details,\n noMoreEvents\n};\n","import { AfterViewInit, Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { auditTime, filter, fromEvent, map, Observable, withLatestFrom } from 'rxjs';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\n\nexport const EVENT_LINK = {\n fn: (event: HypEventDetails | HypEventSummary, store: Store<any>) => ['./', event.id],\n};\n\n@Component({\n selector: 'hvy-event-list',\n templateUrl: './event-list.component.html',\n})\nexport class EventListComponent extends SubscriptionnerDirective implements AfterViewInit {\n events$: Observable<HypEventDetails[]>;\n selectedIds$: Observable<string[]>;\n EVENT_LINK = EVENT_LINK;\n _store = this.store;\n\n constructor(private store: Store<any>, private el: ElementRef) {\n super();\n this.store.dispatch(EventActions.load({}));\n this.events$ = this.store.select(EventSelectors.events);\n this.selectedIds$ = this.store.select(EventSelectors.selectedIds);\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n fromEvent(this.el.nativeElement, 'scroll')\n .pipe(\n // Are we close to end\n map((e: any) => {\n const target = e.currentTarget;\n return target.scrollHeight - target.offsetHeight - target.scrollTop;\n }),\n withLatestFrom(this.store.select(EventSelectors.noMoreEvents)),\n filter(([remaningScroll, noMore]) => !noMore && remaningScroll < 200),\n auditTime(200),\n ).subscribe(() => {\n this.store.dispatch(EventActions.load({ next: true }));\n }));\n }\n\n select(event: HypEventDetails, $event: MouseEvent) {\n this.store.dispatch(EventActions.select({ ids: [event.id], cumulative: true }));\n $event.preventDefault();\n $event.stopPropagation();\n }\n}\n","<table class=\"o-hvy-events-table\">\n <thead>\n <tr class=\"o-hvy-events-table__header\">\n <th></th>\n <th>{{ '@hvy.event.criticality.name' | i18n }}</th>\n <th>{{ '@hvy.event.name' | i18n }}</th>\n <th>{{ '@hvy.event.category.name' | i18n }}</th>\n <th>{{ '@hvy.event.address' | i18n }}</th>\n <th>{{ '@hvy.event.creationDate' | i18n }}</th>\n <th>{{ '@hvy.event.lastModificationDate' | i18n }}</th>\n <th>{{ '@hvy.event.status.name' | i18n }}</th>\n <th>{{ '@hvy.procedure.progress' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr class=\"o-hvy-events-table__line\" *ngFor=\"let event of events$|async\" (click)=\"select(event, $event)\">\n <td class=\"o-hvy-events-table__line__cell\">\n <pry-checkbox [ngModel]=\"(selectedIds$|async)!.includes(event.id)\"></pry-checkbox>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <div class=\"o-hvy-events-table__line__cell__name__main\">{{ event.name }}</div>\n <div\n class=\"o-hvy-events-table__line__cell__name__sub\">{{ event.equipment?.name ? event.equipment?.name : '' }}\n </div>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">{{ '@hvy.event.category.' + event.category | i18n }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.address }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.creationDate| sinceDate: { onlyLocale: true } }}</td>\n <td class=\"o-hvy-events-table__line__cell\">{{ event.lastModificationDate | sinceDate: { onlyLocale: true } }}</td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n <hvy-status-display [event]=\"event\"></hvy-status-display>\n </td>\n <td class=\"o-hvy-events-table__line__cell -centered\">\n {{ event.procedureProgress }} %\n </td>\n <td class=\"o-hvy-events-table__line__cell\">\n <a [routerLink]=\"EVENT_LINK.fn(event, _store)\">\n > {{ '@hvy.action.consult' | i18n }} @if (event.linkedEvents > 1) {\n ({{ event.linkedEvents }})\n }\n </a>\n </td>\n </tr>\n </tbody>\n</table>\n","import { createAction, props } from '@ngrx/store';\nimport { HypEventSummaries } from '../../model/event/hyp-event-summary.interface';\n\nexport const EventSummaryActions = {\n load: createAction('[Event] Load Summaries'),\n loadSuccess: createAction('[Event Api] Load Summaries Success', props<{ summaries: HypEventSummaries }>()),\n loadFailure: createAction('[Event Api] Load Summaries Failure', props<{ error: string }>())\n};\n","export const emptySummaries = {\n NEW: { events: [], count: 0 },\n IN_PROGRESS: { events: [], count: 0 },\n DONE: { events: [], count: 0 }\n};\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { EventSummaryActions } from './event-summary.actions';\nimport { emptySummaries } from './event-summary.const';\nimport { HypEventSummaries } from '../../model/event/hyp-event-summary.interface';\n\nexport const eventSummaryFeatureKey = '@hvy/event-summary';\n\nexport interface EventSummaryState {\n summaries: HypEventSummaries\n loading: boolean;\n}\n\nexport const eventSummaryInitialState: EventSummaryState = {\n summaries: { ...emptySummaries },\n loading: false,\n};\n\nconst internalReducer = createReducer<EventSummaryState>(\n eventSummaryInitialState,\n on(EventSummaryActions.load, (state, action) => ({\n ...state,\n loading: true\n })),\n on(EventSummaryActions.loadSuccess, (state, { summaries }) => ({\n ...state,\n loading: false,\n summaries\n })),\n on(EventSummaryActions.loadFailure, (state, action) => ({\n ...state,\n loading: false\n }))\n);\n\nexport function eventSummaryReducer(state: EventSummaryState, action: Action) {\n return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { eventSummaryFeatureKey, EventSummaryState } from './event-summary.reducer';\n\nconst feature = createFeatureSelector<EventSummaryState>(eventSummaryFeatureKey);\nconst summaries = createSelector(feature, (state) => state.summaries);\nconst loading = createSelector(feature, (state) => state.loading);\n\nexport const EventSummarySelectors = {\n feature,\n summaries,\n loading\n};\n","import { Component, Input } from '@angular/core';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\nimport { EVENT_LINK } from '../../event/list/event-list.component';\nimport { Store } from '@ngrx/store';\n\n@Component({\n selector: 'hvy-event-summary-item',\n templateUrl: './event-summary-item.component.html',\n})\nexport class EventSummaryItemComponent {\n @Input({ required: true }) event!: HypEventSummary;\n @Input() linkBase: string[] = [];\n EVENT_LINK = EVENT_LINK;\n\n constructor(public store: Store) {\n }\n}\n","<div class=\"m-hvy-event-summary-item\" [routerLink]=\"EVENT_LINK.fn(event, store)\">\n <div class=\"m-hvy-event-summary-item__title\">\n <h4>\n {{ event.name }}\n </h4>\n </div>\n <div class=\"m-hvy-event-summary-item__content\">\n <span>\n {{\n event.manifestation ?\n (event.manifestation.startDate | date : 'dd/MM HH:MM') + ' - ' + (event.manifestation.endDate | date : 'dd/MM HH:MM') :\n event.interventionRequestTitle\n }}\n </span>\n </div>\n <div class=\"m-hvy-event-summary-item__footer\">\n <div class=\"m-hvy-event-summary-item__icons\">\n <span class=\"m-hvy-event-summary-item__intervention-counter\">{{ event.interventionRequestCount }}</span>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n </div>\n <div class=\"m-hvy-event-summary-item__date\">\n <span>\n {{ event.lastModificationDate | date : 'd MMMM . HH:MM' }}\n </span>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { HypEventSummary } from '../../model/event/hyp-event-summary.interface';\n\n@Component({\n selector: 'hvy-event-summary-list',\n templateUrl: './event-summary-list.component.html'\n})\nexport class EventSummaryListComponent implements OnInit {\n @Input() events: HypEventSummary[] = [];\n @Input() totalEventCount = 0;\n @Input() status: string = '';\n @Input() consultLink: string[] = [];\n @Input() itemLinkBase: string[] = [];\n\n constructor(private store: Store<any>, private router: Router) {\n }\n\n ngOnInit() {\n this.consultLink = this.consultLink.length > 0 ? this.consultLink : ['events'];\n this.itemLinkBase = this.itemLinkBase.length > 0 ? this.itemLinkBase : ['events'];\n }\n\n filterAndRoute(status: string) {\n this.router.navigate([...this.consultLink]);\n this.store.dispatch(EventActions.filter({ filters: { status: [status] } }));\n }\n}\n","<div class=\"o-hvy-event-summary-list -hvy-{{status.toLowerCase()}}\">\n <div class=\"o-hvy-event-summary-list__header\">\n <h3 class=\"o-hvy-event-summary-list__title\">\n {{ '@hvy.eventSummary.statusLabels.' + status | i18n }}\n </h3>\n <span class=\"o-hvy-event-summary-list__counter\">\n {{ totalEventCount }}\n </span>\n </div>\n <div class=\"o-hvy-event-summary-list__content\">\n @for (event of events; track event.id) {\n <hvy-event-summary-item\n [event]=\"event\"\n [linkBase]=\"itemLinkBase\">\n </hvy-event-summary-item>\n } @empty {\n <span class=\"o-hvy-event-summary-list__no-content\">\n {{ '@hvy.eventSummary.noContent' | i18n }}\n </span>\n }\n </div>\n <div class=\"o-hvy-event-summary-list__footer\">\n <button class=\"o-hvy-event-summary-list__footer-button\" (click)=\"filterAndRoute(status)\">\n Consulter\n <pry-icon iconSvg=\"arrow\"></pry-icon>\n </button>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { EventActions } from '../../store/event/event.actions';\nimport { HypEventSummaries } from '../../model/event/hyp-event-summary.interface';\nimport { Observable } from 'rxjs';\nimport { EventSummaryActions } from '../../store/event-summary/event-summary.actions';\nimport { EventSelectors } from '../../store/event/event.selectors';\nimport { map } from 'rxjs/operators';\nimport { EventSummarySelectors } from '../../store/event-summary/event-summary.selectors';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\n\n@Component({\n selector: 'hvy-event-summary-page',\n templateUrl: './event-summary-page.component.html'\n})\nexport class EventSummaryPageComponent extends SubscriptionnerDirective {\n @Input() pageTitle = '';\n summaries: HypEventSummaries = {\n NEW: { events: [], count: 0 },\n IN_PROGRESS: { events: [], count: 0 },\n DONE: { events: [], count: 0 },\n };\n selectedCriticality$: Observable<string | undefined>;\n criticalityList = [ \"LOW\", \"MEDIUM\", \"HIGH\", \"ALL\"];\n\n constructor(private store: Store<any>) {\n super();\n this.store.dispatch(EventSummaryActions.load());\n this.selectedCriticality$ = this.store.select(EventSelectors.filters).pipe(\n map((filters) => filters['criticality']?.[0] ?? 'ALL'),\n );\n this.subscriptions.add(\n this.store.select(EventSummarySelectors.summaries).subscribe((summaries) => {\n this.summaries = summaries;\n }),\n );\n }\n\n filterByCriticality($event: string) {\n $event === 'ALL' ? this.store.dispatch(EventActions.filter({ filters: { criticality: [] } })) :\n this.store.dispatch(EventActions.filter({ filters: { criticality: [$event] } }));\n this.store.dispatch(EventSummaryActions.load());\n }\n\n asIsOrder() {\n return 0;\n }\n}\n","<div class=\"o-hvy-event-summary-page\">\n <div class=\"o-hvy-event-summary-page__header\">\n @if (pageTitle) {\n <h3 class=\"o-hvy-event-summary-page__title\">{{ pageTitle }}</h3>\n }\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\">\n <label class=\"a-label m-filter__label\" for=\"criticality-filter\">{{ '@hvy.event.criticality.name' | i18n }} :&nbsp;</label>\n <pry-select\n id=\"criticality-filter\"\n class=\"o-hvy-event-summary-page__filter\"\n [items]=\"criticalityList\"\n [ngModel]=\"selectedCriticality$ | async\"\n (ngModelChange)=\"filterByCriticality($event)\"\n [translate]=\"true\"\n i18nPrefix=\"@hvy.eventSummary.criticalityLabels.\"\n >\n </pry-select>\n </div>\n </div>\n <div class=\"o-hvy-event-summary-page__content\">\n @for (summaryList of summaries | keyvalue: asIsOrder; track summaryList.key) {\n <hvy-event-summary-list\n class=\"o-hvy-event-summary-page__summary-list\"\n [status]=\"summaryList.key\"\n [totalEventCount]=\"summaryList.value.count\"\n [events]=\"summaryList.value.events\">\n </hvy-event-summary-list>\n }\n </div>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport const HYP_BASE_CONFIG = new InjectionToken<string>('base config');\n","export const enTranslations = {\n '@hvy': {\n event: {\n criticality: 'Criticality',\n name: 'Event',\n type: {\n name: 'Event type',\n ALERT: 'Alert',\n REPORT: 'Report',\n OPERATOR: 'Operator',\n },\n status: {\n name: 'Status',\n NEW: 'Open',\n IN_PROGRESS: 'In progress',\n DONE: 'Done',\n },\n address: 'Address',\n source: 'External reference',\n equipment: 'Equipment reference',\n equipmentEntity: 'Equipment entity',\n domain: {\n name: 'Métier'\n },\n startDate: 'Start date',\n endDate: 'End date',\n creationDate: 'Creation date',\n lastModificationDate: 'Modification date',\n closeDate: 'Close date',\n log: {\n name: 'Events log',\n event: {\n description: 'Description',\n address: 'Address',\n detail: 'Information',\n name: 'Name',\n category: 'Category',\n comments: {\n name: 'Event comments',\n placeholder: 'Write your comment',\n },\n },\n procedure: {\n delete: 'Delete procedure',\n progress: 'Progress',\n noAction: 'No actions',\n name: 'Common procedure',\n addAction: 'Add action'\n },\n },\n category: {\n ALERT: 'Dysfunction alert',\n REPORT: 'GRC report',\n OPERATOR_EVENT: 'Operator event',\n ALERT_LIMIT: 'Limit alert',\n MANIFESTATION: 'Manifestation',\n },\n },\n eventSummary: {\n noContent: 'No event with given criticality',\n statusLabels: {\n NEW: 'Open',\n IN_PROGRESS: 'In progress',\n DONE: 'Done',\n },\n criticalityLabels: {\n LOW: 'Low',\n MEDIUM: 'Medium',\n HIGH: 'High',\n ALL: 'All',\n },\n },\n procedure: {\n name: 'Procedure',\n progress: 'Procedure progress %',\n },\n action: {\n consult: 'Consult',\n close: 'Close',\n send: 'Send',\n },\n },\n};\n","export const frTranslations = {\n '@hvy': {\n event: {\n name: 'Évènement',\n type: {\n name: 'Type d\\'évènement',\n ALERT: 'Alerte',\n REPORT: 'Signalement',\n OPERATOR: 'Opérateur',\n },\n status: {\n name: 'Statut évènement',\n NEW: 'Nouveau',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturé',\n },\n address: 'Adresse',\n source: 'Référence externe',\n equipment: 'Référence matériel',\n equipmentEntity: 'Entité de l\\'équipement',\n domain: {\n name: 'Métier'\n },\n startDate: 'Date de début',\n endDate: 'Date de fin',\n creationDate: 'Date de création',\n lastModificationDate: 'Date dernières modifications',\n closeDate: 'Date de clotûre',\n log: {\n name: 'Journal des évènements',\n event: {\n description: 'Description',\n address: 'Adresse',\n detail: 'Informations',\n name: 'Nom',\n category: 'Catégorie',\n close: 'Clôturer tous ces évènements',\n comments: {\n name: 'Commentaires de l\\'évènement',\n placeholder: 'Écrivez votre commentaire'\n }\n },\n procedure: {\n delete: 'Supprimer la procédure',\n progress: 'Progression',\n noAction: 'Pas d\\'action',\n name: 'Procédure commune',\n addAction: 'Ajouter une action'\n },\n },\n category: {\n name: \"Catégorie d'évènement\",\n ALERT_MALFUNCTION: 'Alerte Dysfonctionnement',\n REPORT: 'Signalement GRC',\n OPERATOR_EVENT: 'Evènement Opérateur',\n ALERT_LIMIT: 'Alerte Seuil',\n MANIFESTATION: 'Manifestation',\n },\n criticality: {\n name: 'Criticité',\n LOW: 'Bas',\n MEDIUM: 'Moyen',\n HIGH: 'Haut',\n },\n },\n eventSummary: {\n noContent: 'Aucun évènement avec la criticité donnée',\n statusLabels: {\n NEW: 'Nouveaux',\n IN_PROGRESS: 'En cours',\n DONE: 'Clôturés',\n },\n criticalityLabels: {\n LOW: 'Bas',\n MEDIUM: 'Moyen',\n HIGH: 'Haut',\n ALL: 'Tous',\n },\n },\n procedure: {\n name: 'Procédure',\n progress: '% avancement procédure'\n },\n action: {\n consult: 'Consulter',\n close: 'Clotûrer',\n send: 'Envoyer'\n },\n },\n};\n","export const HypEventStatus = ['NEW', 'IN_PROGRESS', 'DONE'];\n","export enum HypEventType {\n ALERT,\n REPORT,\n OPERATOR\n}\n","/*\n * Public API Surface of hypervisor\n */\n\nexport * from './event/hyp-event.interface';\nexport * from './event/hyp-event-category.type';\nexport * from './event/hyp-event-criticality.type';\nexport * from './event/hyp-event-detail.interface';\nexport * from './event/hyp-event-status.type';\nexport * from './event/hyp-event-summary.interface';\nexport * from './event/hyp-event-type';\nexport * from './hyp-procedure.interface';\nexport * from './hyp-equipment.interface';\nexport * from './domains.constant';\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable, withLatestFrom } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { EventSelectors } from './event.selectors';\nimport { HypEventDetails } from '../../model/event/hyp-event-detail.interface';\nimport { HypProcedure } from '../../model/hyp-procedure.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>,\n ) {\n }\n\n list(startWith = 0): Observable<Array<HypEventDetails>> {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n withLatestFrom(this.store.select(EventSelectors.filters)),\n mergeMap(([url, filters]) => {\n let params = new HttpParams();\n Object.keys(filters).forEach(filter => {\n filters[filter].forEach((filterValue) => {\n params = params.set(filter, filterValue);\n });\n });\n const pageSize = 20;\n params = params.set('page', (startWith / pageSize) + 1);\n return this.httpClient.get<Array<HypEventDetails>>(encodeURI(`${url}/events`), { params });\n }),\n );\n }\n\n get(id: string) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypEventDetails>(encodeURI(`${url}/events/id/${id}`));\n }),\n );\n }\n\n getProcedure(id: string) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.get<HypProcedure>(encodeURI(`${url}/procedures/id/${id}`));\n }),\n );\n }\n\n save(event: HypEventDetails) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.post<HypEventDetails>(encodeURI(`${url}/events/${event.type.toLowerCase()}`), event);\n }),\n );\n }\n\n saveProcedure(procedure: HypProcedure) {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n mergeMap((url) => {\n return this.httpClient.post<HypProcedure>(encodeURI(`${url}/procedures`), procedure);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { EventActions } from './event.actions';\nimport { EventService } from './event.service';\nimport { filter, withLatestFrom } from 'rxjs';\nimport { EventSelectors } from './event.selectors';\nimport { Store } from '@ngrx/store';\n\n@Injectable()\nexport class EventEffects {\n loadEvents$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.load),\n debounceTime(200),\n withLatestFrom(this.store.select(EventSelectors.events), this.store.select(EventSelectors.noMoreEvents)),\n filter(([action, events, noMore]) => !noMore),\n mergeMap(([action, stateEvents]) =>\n this.eventService.list(action.next ? stateEvents.length : 0).pipe(\n map((events) => EventActions.loadSuccess({ events, startingFrom: action.next ? stateEvents.length : 0 })),\n catchError((error) => [EventActions.loadFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n getEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.get),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.get(action.id).pipe(\n map((event) => EventActions.getSuccess({ event })),\n catchError((error) => [EventActions.getFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n getForProcedureEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.getForProcedure),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.getProcedure(action.id).pipe(\n map((procedure) => EventActions.getSuccess({ procedure })),\n catchError((error) => [EventActions.getFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n saveEvent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.save),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.save(action.event).pipe(\n map((event) => EventActions.saveSuccess({ event })),\n catchError((error) => [EventActions.saveFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n saveProcedure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventActions.saveProcedure),\n debounceTime(200),\n mergeMap((action) =>\n this.eventService.saveProcedure(action.procedure).pipe(\n map((procedure) => EventActions.saveSuccess({ procedure })),\n catchError((error) => [EventActions.saveFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private eventService: EventService,\n private store: Store\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Store } from '@ngrx/store';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HypervisorService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n}\n","import { Injectable } from '@angular/core';\nimport { Actions } from '@ngrx/effects';\nimport { HypervisorService } from './hypervisor.service';\n\n@Injectable()\nexport class HypervisorEffects {\n\n constructor(\n private actions$: Actions,\n private eventService: HypervisorService,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { mergeMap, Observable, withLatestFrom } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { HypSelectors } from '../hypervisor/hypervisor.selectors';\nimport { EventSelectors } from '../event/event.selectors';\nimport { HypEventSummaries } from '../../model/public-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventSummaryService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {\n }\n\n list(): Observable<HypEventSummaries> {\n return this.store\n .select(HypSelectors.url)\n .pipe(\n withLatestFrom(this.store.select(EventSelectors.filters)),\n mergeMap(([url, filters]) => {\n let params = new HttpParams();\n Object.keys(filters).forEach(filter => {\n filters[filter].forEach((filterValue) => {\n params = params.set(filter, filterValue);\n });\n });\n return this.httpClient.get<HypEventSummaries>(encodeURI(`${url}/events/summary`), { params });\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { EventSummaryActions } from './event-summary.actions';\nimport { EventSummaryService } from './event-summary.service';\n\n@Injectable()\nexport class EventSummaryEffects {\n loadSummaries$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EventSummaryActions.load),\n debounceTime(200),\n mergeMap((action) =>\n this.eventSummaryService.list().pipe(\n map((summaries) => EventSummaryActions.loadSuccess({ summaries })),\n catchError((error) => [EventSummaryActions.loadFailure({ error: error })]),\n ),\n ),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private eventSummaryService: EventSummaryService,\n ) {\n }\n}\n","import { Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { Store, StoreModule } from '@ngrx/store';\nimport { eventFeatureKey, eventReducer } from './store/event/event.reducer';\nimport { EventEffects } from './store/event/event.effects';\nimport { EventDetailComponent } from './event/detail/event-detail.component';\nimport { hypervisorReducer, hypFeatureKey } from './store/hypervisor/hypervisor.reducer';\nimport { HypervisorEffects } from './store/hypervisor/hypervisor.effects';\nimport { HYP_BASE_CONFIG } from './general/base.token';\nimport { HypervisorActions } from './store/hypervisor/hypervisor.actions';\nimport { AsyncPipe, DatePipe, JsonPipe, KeyValuePipe, NgForOf, NgStyle } from '@angular/common';\nimport {\n PryCoreModule,\n PryDatePickerModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n} from '@provoly/dashboard';\nimport { enTranslations } from './general/i18n/en.translations';\nimport { frTranslations } from './general/i18n/fr.translations';\nimport { IconDisplayComponent } from './general/icon-display/icon-display.component';\nimport { EventIconPipe } from './general/icon-pipe/event-icon.pipe';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { EventListComponent } from './event/list/event-list.component';\nimport { FormsModule } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';\nimport { EventSummaryListComponent } from './event-summary/list/event-summary-list.component';\nimport { EventSummaryItemComponent } from './event-summary/item/event-summary-item.component';\nimport { EventSummaryEffects } from './store/event-summary/event-summary.effects';\nimport { eventSummaryFeatureKey, eventSummaryReducer } from './store/event-summary/event-summary.reducer';\nimport { EventSummaryPageComponent } from './event-summary/page/event-summary-page.component';\nimport { ForDatetimeLocalPipe } from './general/for-datetime-local-pipe/for-datetime-local.pipe';\nimport { StatusDisplayComponent } from './general/status-display/status-display.component';\nimport { ProgressDisplayComponent } from './general/progress-display/progress-display.component';\n\nconst components = [\n EventDetailComponent,\n EventListComponent,\n IconDisplayComponent,\n EventSummaryItemComponent,\n EventSummaryListComponent,\n EventSummaryPageComponent,\n EventIconPipe,\n ForDatetimeLocalPipe,\n StatusDisplayComponent,\n ProgressDisplayComponent\n];\n\n@NgModule({\n declarations: [\n ...components,\n ],\n imports: [\n StoreModule.forFeature(hypFeatureKey, hypervisorReducer),\n StoreModule.forFeature(eventFeatureKey, eventReducer),\n StoreModule.forFeature(eventSummaryFeatureKey, eventSummaryReducer),\n EffectsModule.forFeature([EventEffects, EventSummaryEffects, HypervisorEffects]),\n NgForOf,\n AsyncPipe,\n PryI18nModule,\n PryCoreModule,\n AsyncPipe,\n PryCoreModule,\n NgStyle,\n PryCheckboxModule,\n FormsModule,\n RouterLink,\n PrySinceDateModule,\n DatePipe,\n PryIconModule,\n KeyValuePipe,\n PrySelectModule,\n FormsModule,\n JsonPipe,\n PryDatePickerModule,\n ],\n exports: [\n ...components\n ],\n})\nexport class PvyHypervisorModule {\n static forRoot(options: { url?: string }): ModuleWithProviders<PvyHypervisorModule> {\n\n return {\n ngModule: PvyHypervisorModule,\n providers: [\n { provide: HYP_BASE_CONFIG, useValue: options },\n ],\n };\n }\n\n constructor(@Inject(HYP_BASE_CONFIG) private baseConfig: {\n url: string\n }, private store: Store<any>, private i18nService: PryI18nService) {\n this.store.dispatch(HypervisorActions.setUrl({ url: baseConfig.url }));\n this.i18nService.addLangObject('en', '@hvy', enTranslations);\n this.i18nService.addLangObject('fr', '@hvy', frTranslations);\n }\n}\n","/*\n * Public API Surface of hypervisor\n */\nexport * from './src/lib/event/public-api';\nexport * from './src/lib/event-summary/public-api';\nexport * from './src/lib/general/public-api';\nexport * from './src/lib/model/public-api';\nexport * from './src/lib/hypervisor.module';\nexport * from './src/lib/store/event/public-api';\nexport * from './src/lib/store/event-summary/public-api';\nexport * from './src/lib/store/equipment/public-api';\nexport * from './src/lib/store/hypervisor/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["internalReducer","feature","i2","i1","i3.EventIconPipe","i1.EquipmentService","i3","i4","i5.IconDisplayComponent","i6.StatusDisplayComponent","i7.ProgressDisplayComponent","i8.ForDatetimeLocalPipe","loading","i5","i6.IconDisplayComponent","i7.StatusDisplayComponent","i8","i3.IconDisplayComponent","i4.EventSummaryItemComponent","map","i4.EventSummaryListComponent","mergeMap","i2.EventService","i2.HypervisorService","i2.EventSummaryService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@provoly/hypervisor",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "16.x || 17.x",
6
6
  "@angular/common": "16.x || 17.x",
@@ -15,6 +15,7 @@ export declare class EventDetailComponent extends SubscriptionnerDirective {
15
15
  _procedure?: HypProcedure;
16
16
  procedureModifications: Partial<HypProcedure>;
17
17
  modifiedProcedure: EventEmitter<[Partial<HypProcedure>, HypProcedure] | undefined>;
18
+ protected readonly DOMAINS: string[];
18
19
  set events(events: HypEventDetails[]);
19
20
  set procedure(procedure: HypProcedure);
20
21
  set cancelModifications(evt: any);
@@ -19,6 +19,9 @@ export declare const enTranslations: {
19
19
  source: string;
20
20
  equipment: string;
21
21
  equipmentEntity: string;
22
+ domain: {
23
+ name: string;
24
+ };
22
25
  startDate: string;
23
26
  endDate: string;
24
27
  creationDate: string;
@@ -18,6 +18,9 @@ export declare const frTranslations: {
18
18
  source: string;
19
19
  equipment: string;
20
20
  equipmentEntity: string;
21
+ domain: {
22
+ name: string;
23
+ };
21
24
  startDate: string;
22
25
  endDate: string;
23
26
  creationDate: string;
@@ -0,0 +1,3 @@
1
+ export declare const DOMAINS: {
2
+ values: string[];
3
+ };
@@ -19,4 +19,5 @@ export interface HypEventDetails extends HypEvent {
19
19
  procedureId?: string;
20
20
  linkedEvents: number;
21
21
  procedureProgress?: number;
22
+ domain?: string;
22
23
  }
@@ -7,3 +7,4 @@ export * from './event/hyp-event-summary.interface';
7
7
  export * from './event/hyp-event-type';
8
8
  export * from './hyp-procedure.interface';
9
9
  export * from './hyp-equipment.interface';
10
+ export * from './domains.constant';