@fad-producto-portal/ng-fad-signature-fea 1.0.0-alpha.0 → 1.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/assets/images/fad-signature-fea/signature-summary/rejected.svg +20 -0
  2. package/assets/images/fad-signature-fea/signature-summary/send.svg +11 -0
  3. package/esm2022/lib/components/document-approval-list/document-approval-list.component.mjs +15 -81
  4. package/esm2022/lib/components/generic-error-fea/generic-error-fea.component.mjs +3 -3
  5. package/esm2022/lib/components/pdf-viewer-fea/pdf-viewer-fea.component.mjs +79 -0
  6. package/esm2022/lib/components/signature-summary/signature-summary.component.mjs +95 -0
  7. package/esm2022/lib/components/validate-rfc/validate-rfc.component.mjs +38 -17
  8. package/esm2022/lib/components/validate-signature/validate-signature.component.mjs +1 -1
  9. package/esm2022/lib/constants/configuration/index.mjs +2 -1
  10. package/esm2022/lib/constants/configuration/pdf-viewer-fea/index.mjs +2 -0
  11. package/esm2022/lib/constants/configuration/pdf-viewer-fea/pdf-viewer-fea-configuration.const.mjs +17 -0
  12. package/esm2022/lib/constants/configuration/signature-summary/signature-summary-configuration.const.mjs +18 -0
  13. package/esm2022/lib/constants/errors/validate-rfc/validate-rfc-error-code.mjs +3 -1
  14. package/esm2022/lib/constants/errors/validate-rfc/validate-rfc-error-description.mjs +5 -1
  15. package/esm2022/lib/models/configuration/index.mjs +4 -1
  16. package/esm2022/lib/models/configuration/pdf-viewer-fea/index.mjs +2 -0
  17. package/esm2022/lib/models/configuration/pdf-viewer-fea/pdf-viewer-fea.interface.mjs +2 -0
  18. package/esm2022/lib/models/configuration/signature-summary/index.mjs +2 -0
  19. package/esm2022/lib/models/configuration/signature-summary/signature-summary.interface.mjs +2 -0
  20. package/esm2022/lib/models/customization/legends/index.mjs +4 -1
  21. package/esm2022/lib/models/customization/legends/pdf-viewer-fea/index.mjs +2 -0
  22. package/esm2022/lib/models/customization/legends/pdf-viewer-fea/pdf-viewer-fea-legends.interface.mjs +2 -0
  23. package/esm2022/lib/models/customization/legends/signature-summary/index.mjs +2 -0
  24. package/esm2022/lib/models/customization/legends/signature-summary/signature-summary-legends.interface.mjs +2 -0
  25. package/esm2022/lib/models/customization/style/index.mjs +4 -1
  26. package/esm2022/lib/models/customization/style/pdf-viewer-fea/index.mjs +2 -0
  27. package/esm2022/lib/models/customization/style/pdf-viewer-fea/pdf-viewer-fea-style.interface.mjs +2 -0
  28. package/esm2022/lib/models/customization/style/signature-summary/index.mjs +2 -0
  29. package/esm2022/lib/models/customization/style/signature-summary/signature-summary-style.interface.mjs +2 -0
  30. package/esm2022/lib/models/path-dependencies/index.mjs +4 -1
  31. package/esm2022/lib/models/path-dependencies/pdf-viewer-fea/index.mjs +2 -0
  32. package/esm2022/lib/models/path-dependencies/pdf-viewer-fea/pdf-viewer-fea-dependencies.interface.mjs +2 -0
  33. package/esm2022/lib/models/path-dependencies/signature-summary/index.mjs +2 -0
  34. package/esm2022/lib/models/path-dependencies/signature-summary/signature-summary-dependencies.interface.mjs +2 -0
  35. package/esm2022/lib/ng-fad-signature-fea.module.mjs +15 -5
  36. package/esm2022/public-api.mjs +3 -1
  37. package/fesm2022/fad-producto-portal-ng-fad-signature-fea.mjs +276 -114
  38. package/fesm2022/fad-producto-portal-ng-fad-signature-fea.mjs.map +1 -1
  39. package/lib/components/document-approval-list/document-approval-list.component.d.ts +1 -16
  40. package/lib/components/pdf-viewer-fea/pdf-viewer-fea.component.d.ts +28 -0
  41. package/lib/components/signature-summary/signature-summary.component.d.ts +27 -0
  42. package/lib/components/validate-rfc/validate-rfc.component.d.ts +7 -4
  43. package/lib/constants/configuration/index.d.ts +1 -0
  44. package/lib/constants/configuration/pdf-viewer-fea/index.d.ts +1 -0
  45. package/lib/constants/configuration/pdf-viewer-fea/pdf-viewer-fea-configuration.const.d.ts +2 -0
  46. package/lib/constants/configuration/signature-summary/signature-summary-configuration.const.d.ts +2 -0
  47. package/lib/constants/errors/validate-rfc/validate-rfc-error-code.d.ts +3 -1
  48. package/lib/constants/errors/validate-rfc/validate-rfc-error-description.d.ts +1 -1
  49. package/lib/models/configuration/index.d.ts +3 -0
  50. package/lib/models/configuration/pdf-viewer-fea/index.d.ts +1 -0
  51. package/lib/models/configuration/pdf-viewer-fea/pdf-viewer-fea.interface.d.ts +9 -0
  52. package/lib/models/configuration/signature-summary/index.d.ts +1 -0
  53. package/lib/models/configuration/signature-summary/signature-summary.interface.d.ts +6 -0
  54. package/lib/models/customization/legends/index.d.ts +3 -0
  55. package/lib/models/customization/legends/pdf-viewer-fea/index.d.ts +1 -0
  56. package/lib/models/customization/legends/pdf-viewer-fea/pdf-viewer-fea-legends.interface.d.ts +3 -0
  57. package/lib/models/customization/legends/signature-summary/index.d.ts +1 -0
  58. package/lib/models/customization/legends/signature-summary/signature-summary-legends.interface.d.ts +8 -0
  59. package/lib/models/customization/style/index.d.ts +3 -0
  60. package/lib/models/customization/style/pdf-viewer-fea/index.d.ts +1 -0
  61. package/lib/models/customization/style/pdf-viewer-fea/pdf-viewer-fea-style.interface.d.ts +2 -0
  62. package/lib/models/customization/style/signature-summary/index.d.ts +1 -0
  63. package/lib/models/customization/style/signature-summary/signature-summary-style.interface.d.ts +2 -0
  64. package/lib/models/path-dependencies/index.d.ts +3 -0
  65. package/lib/models/path-dependencies/pdf-viewer-fea/index.d.ts +1 -0
  66. package/lib/models/path-dependencies/pdf-viewer-fea/pdf-viewer-fea-dependencies.interface.d.ts +9 -0
  67. package/lib/models/path-dependencies/signature-summary/index.d.ts +1 -0
  68. package/lib/models/path-dependencies/signature-summary/signature-summary-dependencies.interface.d.ts +7 -0
  69. package/lib/ng-fad-signature-fea.module.d.ts +10 -8
  70. package/package.json +2 -2
  71. package/public-api.d.ts +2 -0
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="90px" height="91px" viewBox="0 0 90 91" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>BAA5F956-ECA7-4F6A-A301-4C4112391F02</title>
4
+ <defs>
5
+ <path d="M27.328393,25.079703 C28.4803051,23.9100244 30.3014781,23.9596545 31.3960969,25.1905551 L31.3960969,25.1905551 L45.9981329,41.6109062 L60.6006036,25.1905551 C61.6952224,23.9596545 63.5163955,23.9100244 64.6683076,25.079703 C65.8202196,26.2493817 65.866665,28.1954357 64.7720462,29.4263363 L49.493328,46.6072795 L64.6654487,61.9712027 C65.8188591,63.1391942 65.867799,65.0851784 64.7747591,66.31768 C63.6817192,67.5501817 61.8606114,67.6024775 60.7072011,66.434486 L45.9981329,51.5389062 L31.2894995,66.434486 C30.1804511,67.5575547 28.4540789,67.5523993 27.3512131,66.4546519 L27.2219415,66.31768 C26.1289016,65.0851784 26.1778415,63.1391942 27.3312518,61.9712027 L27.3312518,61.9712027 L42.5033726,46.6072795 L27.2246544,29.4263363 C26.1300356,28.1954357 26.176481,26.2493817 27.328393,25.079703 Z" id="path-1"></path>
6
+ </defs>
7
+ <g id="Multidocumentos" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
8
+ <g id="Assets" transform="translate(-883.000000, -424.000000)">
9
+ <g id="icon-/-incorrect-/-3" transform="translate(883.000000, 424.000000)">
10
+ <g id="Group" stroke="#A70635" stroke-width="3.9">
11
+ <circle id="Oval" cx="45" cy="45" r="43.05"></circle>
12
+ </g>
13
+ <mask id="mask-2" fill="white">
14
+ <use xlink:href="#path-1"></use>
15
+ </mask>
16
+ <use id="Combined-Shape" fill="#A70635" fill-rule="nonzero" xlink:href="#path-1"></use>
17
+ </g>
18
+ </g>
19
+ </g>
20
+ </svg>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="110px" height="91px" viewBox="0 0 110 91" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>ADD9D7D8-D903-4EF4-A22C-FFADA9D56EA2@1x</title>
4
+ <g id="Multidocumentos" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="Assets" transform="translate(-57.000000, -403.000000)" fill="#5A9A92" fill-rule="nonzero">
6
+ <g id="icon-/-enviado" transform="translate(57.000000, 403.000000)">
7
+ <path d="M109.147973,0.648321726 L109.165579,0.668477795 C109.172027,0.675370243 109.178429,0.682305983 109.184783,0.689284433 C109.228666,0.737296456 109.270083,0.787798059 109.309197,0.840013914 C109.34493,0.886819876 109.378018,0.934821045 109.409046,0.984156665 C109.420939,1.00374569 109.43273,1.02304596 109.44422,1.04252031 C109.452634,1.05657448 109.460854,1.07104699 109.4689,1.08562065 C109.812792,1.69966403 109.859371,2.47602789 109.400955,3.14459513 L65.6066984,89.627541 C64.9306198,90.9626552 63.0863453,91.1284223 62.1821072,89.9353502 L62.1821072,89.9353502 L42.425,63.868 L37.8015777,72.054195 C36.8671328,73.7084395 34.3697872,73.2812832 34.0406506,71.4109105 L30.799,52.996 L1.64203631,47.368503 C-0.2787028,46.9977748 -0.588249522,44.42481 1.10638933,43.5806728 L1.25656146,43.5126438 L106.810053,0.220918136 C107.701091,-0.228282608 108.588193,0.0543236092 109.147973,0.648321726 Z M101.051,10.664 L45.003,60.565 L63.4547838,84.9101194 L101.051,10.664 Z M85.8682705,18.7624126 L34.780974,52.2357365 L37.0525533,65.1443565 L40.2059532,59.5619041 C40.3153346,59.3682667 40.4559583,59.193952 40.6221667,59.0459732 L85.8682705,18.7624126 Z M88.893,11.942 L9.06654904,44.6821415 L32.13,49.133 L88.893,11.942 Z" id="Combined-Shape"></path>
8
+ </g>
9
+ </g>
10
+ </g>
11
+ </svg>
@@ -1,8 +1,7 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Utils } from '@fad-producto-portal/fad-common/utils/utils';
3
3
  import { Configuration } from '@fad-producto-portal/fad-common/models/core';
4
4
  import { DOCUMENT_APPROVAL_LIST_DEFAULT, getDocumentApprovalListErrorDescription } from '../../constants';
5
- import { GeneralPdfViewerComponent as GeneralPdfViewerComponentModule } from '@fad-producto-portal/ng-fad-viewer';
6
5
  import { finalize } from 'rxjs';
7
6
  import { NgFadPdfReaderService } from '@fad-producto/ng-fad-pdf-reader';
8
7
  import { ResponseError, SharedUtils } from '@fad-producto-portal/ng-fad-shared';
@@ -12,7 +11,7 @@ import * as i1 from "@fad-producto-portal/ng-fad-services";
12
11
  import * as i2 from "@fad-producto/ng-fad-pdf-reader";
13
12
  import * as i3 from "@angular/common";
14
13
  import * as i4 from "@fad-producto/ng-fad-image-inline";
15
- import * as i5 from "@fad-producto-portal/ng-fad-viewer";
14
+ import * as i5 from "../pdf-viewer-fea/pdf-viewer-fea.component";
16
15
  export class DocumentApprovalListComponent {
17
16
  constructor(hostContext, fad, cdr, pdfService) {
18
17
  this.hostContext = hostContext;
@@ -36,13 +35,6 @@ export class DocumentApprovalListComponent {
36
35
  approve: ''
37
36
  }
38
37
  };
39
- this.pdfSrc = 'assets/pdf/one-drive.pdf';
40
- this.pages = [];
41
- this.page = 1;
42
- this.height = '500px';
43
- this.miniView = {
44
- scrollIntoView: false
45
- };
46
38
  }
47
39
  ngOnInit() {
48
40
  console.log(this.configuration, this.rfc);
@@ -109,24 +101,20 @@ export class DocumentApprovalListComponent {
109
101
  }
110
102
  seeDocumentFea(document) {
111
103
  document.isVisible = !document.isVisible;
112
- if (document.isVisible) {
104
+ if (document.isVisible && !document.doc?.file) {
113
105
  this.onloader.emit(true);
114
106
  this.fad.getDocumentFea(document.id, { loader: true, error: true })
115
107
  .pipe(finalize(() => this.onloader.emit(false)))
116
108
  .subscribe({
117
109
  next: (res) => {
118
110
  if (document.doc) {
119
- const byteCharacters = atob(res.data.file);
120
- const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i));
121
- const byteArray = new Uint8Array(byteNumbers);
122
- const blob = new Blob([byteArray], { type: 'application/pdf' });
123
- this.getBase64(blob, document);
111
+ document.doc.file = "data:application/pdf;base64," + res.data.file;
124
112
  }
125
113
  else {
126
114
  this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.SERVICE, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE), 'ng-fad-portal-signature-fea-document-approval-list'));
127
115
  }
128
116
  },
129
- error: (error) => {
117
+ error: () => {
130
118
  this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.HTTP, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP), 'ng-fad-portal-signature-fea-document-approval-list'));
131
119
  }
132
120
  });
@@ -137,18 +125,16 @@ export class DocumentApprovalListComponent {
137
125
  this.fad.getDocumentFea(document.id)
138
126
  .pipe(finalize(() => this.onloader.emit(false)))
139
127
  .subscribe({
140
- next: (res) => {
128
+ next: async (res) => {
141
129
  if (res.success && res.data.file) {
142
130
  const byteCharacters = atob(res.data.file);
143
131
  const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i));
144
132
  const byteArray = new Uint8Array(byteNumbers);
145
133
  const blob = new Blob([byteArray], { type: 'application/pdf' });
146
- const link = window.document.createElement('a');
147
- link.href = URL.createObjectURL(blob);
148
- link.download = document.doc?.name || 'document.pdf';
149
- window.document.body.appendChild(link);
150
- link.click();
151
- window.document.body.removeChild(link);
134
+ await SharedUtils.downloadFile(blob, document.doc?.name).then(res => {
135
+ }).catch(error => {
136
+ this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.ERROR_PDF, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.ERROR_PDF), 'ng-fad-portal-signature-fea-document-approval-list'));
137
+ });
152
138
  }
153
139
  else {
154
140
  this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.SERVICE, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE), 'ng-fad-portal-signature-fea-document-approval-list'));
@@ -159,67 +145,18 @@ export class DocumentApprovalListComponent {
159
145
  }
160
146
  });
161
147
  }
162
- async getBase64(blob, document) {
163
- console.log(blob);
164
- const data = new File([blob], 'file.pdf', { type: 'application/pdf' });
165
- const base64 = await SharedUtils.fileToBase64(data);
166
- if (base64) {
167
- this.initializePdf(base64, document);
168
- }
169
- else {
170
- this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.ERROR_PDF, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP), 'ng-fad-portal-signature-fea-document-approval-list'));
171
- }
172
- }
173
- initializePdf(pdf, document) {
174
- if (!this.pagesMap.has(document.id)) {
175
- this.pagesMap.set(document.id, []);
176
- }
177
- else {
178
- this.pagesMap.get(document.id).length = 0;
179
- }
180
- this.pdfService.initialize(pdf, SharedUtils.generateUUID());
181
- this.getPages(document);
182
- }
183
- getPages(document) {
184
- if (!this.pagesMap.has(document.id)) {
185
- this.pagesMap.set(document.id, []);
186
- }
187
- else {
188
- this.pagesMap.get(document.id).length = 0;
189
- }
190
- if (this.pdfLibrary) {
191
- this.pdfLibrary.unsubscribe();
192
- }
193
- this.pdfLibrary = this.pdfService.pages.subscribe(res => {
194
- const docPages = this.pagesMap.get(document.id);
195
- docPages.push(res);
196
- this.cdr.detectChanges();
197
- });
198
- }
199
- //PDF General viewer methods
200
- onpagechange(page) {
201
- this.page = page;
202
- }
203
- scrollToPage(page) {
204
- this.generalPdfViewerComponent.scrollToPage(page);
205
- }
206
- onloadpage(data) {
207
- if (data.page == 1) {
208
- const id = "fad-viewer-page-v1-1";
209
- const dynamicDiv = document.getElementById(id);
210
- ;
211
- this.height = dynamicDiv.clientHeight + 'px';
212
- }
148
+ getDocumentId(id) {
149
+ return "pdf" + id.replace(/-/g, '');
213
150
  }
214
151
  setCustomizationStyle(targetElement = document.documentElement) {
215
152
  this.configuration = Utils.mergeConfiguration(new Configuration(), DOCUMENT_APPROVAL_LIST_DEFAULT, this.configuration);
216
153
  }
217
154
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DocumentApprovalListComponent, deps: [{ token: i0.ElementRef }, { token: i1.FadService }, { token: i0.ChangeDetectorRef }, { token: i2.NgFadPdfReaderService }], target: i0.ɵɵFactoryTarget.Component }); }
218
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DocumentApprovalListComponent, selector: "ng-fad-signature-fea-document-approval-list", inputs: { configuration: "configuration", rfc: "rfc" }, outputs: { onloader: "onloader", onevent: "onevent", onerror: "onerror" }, providers: [NgFadPdfReaderService], viewQueries: [{ propertyName: "generalPdfViewerComponent", first: true, predicate: GeneralPdfViewerComponentModule, descendants: true }], ngImport: i0, template: "\r\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\r\n <div class=\"fad-portal-content\" >\r\n <div class=\"header\" >\r\n <div>\r\n <div class=\"fad-portal-title\">\r\n {{ requisition.name }} ({{requisition.documents.length}})\r\n </div>\r\n <div class=\"info\">\r\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\r\n </div>\r\n <div class=\"info\">\r\n {{ requisition.sendByEmail }}\r\n </div>\r\n </div>\r\n <div class=\"requisition-id\">\r\n <div class=\"fad-portal-subtitle-bold\">ID {{ requisition.requisitionId }}</div>\r\n </div>\r\n </div>\r\n <div class=\"documents-container\">\r\n <ng-container *ngFor=\"let document of documentsApprovalList\">\r\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\r\n <div class=\"document\" >\r\n <div class=\"information\" >\r\n <div class=\"document-name fad-portal-subtitle-bold\" >\r\n {{ document.doc?.name }}\r\n </div>\r\n <div class=\"validate\">\r\n \r\n <ng-fad-image-inline \r\n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\r\n (click)=\"toggleRejection(document)\">\r\n </ng-fad-image-inline>\r\n \r\n \r\n <ng-fad-image-inline \r\n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\r\n (click)=\"toggleApproval(document)\">\r\n </ng-fad-image-inline>\r\n </div>\r\n \r\n </div>\r\n <div class=\"actions\">\r\n <div>\r\n <div class=\"fad-portal-subtitle-bold\" (click)=\"seeDocumentFea(document)\">\r\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\r\n </div>\r\n <div class=\"fad-portal-subtitle-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\r\n </div>\r\n <div>\r\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\r\n </div>\r\n </div>\r\n <div class=\"pdf-viewer\" *ngIf=\"document.isVisible\" [style.height.px]=\"1000\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pagesMap.get(document.id!) ?? []\"\r\n (onpagechange)=\"onpagechange($event)\"\r\n (onloadpage)=\"onloadpage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniView\"\r\n [pages]=\"pagesMap.get(document.id!) ?? []\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\">\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <div class=\"fad-portal-content selector-document\">\r\n <div class=\"document-status-bar\">\r\n \r\n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\r\n Aprueba los documentos para firmarlos con tu e.firma\r\n </div>\r\n \r\n \r\n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\r\n <div class=\"approve-all\">\r\n <ng-fad-image-inline \r\n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\r\n (click)=\"approveAllDocuments()\">\r\n </ng-fad-image-inline>\r\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\r\n </div>\r\n \r\n \r\n <div class=\"document-counts\">\r\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n \r\n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n", styles: [":host{box-sizing:border-box}:host .fad-portal-content{display:flex;flex-direction:column;justify-content:center;width:100%;box-sizing:border-box;margin-top:var(--fad-portal-common-separation-lg)}:host .fad-portal-content .header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;border-radius:var(--fad-portal-common-input-border-radius);padding:var(--fad-portal-common-separation-md);overflow:hidden;box-sizing:border-box}:host .fad-portal-content .header div:nth-child(1){display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}:host .fad-portal-content .header .info{color:var(--fad-portal-common-tertiary-color)}@media (max-width: 992px){:host .fad-portal-content .header{flex-direction:column;align-items:start;justify-content:center;row-gap:var(--fad-portal-common-separation-xs);margin-bottom:var(--fad-portal-common-separation-md)}}:host .fad-portal-content .documents-container{box-sizing:border-box}:host .fad-portal-content .documents-container .document{display:flex;align-items:center;flex-direction:column;width:100%;margin-top:var(--fad-portal-common-separation-md);border-radius:var(--fad-portal-common-input-border-radius);border:1px solid #f5f5f5}:host .fad-portal-content .documents-container .document .information{padding:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;width:100%}:host .fad-portal-content .documents-container .document .information .validate{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md);display:flex;column-gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .information .document-name{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;padding:var(--fad-portal-common-separation-md);box-sizing:border-box;border-radius:var(--fad-portal-common-input-border-radius);border-top-left-radius:0;border-top-right-radius:0}:host .fad-portal-content .documents-container .document .actions div:nth-child(1){display:flex;align-items:center;gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions div:nth-child(1) div{color:var(--fad-portal-common-primary-color)!important;cursor:pointer}:host .selector-document{width:100%;background-color:#262626;color:#fff;padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;border-radius:var(--fad-portal-common-input-border-radius);box-sizing:border-box}:host .selector-document .document-status-message{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--fad-portal-common-separation-md)}:host .selector-document .document-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .document-status-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all{display:flex;align-items:center;gap:10px;cursor:pointer;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all span{cursor:pointer;-webkit-user-select:none;user-select:none}:host .selector-document .document-status-bar .document-counts{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);box-sizing:border-box}:host .selector-document .document-status-bar .document-counts span{color:#fff}:host .selector-document .document-status-bar .fad-portal-primary{min-width:0px;width:50%}@media (max-width: 992px){:host .selector-document .document-status-bar .fad-portal-primary{width:100%;margin-top:var(--fad-portal-common-separation-md)}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"] }, { kind: "component", type: i5.GeneralPdfViewerComponent, selector: "ng-fad-viewer-general-pdf-viewer", inputs: ["configuration", "onerror", "pages"], outputs: ["onpagechange", "onloadpage"] }, { kind: "component", type: i5.PdfMiniViewComponent, selector: "ng-fad-viewer-pdf-mini-view", inputs: ["configuration", "pages", "page"], outputs: ["onpagechange"] }] }); }
155
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DocumentApprovalListComponent, selector: "ng-fad-signature-fea-document-approval-list", inputs: { configuration: "configuration", rfc: "rfc" }, outputs: { onloader: "onloader", onevent: "onevent", onerror: "onerror" }, providers: [NgFadPdfReaderService], ngImport: i0, template: "\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\n <div class=\"fad-portal-content\" >\n <div class=\"header\" >\n <div>\n <div class=\"fad-portal-title\">\n {{ requisition.name }} ({{requisition.documents.length}})\n </div>\n <div class=\"info\">\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\n </div>\n <div class=\"info\">\n {{ requisition.sendByEmail }}\n </div>\n </div>\n <div class=\"requisition-id\">\n <div class=\"fad-portal-content-bold\">ID {{ requisition.requisitionId }}</div>\n </div>\n </div>\n <div class=\"documents-container\">\n <ng-container *ngFor=\"let document of documentsApprovalList; let i = index\">\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\n <div class=\"document\" >\n <div class=\"information\" >\n <div class=\"document-name fad-portal-content-bold\" >\n {{ document.doc?.name }}\n </div>\n <div class=\"validate\">\n \n <ng-fad-image-inline \n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\n (click)=\"toggleRejection(document)\">\n </ng-fad-image-inline>\n \n \n <ng-fad-image-inline \n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\n (click)=\"toggleApproval(document)\">\n </ng-fad-image-inline>\n </div>\n \n </div>\n <div class=\"actions\">\n <div>\n <div class=\"fad-portal-content-bold\" (click)=\"seeDocumentFea(document)\">\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\n </div>\n <div class=\"fad-portal-content-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\n </div>\n <div>\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\n </div>\n </div>\n\n <ng-fad-signature-fea-pdf-viewer-fea\n *ngIf=\"document.isVisible && document.doc?.file\"\n [file]=\"document.doc?.file\"\n [index]=\"i\"\n [id]=\"getDocumentId(document.id!)\"\n >\n </ng-fad-signature-fea-pdf-viewer-fea>\n \n </div>\n </ng-container>\n </ng-container>\n \n </div>\n \n </div>\n </ng-container>\n <div class=\"fad-portal-content selector-document\">\n <div class=\"document-status-bar\">\n \n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\n Aprueba los documentos para firmarlos con tu e.firma\n </div>\n \n \n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\n <div class=\"approve-all\">\n <ng-fad-image-inline \n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\n (click)=\"approveAllDocuments()\">\n </ng-fad-image-inline>\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\n </div>\n \n \n <div class=\"document-counts\">\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\n {{ getApprovedCount() }} documentos aprobados\n </span>\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\n {{ getRejectedCount() }} documentos rechazados\n </span>\n \n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\n <span class=\"fad-portal-informative-bold\">\n {{ getApprovedCount() }} documentos aprobados\n </span>\n <span class=\"fad-portal-informative-bold\">\n {{ getRejectedCount() }} documentos rechazados\n </span>\n </ng-container>\n </div>\n \n \n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\n </div>\n </div>\n </div>\n \n\n", styles: [":host{box-sizing:border-box}:host .fad-portal-content{display:flex;flex-direction:column;justify-content:center;width:100%;box-sizing:border-box;margin-top:var(--fad-portal-common-separation-lg)}:host .fad-portal-content .header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;border-radius:var(--fad-portal-common-input-border-radius);padding:var(--fad-portal-common-separation-md);overflow:hidden;box-sizing:border-box}:host .fad-portal-content .header div:nth-child(1){display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}:host .fad-portal-content .header .info{color:var(--fad-portal-common-tertiary-color)}@media (max-width: 992px){:host .fad-portal-content .header{flex-direction:column;align-items:start;justify-content:center;row-gap:var(--fad-portal-common-separation-xs);margin-bottom:var(--fad-portal-common-separation-md)}}:host .fad-portal-content .documents-container{box-sizing:border-box}:host .fad-portal-content .documents-container .document{display:flex;align-items:center;flex-direction:column;width:100%;margin-top:var(--fad-portal-common-separation-md);border-radius:var(--fad-portal-common-input-border-radius);border:1px solid #f5f5f5}:host .fad-portal-content .documents-container .document .information{padding:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;width:100%}:host .fad-portal-content .documents-container .document .information .validate{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md);display:flex;column-gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .information .document-name{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;padding:var(--fad-portal-common-separation-md);box-sizing:border-box;border-radius:var(--fad-portal-common-input-border-radius);border-top-left-radius:0;border-top-right-radius:0}:host .fad-portal-content .documents-container .document .actions div:nth-child(1){display:flex;align-items:center;gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions div:nth-child(1) div{color:var(--fad-portal-common-primary-color)!important;cursor:pointer}:host .selector-document{width:100%;background-color:#262626;color:#fff;padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;border-radius:var(--fad-portal-common-input-border-radius);box-sizing:border-box}:host .selector-document .document-status-message{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--fad-portal-common-separation-md)}:host .selector-document .document-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .document-status-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all{display:flex;align-items:center;gap:10px;cursor:pointer;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all span{cursor:pointer;-webkit-user-select:none;user-select:none}:host .selector-document .document-status-bar .document-counts{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);box-sizing:border-box}:host .selector-document .document-status-bar .document-counts span{color:#fff}:host .selector-document .document-status-bar .fad-portal-primary{min-width:0px;width:50%}@media (max-width: 992px){:host .selector-document .document-status-bar .fad-portal-primary{width:100%;margin-top:var(--fad-portal-common-separation-md)}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"] }, { kind: "component", type: i5.PdfViewerFeaComponent, selector: "ng-fad-signature-fea-pdf-viewer-fea", inputs: ["configuration", "file", "index", "id"] }] }); }
219
156
  }
220
157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DocumentApprovalListComponent, decorators: [{
221
158
  type: Component,
222
- args: [{ selector: 'ng-fad-signature-fea-document-approval-list', providers: [NgFadPdfReaderService], template: "\r\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\r\n <div class=\"fad-portal-content\" >\r\n <div class=\"header\" >\r\n <div>\r\n <div class=\"fad-portal-title\">\r\n {{ requisition.name }} ({{requisition.documents.length}})\r\n </div>\r\n <div class=\"info\">\r\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\r\n </div>\r\n <div class=\"info\">\r\n {{ requisition.sendByEmail }}\r\n </div>\r\n </div>\r\n <div class=\"requisition-id\">\r\n <div class=\"fad-portal-subtitle-bold\">ID {{ requisition.requisitionId }}</div>\r\n </div>\r\n </div>\r\n <div class=\"documents-container\">\r\n <ng-container *ngFor=\"let document of documentsApprovalList\">\r\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\r\n <div class=\"document\" >\r\n <div class=\"information\" >\r\n <div class=\"document-name fad-portal-subtitle-bold\" >\r\n {{ document.doc?.name }}\r\n </div>\r\n <div class=\"validate\">\r\n \r\n <ng-fad-image-inline \r\n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\r\n (click)=\"toggleRejection(document)\">\r\n </ng-fad-image-inline>\r\n \r\n \r\n <ng-fad-image-inline \r\n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\r\n (click)=\"toggleApproval(document)\">\r\n </ng-fad-image-inline>\r\n </div>\r\n \r\n </div>\r\n <div class=\"actions\">\r\n <div>\r\n <div class=\"fad-portal-subtitle-bold\" (click)=\"seeDocumentFea(document)\">\r\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\r\n </div>\r\n <div class=\"fad-portal-subtitle-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\r\n </div>\r\n <div>\r\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\r\n </div>\r\n </div>\r\n <div class=\"pdf-viewer\" *ngIf=\"document.isVisible\" [style.height.px]=\"1000\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pagesMap.get(document.id!) ?? []\"\r\n (onpagechange)=\"onpagechange($event)\"\r\n (onloadpage)=\"onloadpage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniView\"\r\n [pages]=\"pagesMap.get(document.id!) ?? []\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\">\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <div class=\"fad-portal-content selector-document\">\r\n <div class=\"document-status-bar\">\r\n \r\n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\r\n Aprueba los documentos para firmarlos con tu e.firma\r\n </div>\r\n \r\n \r\n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\r\n <div class=\"approve-all\">\r\n <ng-fad-image-inline \r\n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\r\n (click)=\"approveAllDocuments()\">\r\n </ng-fad-image-inline>\r\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\r\n </div>\r\n \r\n \r\n <div class=\"document-counts\">\r\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n \r\n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n", styles: [":host{box-sizing:border-box}:host .fad-portal-content{display:flex;flex-direction:column;justify-content:center;width:100%;box-sizing:border-box;margin-top:var(--fad-portal-common-separation-lg)}:host .fad-portal-content .header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;border-radius:var(--fad-portal-common-input-border-radius);padding:var(--fad-portal-common-separation-md);overflow:hidden;box-sizing:border-box}:host .fad-portal-content .header div:nth-child(1){display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}:host .fad-portal-content .header .info{color:var(--fad-portal-common-tertiary-color)}@media (max-width: 992px){:host .fad-portal-content .header{flex-direction:column;align-items:start;justify-content:center;row-gap:var(--fad-portal-common-separation-xs);margin-bottom:var(--fad-portal-common-separation-md)}}:host .fad-portal-content .documents-container{box-sizing:border-box}:host .fad-portal-content .documents-container .document{display:flex;align-items:center;flex-direction:column;width:100%;margin-top:var(--fad-portal-common-separation-md);border-radius:var(--fad-portal-common-input-border-radius);border:1px solid #f5f5f5}:host .fad-portal-content .documents-container .document .information{padding:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;width:100%}:host .fad-portal-content .documents-container .document .information .validate{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md);display:flex;column-gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .information .document-name{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;padding:var(--fad-portal-common-separation-md);box-sizing:border-box;border-radius:var(--fad-portal-common-input-border-radius);border-top-left-radius:0;border-top-right-radius:0}:host .fad-portal-content .documents-container .document .actions div:nth-child(1){display:flex;align-items:center;gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions div:nth-child(1) div{color:var(--fad-portal-common-primary-color)!important;cursor:pointer}:host .selector-document{width:100%;background-color:#262626;color:#fff;padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;border-radius:var(--fad-portal-common-input-border-radius);box-sizing:border-box}:host .selector-document .document-status-message{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--fad-portal-common-separation-md)}:host .selector-document .document-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .document-status-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all{display:flex;align-items:center;gap:10px;cursor:pointer;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all span{cursor:pointer;-webkit-user-select:none;user-select:none}:host .selector-document .document-status-bar .document-counts{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);box-sizing:border-box}:host .selector-document .document-status-bar .document-counts span{color:#fff}:host .selector-document .document-status-bar .fad-portal-primary{min-width:0px;width:50%}@media (max-width: 992px){:host .selector-document .document-status-bar .fad-portal-primary{width:100%;margin-top:var(--fad-portal-common-separation-md)}}\n"] }]
159
+ args: [{ selector: 'ng-fad-signature-fea-document-approval-list', providers: [NgFadPdfReaderService], template: "\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\n <div class=\"fad-portal-content\" >\n <div class=\"header\" >\n <div>\n <div class=\"fad-portal-title\">\n {{ requisition.name }} ({{requisition.documents.length}})\n </div>\n <div class=\"info\">\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\n </div>\n <div class=\"info\">\n {{ requisition.sendByEmail }}\n </div>\n </div>\n <div class=\"requisition-id\">\n <div class=\"fad-portal-content-bold\">ID {{ requisition.requisitionId }}</div>\n </div>\n </div>\n <div class=\"documents-container\">\n <ng-container *ngFor=\"let document of documentsApprovalList; let i = index\">\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\n <div class=\"document\" >\n <div class=\"information\" >\n <div class=\"document-name fad-portal-content-bold\" >\n {{ document.doc?.name }}\n </div>\n <div class=\"validate\">\n \n <ng-fad-image-inline \n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\n (click)=\"toggleRejection(document)\">\n </ng-fad-image-inline>\n \n \n <ng-fad-image-inline \n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\n (click)=\"toggleApproval(document)\">\n </ng-fad-image-inline>\n </div>\n \n </div>\n <div class=\"actions\">\n <div>\n <div class=\"fad-portal-content-bold\" (click)=\"seeDocumentFea(document)\">\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\n </div>\n <div class=\"fad-portal-content-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\n </div>\n <div>\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\n </div>\n </div>\n\n <ng-fad-signature-fea-pdf-viewer-fea\n *ngIf=\"document.isVisible && document.doc?.file\"\n [file]=\"document.doc?.file\"\n [index]=\"i\"\n [id]=\"getDocumentId(document.id!)\"\n >\n </ng-fad-signature-fea-pdf-viewer-fea>\n \n </div>\n </ng-container>\n </ng-container>\n \n </div>\n \n </div>\n </ng-container>\n <div class=\"fad-portal-content selector-document\">\n <div class=\"document-status-bar\">\n \n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\n Aprueba los documentos para firmarlos con tu e.firma\n </div>\n \n \n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\n <div class=\"approve-all\">\n <ng-fad-image-inline \n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\n (click)=\"approveAllDocuments()\">\n </ng-fad-image-inline>\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\n </div>\n \n \n <div class=\"document-counts\">\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\n {{ getApprovedCount() }} documentos aprobados\n </span>\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\n {{ getRejectedCount() }} documentos rechazados\n </span>\n \n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\n <span class=\"fad-portal-informative-bold\">\n {{ getApprovedCount() }} documentos aprobados\n </span>\n <span class=\"fad-portal-informative-bold\">\n {{ getRejectedCount() }} documentos rechazados\n </span>\n </ng-container>\n </div>\n \n \n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\n </div>\n </div>\n </div>\n \n\n", styles: [":host{box-sizing:border-box}:host .fad-portal-content{display:flex;flex-direction:column;justify-content:center;width:100%;box-sizing:border-box;margin-top:var(--fad-portal-common-separation-lg)}:host .fad-portal-content .header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;border-radius:var(--fad-portal-common-input-border-radius);padding:var(--fad-portal-common-separation-md);overflow:hidden;box-sizing:border-box}:host .fad-portal-content .header div:nth-child(1){display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}:host .fad-portal-content .header .info{color:var(--fad-portal-common-tertiary-color)}@media (max-width: 992px){:host .fad-portal-content .header{flex-direction:column;align-items:start;justify-content:center;row-gap:var(--fad-portal-common-separation-xs);margin-bottom:var(--fad-portal-common-separation-md)}}:host .fad-portal-content .documents-container{box-sizing:border-box}:host .fad-portal-content .documents-container .document{display:flex;align-items:center;flex-direction:column;width:100%;margin-top:var(--fad-portal-common-separation-md);border-radius:var(--fad-portal-common-input-border-radius);border:1px solid #f5f5f5}:host .fad-portal-content .documents-container .document .information{padding:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;width:100%}:host .fad-portal-content .documents-container .document .information .validate{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md);display:flex;column-gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .information .document-name{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;padding:var(--fad-portal-common-separation-md);box-sizing:border-box;border-radius:var(--fad-portal-common-input-border-radius);border-top-left-radius:0;border-top-right-radius:0}:host .fad-portal-content .documents-container .document .actions div:nth-child(1){display:flex;align-items:center;gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions div:nth-child(1) div{color:var(--fad-portal-common-primary-color)!important;cursor:pointer}:host .selector-document{width:100%;background-color:#262626;color:#fff;padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;border-radius:var(--fad-portal-common-input-border-radius);box-sizing:border-box}:host .selector-document .document-status-message{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--fad-portal-common-separation-md)}:host .selector-document .document-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .document-status-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all{display:flex;align-items:center;gap:10px;cursor:pointer;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all span{cursor:pointer;-webkit-user-select:none;user-select:none}:host .selector-document .document-status-bar .document-counts{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);box-sizing:border-box}:host .selector-document .document-status-bar .document-counts span{color:#fff}:host .selector-document .document-status-bar .fad-portal-primary{min-width:0px;width:50%}@media (max-width: 992px){:host .selector-document .document-status-bar .fad-portal-primary{width:100%;margin-top:var(--fad-portal-common-separation-md)}}\n"] }]
223
160
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FadService }, { type: i0.ChangeDetectorRef }, { type: i2.NgFadPdfReaderService }]; }, propDecorators: { configuration: [{
224
161
  type: Input
225
162
  }], rfc: [{
@@ -230,8 +167,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
230
167
  type: Output
231
168
  }], onerror: [{
232
169
  type: Output
233
- }], generalPdfViewerComponent: [{
234
- type: ViewChild,
235
- args: [GeneralPdfViewerComponentModule]
236
170
  }] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zaWduYXR1cmUtZmVhL3NyYy9saWIvY29tcG9uZW50cy9kb2N1bWVudC1hcHByb3ZhbC1saXN0L2RvY3VtZW50LWFwcHJvdmFsLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZG9jdW1lbnQtYXBwcm92YWwtbGlzdC9kb2N1bWVudC1hcHByb3ZhbC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTVFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzFHLE9BQU8sRUFBRSx5QkFBeUIsSUFBSSwrQkFBK0IsRUFBNkIsTUFBTSxvQ0FBb0MsQ0FBQTtBQUM1SSxPQUFPLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQW1CLE1BQU0saUNBQWlDLENBQUM7QUFFekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQVNoRSxNQUFNLE9B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WUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxVQUFVLENBQUMsSUFBcUI7UUFDOUIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUNsQixNQUFNLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQztZQUNsQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQUEsQ0FBQztZQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBRS9DO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsZUFBZTtRQUMxRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FDM0MsSUFBSSxhQUFhLEVBQUUsRUFDbkIsOEJBQThCLEVBQzlCLElBQUksQ0FBQyxhQUFhLENBQ25CLENBQUM7SUFDSixDQUFDOytHQXZRUSw2QkFBNkI7bUdBQTdCLDZCQUE2Qix5TUFGN0IsQ0FBQyxxQkFBcUIsQ0FBQyxxRkEyQnZCLCtCQUErQixnREM5QzVDLDhyTkF5SEE7OzRGRHBHYSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0UsNkNBQTZDLGFBRzVDLENBQUMscUJBQXFCLENBQUM7OExBSXpCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQW1CcUMseUJBQXlCO3NCQUFwRSxTQUFTO3VCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcclxuaW1wb3J0IHsgRG9jdW1lbnRBcHByb3ZhbEZlYSwgSURvY3VtZW50QXBwcm92YWxMaXN0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IERPQ1VNRU5UX0FQUFJPVkFMX0xJU1RfREVGQVVMVCwgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRmFkU2VydmljZSwgUmVxdWlzaXRpb25zRmVhLCBSZXNwb25zZURhdGEsICBSZXF1aXNpdGlvbkZlYURhdGEsIERvY3VtZW50RmVhIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBHZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50IGFzIEdlbmVyYWxQZGZWaWV3ZXJDb21wb25lbnRNb2R1bGUsIElQZGZNaW5pVmlld0NvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtdmlld2VyJ1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nRmFkUGRmUmVhZGVyU2VydmljZSwgUmVzcG9uc2VTdWNjZXNzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by9uZy1mYWQtcGRmLXJlYWRlcic7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBSZXNwb25zZUVycm9yLCBTaGFyZWRVdGlscyB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zaGFyZWQnO1xyXG5pbXBvcnQgeyBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy1mYWQtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW05nRmFkUGRmUmVhZGVyU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIERvY3VtZW50QXBwcm92YWxMaXN0Q29tcG9uZW50IHtcclxuICBcclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uITogSURvY3VtZW50QXBwcm92YWxMaXN0Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSByZmMhOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIG9ubG9hZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBvbmV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxEb2N1bWVudEFwcHJvdmFsRmVhW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uZXJyb3I6IEV2ZW50RW1pdHRlcjxSZXNwb25zZUVycm9yPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBwYWdlc01hcDogTWFwPHN0cmluZywgUmVzcG9uc2VTdWNjZXNzW10+ID0gbmV3IE1hcCgpO1xyXG4gIHJlcXVpc2l0aW9uc0ZlYTogUmVxdWlzaXRpb25GZWFEYXRhW10gPSBbXTtcclxuICBkb2N1bWVudHNBcHByb3ZhbExpc3Q6IERvY3VtZW50QXBwcm92YWxGZWFbXSA9IFtdO1xyXG4gIGFwcHJvdmVBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICBpbWFnZXMgPSB7XHJcbiAgICBpbmFjdGl2ZTp7XHJcbiAgICAgIHJlamVjdDogJycsXHJcbiAgICAgIGFwcHJvdmU6ICcnXHJcbiAgICB9LFxyXG4gICAgYWN0aXZlOntcclxuICAgICAgcmVqZWN0OiAnJyxcclxuICAgICAgYXBwcm92ZTogJycgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoR2VuZXJhbFBkZlZpZXdlckNvbXBvbmVudE1vZHVsZSkgZ2VuZXJhbFBkZlZpZXdlckNvbXBvbmVudCE6IEdlbmVyYWxQZGZWaWV3ZXJDb21wb25lbnRNb2R1bGU7XHJcbiAgcGRmU3JjOiBzdHJpbmcgPSAnYXNzZXRzL3BkZi9vbmUtZHJpdmUucGRmJztcclxuICBwZGZFcnJvciE6IFN1YnNjcmlwdGlvbjtcclxuICBwZGZMaWJyYXJ5ITogU3Vic2NyaXB0aW9uO1xyXG4gIHBhZ2VzOiBSZXNwb25zZVN1Y2Nlc3NbXSA9IFtdO1xyXG4gIHBhZ2UgPSAxO1xyXG4gIGhlaWdodCA9ICc1MDBweCc7XHJcblxyXG4gIG1pbmlWaWV3OiBJUGRmTWluaVZpZXdDb25maWd1cmF0aW9uID0ge1xyXG4gICAgc2Nyb2xsSW50b1ZpZXc6IGZhbHNlXHJcbiAgIH1cclxuXHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgaG9zdENvbnRleHQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgZmFkOiBGYWRTZXJ2aWNlLHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIHBkZlNlcnZpY2U6IE5nRmFkUGRmUmVhZGVyU2VydmljZSApIHt9XHJcbiAgXHJcbiAgXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNvbmZpZ3VyYXRpb24sdGhpcy5yZmMpXHJcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSh0aGlzLmhvc3RDb250ZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbj8ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VEaXJlY3RvcnkpIHtcclxuICAgICAgdGhpcy5pbWFnZXMuaW5hY3RpdmUucmVqZWN0ID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uaW5hY3RpdmVSZWplY3QgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L2luYWN0aXZlUmVqZWN0LnBuZ2A7XHJcbiAgICAgIHRoaXMuaW1hZ2VzLmluYWN0aXZlLmFwcHJvdmUgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5pbmFjdGl2ZUFwcHJvdmUgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L2luYWN0aXZlQXBwcm92ZS5wbmdgO1xyXG4gICAgICB0aGlzLmltYWdlcy5hY3RpdmUucmVqZWN0ID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uYWN0aXZlUmVqZWN0ID8/IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzLmltYWdlRGlyZWN0b3J5fS9hY3RpdmVSZWplY3QucG5nYDtcclxuICAgICAgdGhpcy5pbWFnZXMuYWN0aXZlLmFwcHJvdmUgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5hY3RpdmVBcHByb3ZlID8/IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzLmltYWdlRGlyZWN0b3J5fS9hY3RpdmVBcHByb3ZlLnBuZ2A7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHRoaXMuZ2V0UmVxdWlzaXRpb25zUmZjKCk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXF1aXNpdGlvbnNSZmMoKSB7XHJcbiAgICB0aGlzLm9ubG9hZGVyLmVtaXQodHJ1ZSk7IFxyXG4gICAgXHJcbiAgICB0aGlzLmZhZC5nZXRSZXF1aXNpdGlvbnNSZmModGhpcy5yZmMpXHJcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSkpKSBcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7IFxyXG4gICAgICAgICAgICB0aGlzLnJlcXVpc2l0aW9uc0ZlYSA9IHJlcy5kYXRhLnJlcXVpc2l0aW9ucztcclxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudHNBcHByb3ZhbExpc3QgPSB0aGlzLnJlcXVpc2l0aW9uc0ZlYS5mbGF0TWFwKHJlcXVpc2l0aW9uID0+IFxyXG4gICAgICAgICAgICAgIHJlcXVpc2l0aW9uLmRvY3VtZW50cy5tYXAoZG9jID0+ICh7XHJcbiAgICAgICAgICAgICAgICBkb2M6IGRvYyxcclxuICAgICAgICAgICAgICAgIGlkOiBkb2MuZG9jdW1lbnRJZCxcclxuICAgICAgICAgICAgICAgIGlkUmVxdWlzaXRpb246IHJlcXVpc2l0aW9uLnJlcXVpc2l0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICBhcHByb3ZlZDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgaXNWaXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXHJcbiAgICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSxcclxuICAgICAgICAgICAgICBnZXREb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yRGVzY3JpcHRpb24oRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSksXHJcbiAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xyXG4gICAgICAgICAgICApKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcclxuICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuSFRUUCxcclxuICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLFxyXG4gICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXBwcm92YWwoZG9jdW1lbnQ6IERvY3VtZW50QXBwcm92YWxGZWEpIHtcclxuICAgIGRvY3VtZW50LmFwcHJvdmVkID0gZG9jdW1lbnQuYXBwcm92ZWQgPT09IHRydWUgPyB1bmRlZmluZWQgOiB0cnVlO1xyXG4gICAgdGhpcy51cGRhdGVBcHByb3ZlQWxsU3RhdGUoKTtcclxuICB9XHJcbiAgXHJcbiAgdG9nZ2xlUmVqZWN0aW9uKGRvY3VtZW50OiBEb2N1bWVudEFwcHJvdmFsRmVhKSB7XHJcbiAgICBkb2N1bWVudC5hcHByb3ZlZCA9IGRvY3VtZW50LmFwcHJvdmVkID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IGZhbHNlO1xyXG4gICAgdGhpcy51cGRhdGVBcHByb3ZlQWxsU3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFwcHJvdmVBbGxTdGF0ZSgpIHtcclxuICAgIHRoaXMuYXBwcm92ZUFsbCA9IHRoaXMuZG9jdW1lbnRzQXBwcm92YWxMaXN0LmV2ZXJ5KGRvYyA9PiBkb2MuYXBwcm92ZWQgPT09IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgYXBwcm92ZUFsbERvY3VtZW50cygpIHtcclxuICAgIHRoaXMuYXBwcm92ZUFsbCA9ICF0aGlzLmFwcHJvdmVBbGw7XHJcbiAgICB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5mb3JFYWNoKGRvYyA9PiBkb2MuYXBwcm92ZWQgPSB0aGlzLmFwcHJvdmVBbGwgPyB0cnVlIDogdW5kZWZpbmVkKTtcclxuICB9XHJcblxyXG4gIGdldEFwcHJvdmVkQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5maWx0ZXIoZG9jID0+IGRvYy5hcHByb3ZlZCA9PT0gdHJ1ZSkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVqZWN0ZWRDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRzQXBwcm92YWxMaXN0LmZpbHRlcihkb2MgPT4gZG9jLmFwcHJvdmVkID09PSBmYWxzZSkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZW1pdEFwcHJvdmVkRG9jdW1lbnRzKCkge1xyXG4gICAgY29uc3QgYXBwcm92ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5maWx0ZXIoZG9jID0+IGRvYy5hcHByb3ZlZCAhPT0gdW5kZWZpbmVkKTtcclxuICAgIGNvbnNvbGUubG9nKGFwcHJvdmVkRG9jdW1lbnRzKTtcclxuICAgIHRoaXMub25ldmVudC5lbWl0KGFwcHJvdmVkRG9jdW1lbnRzKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc2VlRG9jdW1lbnRGZWEoZG9jdW1lbnQ6IERvY3VtZW50QXBwcm92YWxGZWEpIHtcclxuICAgIGRvY3VtZW50LmlzVmlzaWJsZSA9ICFkb2N1bWVudC5pc1Zpc2libGU7XHJcbiAgICBpZiAoZG9jdW1lbnQuaXNWaXNpYmxlKSB7XHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTsgXHJcbiAgICAgIHRoaXMuZmFkLmdldERvY3VtZW50RmVhKGRvY3VtZW50LmlkISAsIHsgbG9hZGVyOiB0cnVlLCBlcnJvcjogdHJ1ZSB9KVxyXG4gICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSkpKSBcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LmRvYykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihyZXMuZGF0YS5maWxlKTtcclxuICAgICAgICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBpKSA9PiBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpKTtcclxuICAgICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcbiAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0QmFzZTY0KGJsb2IsIGRvY3VtZW50KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcclxuICAgICAgICAgICAgICAgIERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLlNFUlZJQ0UsXHJcbiAgICAgICAgICAgICAgICBnZXREb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yRGVzY3JpcHRpb24oRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSksXHJcbiAgICAgICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXHJcbiAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcclxuICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQLFxyXG4gICAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQKSxcclxuICAgICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWREb2N1bWVudEZlYShkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xyXG4gICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpOyBcclxuICAgIHRoaXMuZmFkLmdldERvY3VtZW50RmVhKGRvY3VtZW50LmlkISlcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5vbmxvYWRlci5lbWl0KGZhbHNlKSkpIFxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgJiYgcmVzLmRhdGEuZmlsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IocmVzLmRhdGEuZmlsZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSkpO1xyXG4gICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KTtcclxuICAgICAgICAgICAgY29uc3QgbGluayA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBkb2N1bWVudC5kb2M/Lm5hbWUgfHwgJ2RvY3VtZW50LnBkZic7XHJcbiAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXHJcbiAgICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSxcclxuICAgICAgICAgICAgICBnZXREb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yRGVzY3JpcHRpb24oRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSksXHJcbiAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xyXG4gICAgICAgICAgICApKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcclxuICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuSFRUUCxcclxuICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLFxyXG4gICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBcclxuICBhc3luYyBnZXRCYXNlNjQoYmxvYjogQmxvYixkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xyXG4gICBjb25zb2xlLmxvZyhibG9iKVxyXG4gICAgY29uc3QgZGF0YSA9IG5ldyBGaWxlKFtibG9iXSwgJ2ZpbGUucGRmJywgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KTtcclxuICAgIGNvbnN0IGJhc2U2NCA9ICBhd2FpdCBTaGFyZWRVdGlscy5maWxlVG9CYXNlNjQoZGF0YSk7XHJcbiAgICBpZiAoYmFzZTY0KSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVBkZihiYXNlNjQgYXMgc3RyaW5nLGRvY3VtZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkVSUk9SX1BERiwgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLCAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplUGRmKHBkZjogc3RyaW5nLCBkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xyXG4gICAgaWYgKCF0aGlzLnBhZ2VzTWFwLmhhcyhkb2N1bWVudC5pZCEpKSB7XHJcbiAgICAgIHRoaXMucGFnZXNNYXAuc2V0KGRvY3VtZW50LmlkISwgW10pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdlc01hcC5nZXQoZG9jdW1lbnQuaWQhKSEubGVuZ3RoID0gMDtcclxuICAgIH1cclxuICBcclxuICAgIHRoaXMucGRmU2VydmljZS5pbml0aWFsaXplKHBkZiwgU2hhcmVkVXRpbHMuZ2VuZXJhdGVVVUlEKCkpO1xyXG4gICAgdGhpcy5nZXRQYWdlcyhkb2N1bWVudCk7XHJcbiAgfVxyXG4gIFxyXG4gIGdldFBhZ2VzKGRvY3VtZW50OiBEb2N1bWVudEFwcHJvdmFsRmVhKSB7XHJcbiAgICBpZiAoIXRoaXMucGFnZXNNYXAuaGFzKGRvY3VtZW50LmlkISkpIHtcclxuICAgICAgdGhpcy5wYWdlc01hcC5zZXQoZG9jdW1lbnQuaWQhLCBbXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhZ2VzTWFwLmdldChkb2N1bWVudC5pZCEpIS5sZW5ndGggPSAwOyBcclxuICAgIH1cclxuICBcclxuICAgIGlmICh0aGlzLnBkZkxpYnJhcnkpIHtcclxuICAgICAgdGhpcy5wZGZMaWJyYXJ5LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICB0aGlzLnBkZkxpYnJhcnkgPSB0aGlzLnBkZlNlcnZpY2UucGFnZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGNvbnN0IGRvY1BhZ2VzID0gdGhpcy5wYWdlc01hcC5nZXQoZG9jdW1lbnQuaWQhKSE7XHJcbiAgICAgIGRvY1BhZ2VzLnB1c2gocmVzKTtcclxuICBcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIH0pO1xyXG4gIFxyXG4gIH1cclxuICBcclxuXHJcbiAgLy9QREYgR2VuZXJhbCB2aWV3ZXIgbWV0aG9kc1xyXG5cclxuICBvbnBhZ2VjaGFuZ2UocGFnZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnBhZ2UgPSBwYWdlO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9QYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgdGhpcy5nZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50LnNjcm9sbFRvUGFnZShwYWdlKTtcclxuICB9XHJcblxyXG4gIG9ubG9hZHBhZ2UoZGF0YTogUmVzcG9uc2VTdWNjZXNzKSB7XHJcbiAgICBpZiAoZGF0YS5wYWdlID09IDEpIHtcclxuICAgICAgY29uc3QgaWQgPSBcImZhZC12aWV3ZXItcGFnZS12MS0xXCI7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7O1xyXG4gICAgICB0aGlzLmhlaWdodCA9IGR5bmFtaWNEaXYhLmNsaWVudEhlaWdodCArICdweCc7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q3VzdG9taXphdGlvblN0eWxlKHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOiB2b2lkIHtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gVXRpbHMubWVyZ2VDb25maWd1cmF0aW9uKFxyXG4gICAgICAgIG5ldyBDb25maWd1cmF0aW9uKCksXHJcbiAgICAgICAgRE9DVU1FTlRfQVBQUk9WQUxfTElTVF9ERUZBVUxULFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvblxyXG4gICAgICApO1xyXG4gICAgfVxyXG59XHJcbiIsIlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVxdWlzaXRpb24gb2YgcmVxdWlzaXRpb25zRmVhXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudFwiID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiID5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVxdWlzaXRpb24ubmFtZSB9fSAoe3tyZXF1aXNpdGlvbi5kb2N1bWVudHMubGVuZ3RofX0pXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNlbmRUb319IEFsZnJlZG8gVmlsbGFudWV2YSAge3sgcmVxdWlzaXRpb24uc2VuZEJ5IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVxdWlzaXRpb24uc2VuZEJ5RW1haWwgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc2l0aW9uLWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtc3VidGl0bGUtYm9sZFwiPklEIHt7IHJlcXVpc2l0aW9uLnJlcXVpc2l0aW9uSWQgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50cy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRvY3VtZW50IG9mIGRvY3VtZW50c0FwcHJvdmFsTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb2N1bWVudC5pZFJlcXVpc2l0aW9uID09PSByZXF1aXNpdGlvbi5yZXF1aXNpdGlvbklkXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRcIiAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9ybWF0aW9uXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1uYW1lIGZhZC1wb3J0YWwtc3VidGl0bGUtYm9sZFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZG9jdW1lbnQuZG9jPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbGlkYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImRvY3VtZW50LmFwcHJvdmVkID09PSBmYWxzZSA/IGltYWdlcy5hY3RpdmUucmVqZWN0IDogaW1hZ2VzLmluYWN0aXZlLnJlamVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlamVjdGlvbihkb2N1bWVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWZhZC1pbWFnZS1pbmxpbmUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJkb2N1bWVudC5hcHByb3ZlZCA9PT0gdHJ1ZSA/IGltYWdlcy5hY3RpdmUuYXBwcm92ZSA6IGltYWdlcy5pbmFjdGl2ZS5hcHByb3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQXBwcm92YWwoZG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1zdWJ0aXRsZS1ib2xkXCIgKGNsaWNrKT1cInNlZURvY3VtZW50RmVhKGRvY3VtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZG9jdW1lbnQuaXNWaXNpYmxlID8gJ09jdWx0YXIgZG9jdW1lbnRvJyA6ICdWZXIgZG9jdW1lbnRvJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtc3VidGl0bGUtYm9sZFwiIChjbGljayk9XCJkb3dubG9hZERvY3VtZW50RmVhKGRvY3VtZW50KVwiPnt7Y29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb3dubG9hZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZG9jdW1lbnQuZG9jPy5wYWdlcyB9fSB7e2NvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8ucGFnZXN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGRmLXZpZXdlclwiICpuZ0lmPVwiZG9jdW1lbnQuaXNWaXNpYmxlXCIgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIjEwMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctZmFkLXZpZXdlci1nZW5lcmFsLXBkZi12aWV3ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlc109XCJwYWdlc01hcC5nZXQoZG9jdW1lbnQuaWQhKSA/PyBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25wYWdlY2hhbmdlKT1cIm9ucGFnZWNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmxvYWRwYWdlKT1cIm9ubG9hZHBhZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWZhZC12aWV3ZXItcGRmLW1pbmktdmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pVmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlndXJhdGlvbl09XCJtaW5pVmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlc109XCJwYWdlc01hcC5nZXQoZG9jdW1lbnQuaWQhKSA/PyBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlXT1cInBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25wYWdlY2hhbmdlKT1cInNjcm9sbFRvUGFnZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWZhZC12aWV3ZXItcGRmLW1pbmktdmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctZmFkLXZpZXdlci1nZW5lcmFsLXBkZi12aWV3ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQgc2VsZWN0b3ItZG9jdW1lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtc3RhdHVzLWJhclwiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFwcHJvdmVkQ291bnQoKSA9PT0gMCAmJiBnZXRSZWplY3RlZENvdW50KCkgPT09IDBcIiBjbGFzcz1cImRvY3VtZW50LXN0YXR1cy1tZXNzYWdlIFwiPlxyXG4gICAgICAgICAgICAgICAgQXBydWViYSBsb3MgZG9jdW1lbnRvcyBwYXJhIGZpcm1hcmxvcyBjb24gdHUgZS5maXJtYVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBcHByb3ZlZENvdW50KCkgPiAwIHx8IGdldFJlamVjdGVkQ291bnQoKSA+IDBcIiBjbGFzcz1cImRvY3VtZW50LXN0YXR1cy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92ZS1hbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhcHByb3ZlQWxsID8gaW1hZ2VzLmFjdGl2ZS5hcHByb3ZlIDogaW1hZ2VzLmluYWN0aXZlLmFwcHJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwcm92ZUFsbERvY3VtZW50cygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhcHByb3ZlQWxsRG9jdW1lbnRzKClcIj5BcHJvYmFyIHRvZG9zIGxvcyBkb2N1bWVudG9zICh7eyBkb2N1bWVudHNBcHByb3ZhbExpc3QubGVuZ3RoIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1jb3VudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldEFwcHJvdmVkQ291bnQoKSA+IDAgJiYgZ2V0UmVqZWN0ZWRDb3VudCgpID09PSAwXCIgY2xhc3M9XCJmYWQtcG9ydGFsLWluZm9ybWF0aXZlLWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0QXBwcm92ZWRDb3VudCgpIH19IGRvY3VtZW50b3MgYXByb2JhZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0UmVqZWN0ZWRDb3VudCgpID4gMCAmJiBnZXRBcHByb3ZlZENvdW50KCkgPT09IDBcIiBjbGFzcz1cImZhZC1wb3J0YWwtaW5mb3JtYXRpdmUtYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRSZWplY3RlZENvdW50KCkgfX0gZG9jdW1lbnRvcyByZWNoYXphZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRBcHByb3ZlZENvdW50KCkgPiAwICYmIGdldFJlamVjdGVkQ291bnQoKSA+IDBcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICBjbGFzcz1cImZhZC1wb3J0YWwtaW5mb3JtYXRpdmUtYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0QXBwcm92ZWRDb3VudCgpIH19IGRvY3VtZW50b3MgYXByb2JhZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gIGNsYXNzPVwiZmFkLXBvcnRhbC1pbmZvcm1hdGl2ZS1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRSZWplY3RlZENvdW50KCkgfX0gZG9jdW1lbnRvcyByZWNoYXphZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIChjbGljayk9XCJlbWl0QXBwcm92ZWREb2N1bWVudHMoKVwiPkNvbnRpbnVhcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcblxyXG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zaWduYXR1cmUtZmVhL3NyYy9saWIvY29tcG9uZW50cy9kb2N1bWVudC1hcHByb3ZhbC1saXN0L2RvY3VtZW50LWFwcHJvdmFsLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZG9jdW1lbnQtYXBwcm92YWwtbGlzdC9kb2N1bWVudC1hcHByb3ZhbC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFNUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLHVDQUF1QyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUcsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFRaEUsTUFBTSxPQUFPLDZCQUE2QjtJQXlCeEMsWUFBcUIsV0FBdUIsRUFBVSxHQUFlLEVBQVMsR0FBc0IsRUFBUyxVQUFpQztRQUF6SCxn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QXJCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi9tb2RlbHMvY29yZSc7XG5pbXBvcnQgeyBEb2N1bWVudEFwcHJvdmFsRmVhLCBJRG9jdW1lbnRBcHByb3ZhbExpc3RDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IERPQ1VNRU5UX0FQUFJPVkFMX0xJU1RfREVGQVVMVCwgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEZhZFNlcnZpY2UsIFJlcXVpc2l0aW9uc0ZlYSwgUmVzcG9uc2VEYXRhLCAgUmVxdWlzaXRpb25GZWFEYXRhLCBEb2N1bWVudEZlYSB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBHZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50IGFzIEdlbmVyYWxQZGZWaWV3ZXJDb21wb25lbnRNb2R1bGUsIElQZGZNaW5pVmlld0NvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtdmlld2VyJ1xuaW1wb3J0IHsgZmluYWxpemUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmdGYWRQZGZSZWFkZXJTZXJ2aWNlLCBSZXNwb25zZVN1Y2Nlc3MgfSBmcm9tICdAZmFkLXByb2R1Y3RvL25nLWZhZC1wZGYtcmVhZGVyJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgUmVzcG9uc2VFcnJvciwgU2hhcmVkVXRpbHMgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2hhcmVkJztcbmltcG9ydCB7IERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctZmFkLXNpZ25hdHVyZS1mZWEtZG9jdW1lbnQtYXBwcm92YWwtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudC1hcHByb3ZhbC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtOZ0ZhZFBkZlJlYWRlclNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50QXBwcm92YWxMaXN0Q29tcG9uZW50IHtcbiAgXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb24hOiBJRG9jdW1lbnRBcHByb3ZhbExpc3RDb25maWd1cmF0aW9uO1xuICBASW5wdXQoKSByZmMhOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBvbmxvYWRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9uZXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERvY3VtZW50QXBwcm92YWxGZWFbXT4oKTtcbiAgQE91dHB1dCgpIG9uZXJyb3I6IEV2ZW50RW1pdHRlcjxSZXNwb25zZUVycm9yPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcGFnZXNNYXA6IE1hcDxzdHJpbmcsIFJlc3BvbnNlU3VjY2Vzc1tdPiA9IG5ldyBNYXAoKTtcbiAgcmVxdWlzaXRpb25zRmVhOiBSZXF1aXNpdGlvbkZlYURhdGFbXSA9IFtdO1xuICBkb2N1bWVudHNBcHByb3ZhbExpc3Q6IERvY3VtZW50QXBwcm92YWxGZWFbXSA9IFtdO1xuICBhcHByb3ZlQWxsOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICBpbWFnZXMgPSB7XG4gICAgaW5hY3RpdmU6e1xuICAgICAgcmVqZWN0OiAnJyxcbiAgICAgIGFwcHJvdmU6ICcnXG4gICAgfSxcbiAgICBhY3RpdmU6e1xuICAgICAgcmVqZWN0OiAnJyxcbiAgICAgIGFwcHJvdmU6ICcnIFxuICAgIH1cbiAgfVxuXG4gIFxuXG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIGhvc3RDb250ZXh0OiBFbGVtZW50UmVmLCBwcml2YXRlIGZhZDogRmFkU2VydmljZSxwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSBwZGZTZXJ2aWNlOiBOZ0ZhZFBkZlJlYWRlclNlcnZpY2UgKSB7fVxuICBcbiAgXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuY29uZmlndXJhdGlvbix0aGlzLnJmYylcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSh0aGlzLmhvc3RDb250ZXh0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24/LnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlRGlyZWN0b3J5KSB7XG4gICAgICB0aGlzLmltYWdlcy5pbmFjdGl2ZS5yZWplY3QgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5pbmFjdGl2ZVJlamVjdCA/PyBgJHt0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcy5pbWFnZURpcmVjdG9yeX0vaW5hY3RpdmVSZWplY3QucG5nYDtcbiAgICAgIHRoaXMuaW1hZ2VzLmluYWN0aXZlLmFwcHJvdmUgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5pbmFjdGl2ZUFwcHJvdmUgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L2luYWN0aXZlQXBwcm92ZS5wbmdgO1xuICAgICAgdGhpcy5pbWFnZXMuYWN0aXZlLnJlamVjdCA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LmFjdGl2ZVJlamVjdCA/PyBgJHt0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcy5pbWFnZURpcmVjdG9yeX0vYWN0aXZlUmVqZWN0LnBuZ2A7XG4gICAgICB0aGlzLmltYWdlcy5hY3RpdmUuYXBwcm92ZSA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LmFjdGl2ZUFwcHJvdmUgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L2FjdGl2ZUFwcHJvdmUucG5nYDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBcbiAgICB0aGlzLmdldFJlcXVpc2l0aW9uc1JmYygpO1xuICB9XG5cbiAgZ2V0UmVxdWlzaXRpb25zUmZjKCkge1xuICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTsgXG4gICAgXG4gICAgdGhpcy5mYWQuZ2V0UmVxdWlzaXRpb25zUmZjKHRoaXMucmZjKVxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5vbmxvYWRlci5lbWl0KGZhbHNlKSkpIFxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHsgXG4gICAgICAgICAgICB0aGlzLnJlcXVpc2l0aW9uc0ZlYSA9IHJlcy5kYXRhLnJlcXVpc2l0aW9ucztcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRzQXBwcm92YWxMaXN0ID0gdGhpcy5yZXF1aXNpdGlvbnNGZWEuZmxhdE1hcChyZXF1aXNpdGlvbiA9PiBcbiAgICAgICAgICAgICAgcmVxdWlzaXRpb24uZG9jdW1lbnRzLm1hcChkb2MgPT4gKHtcbiAgICAgICAgICAgICAgICBkb2M6IGRvYyxcbiAgICAgICAgICAgICAgICBpZDogZG9jLmRvY3VtZW50SWQsXG4gICAgICAgICAgICAgICAgaWRSZXF1aXNpdGlvbjogcmVxdWlzaXRpb24ucmVxdWlzaXRpb25JZCxcbiAgICAgICAgICAgICAgICBhcHByb3ZlZDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGlzVmlzaWJsZTogZmFsc2VcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSxcbiAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLlNFUlZJQ0UpLFxuICAgICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXG4gICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQLFxuICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLFxuICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZUFwcHJvdmFsKGRvY3VtZW50OiBEb2N1bWVudEFwcHJvdmFsRmVhKSB7XG4gICAgZG9jdW1lbnQuYXBwcm92ZWQgPSBkb2N1bWVudC5hcHByb3ZlZCA9PT0gdHJ1ZSA/IHVuZGVmaW5lZCA6IHRydWU7XG4gICAgdGhpcy51cGRhdGVBcHByb3ZlQWxsU3RhdGUoKTtcbiAgfVxuICBcbiAgdG9nZ2xlUmVqZWN0aW9uKGRvY3VtZW50OiBEb2N1bWVudEFwcHJvdmFsRmVhKSB7XG4gICAgZG9jdW1lbnQuYXBwcm92ZWQgPSBkb2N1bWVudC5hcHByb3ZlZCA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBmYWxzZTtcbiAgICB0aGlzLnVwZGF0ZUFwcHJvdmVBbGxTdGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlQXBwcm92ZUFsbFN0YXRlKCkge1xuICAgIHRoaXMuYXBwcm92ZUFsbCA9IHRoaXMuZG9jdW1lbnRzQXBwcm92YWxMaXN0LmV2ZXJ5KGRvYyA9PiBkb2MuYXBwcm92ZWQgPT09IHRydWUpO1xuICB9XG5cbiAgYXBwcm92ZUFsbERvY3VtZW50cygpIHtcbiAgICB0aGlzLmFwcHJvdmVBbGwgPSAhdGhpcy5hcHByb3ZlQWxsO1xuICAgIHRoaXMuZG9jdW1lbnRzQXBwcm92YWxMaXN0LmZvckVhY2goZG9jID0+IGRvYy5hcHByb3ZlZCA9IHRoaXMuYXBwcm92ZUFsbCA/IHRydWUgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgZ2V0QXBwcm92ZWRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5maWx0ZXIoZG9jID0+IGRvYy5hcHByb3ZlZCA9PT0gdHJ1ZSkubGVuZ3RoO1xuICB9XG5cbiAgZ2V0UmVqZWN0ZWRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5maWx0ZXIoZG9jID0+IGRvYy5hcHByb3ZlZCA9PT0gZmFsc2UpLmxlbmd0aDtcbiAgfVxuXG4gIGVtaXRBcHByb3ZlZERvY3VtZW50cygpIHtcbiAgICBjb25zdCBhcHByb3ZlZERvY3VtZW50cyA9IHRoaXMuZG9jdW1lbnRzQXBwcm92YWxMaXN0LmZpbHRlcihkb2MgPT4gZG9jLmFwcHJvdmVkICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnNvbGUubG9nKGFwcHJvdmVkRG9jdW1lbnRzKTtcbiAgICB0aGlzLm9uZXZlbnQuZW1pdChhcHByb3ZlZERvY3VtZW50cyk7XG4gIH1cblxuICBzZWVEb2N1bWVudEZlYShkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xuICAgIGRvY3VtZW50LmlzVmlzaWJsZSA9ICFkb2N1bWVudC5pc1Zpc2libGU7XG5cbiAgICBpZiAoZG9jdW1lbnQuaXNWaXNpYmxlICYmICFkb2N1bWVudC5kb2M/LmZpbGUpIHtcbiAgICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLmZhZC5nZXREb2N1bWVudEZlYShkb2N1bWVudC5pZCEsIHsgbG9hZGVyOiB0cnVlLCBlcnJvcjogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5vbmxvYWRlci5lbWl0KGZhbHNlKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5kb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2MuZmlsZSA9IFwiZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LFwiICsgcmVzLmRhdGEuZmlsZTsgXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5TRVJWSUNFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5TRVJWSUNFKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG5cbiBkb3dubG9hZERvY3VtZW50RmVhKGRvY3VtZW50OiBEb2N1bWVudEFwcHJvdmFsRmVhKSB7XG4gICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpOyBcbiAgICB0aGlzLmZhZC5nZXREb2N1bWVudEZlYShkb2N1bWVudC5pZCEpXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLm9ubG9hZGVyLmVtaXQoZmFsc2UpKSkgXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogIGFzeW5jIChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgJiYgcmVzLmRhdGEuZmlsZSkge1xuICAgICAgICAgICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKHJlcy5kYXRhLmZpbGUpO1xuICAgICAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICAgICAgICBhd2FpdCBTaGFyZWRVdGlscy5kb3dubG9hZEZpbGUoYmxvYixkb2N1bWVudC5kb2M/Lm5hbWUhKS50aGVuKHJlcz0+e1xuXG4gICAgICAgICAgICB9KS5jYXRjaChlcnJvcj0+e1xuICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcbiAgICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5FUlJPUl9QREYsXG4gICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkVSUk9SX1BERiksXG4gICAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXG4gICAgICAgICAgICAgIERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLlNFUlZJQ0UsXG4gICAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5TRVJWSUNFKSxcbiAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFxuICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuSFRUUCxcbiAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQKSxcbiAgICAgICAgICAgICduZy1mYWQtcG9ydGFsLXNpZ25hdHVyZS1mZWEtZG9jdW1lbnQtYXBwcm92YWwtbGlzdCdcbiAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbiAgXG5cbiAgZ2V0RG9jdW1lbnRJZChpZDogc3RyaW5nKXtcbiAgICByZXR1cm4gXCJwZGZcIitpZCEucmVwbGFjZSgvLS9nLCAnJyk7XG4gIH1cbiAgc2V0Q3VzdG9taXphdGlvblN0eWxlKHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IFV0aWxzLm1lcmdlQ29uZmlndXJhdGlvbihcbiAgICAgICAgbmV3IENvbmZpZ3VyYXRpb24oKSxcbiAgICAgICAgRE9DVU1FTlRfQVBQUk9WQUxfTElTVF9ERUZBVUxULFxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25cbiAgICAgICk7XG4gICAgfVxufVxuIiwiXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVxdWlzaXRpb24gb2YgcmVxdWlzaXRpb25zRmVhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIiA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByZXF1aXNpdGlvbi5uYW1lIH19ICh7e3JlcXVpc2l0aW9uLmRvY3VtZW50cy5sZW5ndGh9fSlcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2VuZFRvfX0gQWxmcmVkbyBWaWxsYW51ZXZhICB7eyByZXF1aXNpdGlvbi5zZW5kQnkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByZXF1aXNpdGlvbi5zZW5kQnlFbWFpbCB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzaXRpb24taWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkXCI+SUQge3sgcmVxdWlzaXRpb24ucmVxdWlzaXRpb25JZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRvY3VtZW50IG9mIGRvY3VtZW50c0FwcHJvdmFsTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG9jdW1lbnQuaWRSZXF1aXNpdGlvbiA9PT0gcmVxdWlzaXRpb24ucmVxdWlzaXRpb25JZFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudFwiICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9ybWF0aW9uXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtbmFtZSBmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRvY3VtZW50LmRvYz8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbGlkYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImRvY3VtZW50LmFwcHJvdmVkID09PSBmYWxzZSA/IGltYWdlcy5hY3RpdmUucmVqZWN0IDogaW1hZ2VzLmluYWN0aXZlLnJlamVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSZWplY3Rpb24oZG9jdW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWZhZC1pbWFnZS1pbmxpbmU+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJkb2N1bWVudC5hcHByb3ZlZCA9PT0gdHJ1ZSA/IGltYWdlcy5hY3RpdmUuYXBwcm92ZSA6IGltYWdlcy5pbmFjdGl2ZS5hcHByb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFwcHJvdmFsKGRvY3VtZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZFwiIChjbGljayk9XCJzZWVEb2N1bWVudEZlYShkb2N1bWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkb2N1bWVudC5pc1Zpc2libGUgPyAnT2N1bHRhciBkb2N1bWVudG8nIDogJ1ZlciBkb2N1bWVudG8nIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZFwiIChjbGljayk9XCJkb3dubG9hZERvY3VtZW50RmVhKGRvY3VtZW50KVwiPnt7Y29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb3dubG9hZH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZG9jdW1lbnQuZG9jPy5wYWdlcyB9fSB7e2NvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8ucGFnZXN9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1mYWQtc2lnbmF0dXJlLWZlYS1wZGYtdmlld2VyLWZlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZG9jdW1lbnQuaXNWaXNpYmxlICAmJiBkb2N1bWVudC5kb2M/LmZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWxlXT1cImRvY3VtZW50LmRvYz8uZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cImlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJnZXREb2N1bWVudElkKGRvY3VtZW50LmlkISlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWZhZC1zaWduYXR1cmUtZmVhLXBkZi12aWV3ZXItZmVhPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQgc2VsZWN0b3ItZG9jdW1lbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LXN0YXR1cy1iYXJcIj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFwcHJvdmVkQ291bnQoKSA9PT0gMCAmJiBnZXRSZWplY3RlZENvdW50KCkgPT09IDBcIiBjbGFzcz1cImRvY3VtZW50LXN0YXR1cy1tZXNzYWdlIFwiPlxuICAgICAgICAgICAgICAgIEFwcnVlYmEgbG9zIGRvY3VtZW50b3MgcGFyYSBmaXJtYXJsb3MgY29uIHR1IGUuZmlybWFcbiAgICAgICAgICAgIDwvZGl2PlxuICAgIFxuICAgICAgICAgIFxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFwcHJvdmVkQ291bnQoKSA+IDAgfHwgZ2V0UmVqZWN0ZWRDb3VudCgpID4gMFwiIGNsYXNzPVwiZG9jdW1lbnQtc3RhdHVzLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92ZS1hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWZhZC1pbWFnZS1pbmxpbmUgXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImFwcHJvdmVBbGwgPyBpbWFnZXMuYWN0aXZlLmFwcHJvdmUgOiBpbWFnZXMuaW5hY3RpdmUuYXBwcm92ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwcm92ZUFsbERvY3VtZW50cygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctZmFkLWltYWdlLWlubGluZT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImFwcHJvdmVBbGxEb2N1bWVudHMoKVwiPkFwcm9iYXIgdG9kb3MgbG9zIGRvY3VtZW50b3MgKHt7IGRvY3VtZW50c0FwcHJvdmFsTGlzdC5sZW5ndGggfX0pPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1jb3VudHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRBcHByb3ZlZENvdW50KCkgPiAwICYmIGdldFJlamVjdGVkQ291bnQoKSA9PT0gMFwiIGNsYXNzPVwiZmFkLXBvcnRhbC1pbmZvcm1hdGl2ZS1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRBcHByb3ZlZENvdW50KCkgfX0gZG9jdW1lbnRvcyBhcHJvYmFkb3NcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldFJlamVjdGVkQ291bnQoKSA+IDAgJiYgZ2V0QXBwcm92ZWRDb3VudCgpID09PSAwXCIgY2xhc3M9XCJmYWQtcG9ydGFsLWluZm9ybWF0aXZlLWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFJlamVjdGVkQ291bnQoKSB9fSBkb2N1bWVudG9zIHJlY2hhemFkb3NcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldEFwcHJvdmVkQ291bnQoKSA+IDAgJiYgZ2V0UmVqZWN0ZWRDb3VudCgpID4gMFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICBjbGFzcz1cImZhZC1wb3J0YWwtaW5mb3JtYXRpdmUtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEFwcHJvdmVkQ291bnQoKSB9fSBkb2N1bWVudG9zIGFwcm9iYWRvc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gIGNsYXNzPVwiZmFkLXBvcnRhbC1pbmZvcm1hdGl2ZS1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0UmVqZWN0ZWRDb3VudCgpIH19IGRvY3VtZW50b3MgcmVjaGF6YWRvc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICBcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJmYWQtcG9ydGFsLXByaW1hcnlcIiAoY2xpY2spPVwiZW1pdEFwcHJvdmVkRG9jdW1lbnRzKClcIj5Db250aW51YXI8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBcblxuIl19
@@ -13,11 +13,11 @@ export class GenericErrorFeaComponent {
13
13
  this.configuration = Utils.mergeConfiguration(new Configuration(), GENERIC_ERROR_FEA_CONFIGURATION_DEFAULT, this.configuration);
14
14
  }
15
15
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericErrorFeaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GenericErrorFeaComponent, selector: "ng-fad-signature-fea-generic-error-fea", inputs: { configuration: "configuration", title: "title", instruction: "instruction" }, ngImport: i0, template: "<ng-fad-image-inline [src]=\"errorIgm\"></ng-fad-image-inline>\n<div class=\"fad-portal-title-bold\">{{ title ? title : configuration.customization?.moduleCustomization?.legends?.title }}</div>\n<div class=\"fad-portal-content\">{{ instruction ? instruction : configuration.customization?.moduleCustomization?.legends?.instruction }}</div>\n", styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:var(--fad-portal-common-separation-md)}\n"], dependencies: [{ kind: "component", type: i1.NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"] }] }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GenericErrorFeaComponent, selector: "ng-fad-signature-fea-generic-error-fea", inputs: { configuration: "configuration", title: "title", instruction: "instruction" }, ngImport: i0, template: "<ng-fad-image-inline [src]=\"errorIgm\"></ng-fad-image-inline>\r\n<div class=\"fad-portal-title-bold\">{{ title ? title : configuration.customization?.moduleCustomization?.legends?.title }}</div>\r\n<div class=\"fad-portal-content\">{{ instruction ? instruction : configuration.customization?.moduleCustomization?.legends?.instruction }}</div>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:var(--fad-portal-common-separation-md)}\n"], dependencies: [{ kind: "component", type: i1.NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"] }] }); }
17
17
  }
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericErrorFeaComponent, decorators: [{
19
19
  type: Component,
20
- args: [{ selector: 'ng-fad-signature-fea-generic-error-fea', template: "<ng-fad-image-inline [src]=\"errorIgm\"></ng-fad-image-inline>\n<div class=\"fad-portal-title-bold\">{{ title ? title : configuration.customization?.moduleCustomization?.legends?.title }}</div>\n<div class=\"fad-portal-content\">{{ instruction ? instruction : configuration.customization?.moduleCustomization?.legends?.instruction }}</div>\n", styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:var(--fad-portal-common-separation-md)}\n"] }]
20
+ args: [{ selector: 'ng-fad-signature-fea-generic-error-fea', template: "<ng-fad-image-inline [src]=\"errorIgm\"></ng-fad-image-inline>\r\n<div class=\"fad-portal-title-bold\">{{ title ? title : configuration.customization?.moduleCustomization?.legends?.title }}</div>\r\n<div class=\"fad-portal-content\">{{ instruction ? instruction : configuration.customization?.moduleCustomization?.legends?.instruction }}</div>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:var(--fad-portal-common-separation-md)}\n"] }]
21
21
  }], propDecorators: { configuration: [{
22
22
  type: Input
23
23
  }], title: [{
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
25
25
  }], instruction: [{
26
26
  type: Input
27
27
  }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZ2VuZXJpYy1lcnJvci1mZWEvZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZ2VuZXJpYy1lcnJvci1mZWEvZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7O0FBTzVFLE1BQU0sT0FBTyx3QkFBd0I7SUFNbkMsUUFBUTtRQUNOLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLFdBQVcsQ0FBQztJQUMxSSxDQUFDO0lBRUQscUJBQXFCLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxlQUFlO1FBQzVELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksYUFBYSxFQUFFLEVBQUUsdUNBQXVDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xJLENBQUM7K0dBYlUsd0JBQXdCO21HQUF4Qix3QkFBd0Isc0tDWHJDLHVWQUdBOzs0RkRRYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0Usd0NBQXdDOzhCQUt6QyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHRU5FUklDX0VSUk9SX0ZFQV9DT05GSUdVUkFUSU9OX0RFRkFVTFQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSUdlbmVyaWNFcnJvckZlYUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctZmFkLXNpZ25hdHVyZS1mZWEtZ2VuZXJpYy1lcnJvci1mZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWVycm9yLWZlYS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNFcnJvckZlYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb24hOiBJR2VuZXJpY0Vycm9yRmVhQ29uZmlndXJhdGlvbjtcbiAgQElucHV0KCkgdGl0bGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluc3RydWN0aW9uITogc3RyaW5nO1xuICBlcnJvcklnbSE6IHN0cmluZztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSgpO1xuICAgIHRoaXMuZXJyb3JJZ20gPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5lcnJvciB8fCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VEaXJlY3Rvcnl9ZXJyb3Iuc3ZnYDtcbiAgfVxuXG4gIHNldEN1c3RvbWl6YXRpb25TdHlsZSh0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gVXRpbHMubWVyZ2VDb25maWd1cmF0aW9uKG5ldyBDb25maWd1cmF0aW9uKCksIEdFTkVSSUNfRVJST1JfRkVBX0NPTkZJR1VSQVRJT05fREVGQVVMVCwgdGhpcy5jb25maWd1cmF0aW9uKTtcbiAgfVxufVxuIiwiPG5nLWZhZC1pbWFnZS1pbmxpbmUgW3NyY109XCJlcnJvcklnbVwiPjwvbmctZmFkLWltYWdlLWlubGluZT5cbjxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlLWJvbGRcIj57eyB0aXRsZSA/IHRpdGxlIDogY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy50aXRsZSB9fTwvZGl2PlxuPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudFwiPnt7IGluc3RydWN0aW9uID8gaW5zdHJ1Y3Rpb24gOiBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/Lmluc3RydWN0aW9uIH19PC9kaXY+XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZ2VuZXJpYy1lcnJvci1mZWEvZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZ2VuZXJpYy1lcnJvci1mZWEvZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7O0FBTzVFLE1BQU0sT0FBTyx3QkFBd0I7SUFNbkMsUUFBUTtRQUNOLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLFdBQVcsQ0FBQztJQUMxSSxDQUFDO0lBRUQscUJBQXFCLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxlQUFlO1FBQzVELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksYUFBYSxFQUFFLEVBQUUsdUNBQXVDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xJLENBQUM7K0dBYlUsd0JBQXdCO21HQUF4Qix3QkFBd0Isc0tDWHJDLDZWQUdBOzs0RkRRYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0Usd0NBQXdDOzhCQUt6QyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEdFTkVSSUNfRVJST1JfRkVBX0NPTkZJR1VSQVRJT05fREVGQVVMVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IElHZW5lcmljRXJyb3JGZWFDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL3V0aWxzL3V0aWxzJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL2ZhZC1jb21tb24vbW9kZWxzL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy1mYWQtc2lnbmF0dXJlLWZlYS1nZW5lcmljLWVycm9yLWZlYScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtZXJyb3ItZmVhLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWVycm9yLWZlYS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljRXJyb3JGZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb24hOiBJR2VuZXJpY0Vycm9yRmVhQ29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBpbnN0cnVjdGlvbiE6IHN0cmluZztcclxuICBlcnJvcklnbSE6IHN0cmluZztcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSgpO1xyXG4gICAgdGhpcy5lcnJvcklnbSA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LmVycm9yIHx8IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeX1lcnJvci5zdmdgO1xyXG4gIH1cclxuXHJcbiAgc2V0Q3VzdG9taXphdGlvblN0eWxlKHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IFV0aWxzLm1lcmdlQ29uZmlndXJhdGlvbihuZXcgQ29uZmlndXJhdGlvbigpLCBHRU5FUklDX0VSUk9SX0ZFQV9DT05GSUdVUkFUSU9OX0RFRkFVTFQsIHRoaXMuY29uZmlndXJhdGlvbik7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1mYWQtaW1hZ2UtaW5saW5lIFtzcmNdPVwiZXJyb3JJZ21cIj48L25nLWZhZC1pbWFnZS1pbmxpbmU+XHJcbjxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlLWJvbGRcIj57eyB0aXRsZSA/IHRpdGxlIDogY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy50aXRsZSB9fTwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50XCI+e3sgaW5zdHJ1Y3Rpb24gPyBpbnN0cnVjdGlvbiA6IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uaW5zdHJ1Y3Rpb24gfX08L2Rpdj5cclxuIl19
@@ -0,0 +1,79 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { NgFadPdfReaderService } from '@fad-producto/ng-fad-pdf-reader';
3
+ import { GeneralPdfViewerComponent as GeneralPdfViewerComponentModule } from '@fad-producto-portal/ng-fad-viewer';
4
+ import { Utils } from '@fad-producto-portal/fad-common/utils/utils';
5
+ import { Configuration } from '@fad-producto-portal/fad-common/models/core';
6
+ import { PDF_VIEWER_FEA_DEFAULT } from '../../constants';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@fad-producto/ng-fad-pdf-reader";
9
+ import * as i2 from "@fad-producto-portal/ng-fad-viewer";
10
+ export class PdfViewerFeaComponent {
11
+ constructor(pdfService, cdr) {
12
+ this.pdfService = pdfService;
13
+ this.cdr = cdr;
14
+ this.pages = [];
15
+ this.page = 1;
16
+ this.miniViewConfig = { scrollIntoView: false };
17
+ this.height = 1000;
18
+ }
19
+ ngOnInit() {
20
+ if (this.file) {
21
+ this.initializePdf(this.file);
22
+ }
23
+ }
24
+ initializePdf(pdfBase64) {
25
+ this.pdfService.initialize(pdfBase64, `pdf-${this.index}`);
26
+ this.pdfService.pages.subscribe((res) => {
27
+ if (res) {
28
+ this.pages = [...this.pages, res];
29
+ }
30
+ });
31
+ }
32
+ onPageChange(page) {
33
+ this.page = page;
34
+ }
35
+ scrollToPage(page) {
36
+ this.generalPdfViewerComponent.scrollToPage(page);
37
+ }
38
+ onLoadPage(data) {
39
+ if (data.page === 1) {
40
+ const containerElement = document.getElementById(this.id);
41
+ if (!containerElement) {
42
+ return;
43
+ }
44
+ const observer = new MutationObserver(() => {
45
+ const viewerElement = containerElement.querySelector(`#fad-viewer-page-v1-1`);
46
+ if (viewerElement) {
47
+ observer.disconnect();
48
+ const newHeight = viewerElement.clientHeight;
49
+ if (this.height !== newHeight) {
50
+ this.height = newHeight;
51
+ this.cdr.detectChanges();
52
+ }
53
+ }
54
+ });
55
+ observer.observe(containerElement, { childList: true, subtree: true });
56
+ }
57
+ }
58
+ setCustomizationStyle(targetElement = document.documentElement) {
59
+ this.configuration = Utils.mergeConfiguration(new Configuration(), PDF_VIEWER_FEA_DEFAULT, this.configuration);
60
+ }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PdfViewerFeaComponent, deps: [{ token: i1.NgFadPdfReaderService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PdfViewerFeaComponent, selector: "ng-fad-signature-fea-pdf-viewer-fea", inputs: { configuration: "configuration", file: "file", index: "index", id: "id" }, providers: [NgFadPdfReaderService], viewQueries: [{ propertyName: "generalPdfViewerComponent", first: true, predicate: GeneralPdfViewerComponentModule, descendants: true }], ngImport: i0, template: "<div class=\"pdf-viewer\" [id]=\"id\" [style.height.px]=\"height\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pages\"\r\n (onpagechange)=\"onPageChange($event)\"\r\n (onloadpage)=\"onLoadPage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniViewConfig\"\r\n [pages]=\"pages\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\"\r\n >\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: i2.GeneralPdfViewerComponent, selector: "ng-fad-viewer-general-pdf-viewer", inputs: ["configuration", "onerror", "pages"], outputs: ["onpagechange", "onloadpage"] }, { kind: "component", type: i2.PdfMiniViewComponent, selector: "ng-fad-viewer-pdf-mini-view", inputs: ["configuration", "pages", "page"], outputs: ["onpagechange"] }] }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PdfViewerFeaComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'ng-fad-signature-fea-pdf-viewer-fea', providers: [NgFadPdfReaderService], template: "<div class=\"pdf-viewer\" [id]=\"id\" [style.height.px]=\"height\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pages\"\r\n (onpagechange)=\"onPageChange($event)\"\r\n (onloadpage)=\"onLoadPage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniViewConfig\"\r\n [pages]=\"pages\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\"\r\n >\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n</div>" }]
67
+ }], ctorParameters: function () { return [{ type: i1.NgFadPdfReaderService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { configuration: [{
68
+ type: Input
69
+ }], file: [{
70
+ type: Input
71
+ }], index: [{
72
+ type: Input
73
+ }], id: [{
74
+ type: Input
75
+ }], generalPdfViewerComponent: [{
76
+ type: ViewChild,
77
+ args: [GeneralPdfViewerComponentModule]
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci1mZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXZpZXdlci1mZWEvcGRmLXZpZXdlci1mZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXZpZXdlci1mZWEvcGRmLXZpZXdlci1mZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUscUJBQXFCLEVBQW1CLE1BQU0saUNBQWlDLENBQUM7QUFFekYsT0FBTyxFQUFFLHlCQUF5QixJQUFJLCtCQUErQixFQUE2QixNQUFNLG9DQUFvQyxDQUFBO0FBQzVJLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFRekQsTUFBTSxPQUFPLHFCQUFxQjtJQWFoQyxZQUFvQixVQUFpQyxFQUFTLEdBQXNCO1FBQWhFLGVBQVUsR0FBVixVQUFVLENBQXVCO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFOcEYsVUFBSyxHQUFzQixFQUFFLENBQUM7UUFDOUIsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUNqQixtQkFBYyxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzNDLFdBQU0sR0FBVyxJQUFJLENBQUM7SUFHaUUsQ0FBQztJQUV4RixRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQWlCO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RDLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDbkM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQXFCO1FBQzlCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQWdCLENBQUM7WUFDekUsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUNyQixPQUFPO2FBQ1I7WUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtnQkFDekMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFnQixDQUFDO2dCQUU3RixJQUFJLGFBQWEsRUFBRTtvQkFDakIsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN0QixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO29CQUU3QyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO3dCQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQzt3QkFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztxQkFDMUI7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILFFBQVEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUVBLHFCQUFxQixDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsZUFBZTtRQUN6RCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FDM0MsSUFBSSxhQUFhLEVBQUUsRUFDbkIsc0JBQXNCLEVBQ3RCLElBQUksQ0FBQyxhQUFhLENBQ25CLENBQUM7SUFDUCxDQUFDOytHQXBFUyxxQkFBcUI7bUdBQXJCLHFCQUFxQixrSkFGckIsQ0FBQyxxQkFBcUIsQ0FBQyxxRkFhdkIsK0JBQStCLGdEQzFCNUMsaWpCQWdCTTs7NEZERE8scUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLHFDQUFxQyxhQUdwQyxDQUFDLHFCQUFxQixDQUFDOzRJQUl6QixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQU1zQyx5QkFBeUI7c0JBQXBFLFNBQVM7dUJBQUMsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb2N1bWVudEFwcHJvdmFsRmVhIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgTmdGYWRQZGZSZWFkZXJTZXJ2aWNlLCBSZXNwb25zZVN1Y2Nlc3MgfSBmcm9tICdAZmFkLXByb2R1Y3RvL25nLWZhZC1wZGYtcmVhZGVyJztcclxuaW1wb3J0IHsgU2hhcmVkVXRpbHMgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2hhcmVkJztcclxuaW1wb3J0IHsgR2VuZXJhbFBkZlZpZXdlckNvbXBvbmVudCBhcyBHZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50TW9kdWxlLCBJUGRmTWluaVZpZXdDb25maWd1cmF0aW9uIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXZpZXdlcidcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL3V0aWxzL3V0aWxzJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL2ZhZC1jb21tb24vbW9kZWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBQREZfVklFV0VSX0ZFQV9ERUZBVUxUIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctZmFkLXNpZ25hdHVyZS1mZWEtcGRmLXZpZXdlci1mZWEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wZGYtdmlld2VyLWZlYS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGRmLXZpZXdlci1mZWEuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtOZ0ZhZFBkZlJlYWRlclNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZGZWaWV3ZXJGZWFDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZpbGUhOiBzdHJpbmdcclxuICBASW5wdXQoKSBpbmRleCE6IG51bWJlcjsgXHJcbiAgQElucHV0KCkgaWQhOiBzdHJpbmc7XHJcbiAgXHJcbiAgcGFnZXM6IFJlc3BvbnNlU3VjY2Vzc1tdID0gW107IFxyXG4gIHBhZ2U6IG51bWJlciA9IDE7XHJcbiAgbWluaVZpZXdDb25maWcgPSB7IHNjcm9sbEludG9WaWV3OiBmYWxzZSB9O1xyXG4gIGhlaWdodDogbnVtYmVyID0gMTAwMDsgXHJcbiAgQFZpZXdDaGlsZChHZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50TW9kdWxlKSBnZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50ITogR2VuZXJhbFBkZlZpZXdlckNvbXBvbmVudE1vZHVsZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwZGZTZXJ2aWNlOiBOZ0ZhZFBkZlJlYWRlclNlcnZpY2UscHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZpbGUpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplUGRmKHRoaXMuZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplUGRmKHBkZkJhc2U2NDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnBkZlNlcnZpY2UuaW5pdGlhbGl6ZShwZGZCYXNlNjQsIGBwZGYtJHt0aGlzLmluZGV4fWApO1xyXG4gIFxyXG4gICAgdGhpcy5wZGZTZXJ2aWNlLnBhZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLnBhZ2VzID0gWy4uLnRoaXMucGFnZXMsIHJlc107IFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnZSA9IHBhZ2U7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb1BhZ2UocGFnZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmdlbmVyYWxQZGZWaWV3ZXJDb21wb25lbnQuc2Nyb2xsVG9QYWdlKHBhZ2UpO1xyXG4gIH1cclxuXHJcbiAgb25Mb2FkUGFnZShkYXRhOiBSZXNwb25zZVN1Y2Nlc3MpIHtcclxuICAgIGlmIChkYXRhLnBhZ2UgPT09IDEpIHtcclxuICAgICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIWNvbnRhaW5lckVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgdmlld2VyRWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQucXVlcnlTZWxlY3RvcihgI2ZhZC12aWV3ZXItcGFnZS12MS0xYCkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgXHJcbiAgICAgICAgaWYgKHZpZXdlckVsZW1lbnQpIHtcclxuICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsgXHJcbiAgICAgICAgICBjb25zdCBuZXdIZWlnaHQgPSB2aWV3ZXJFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICBcclxuICAgICAgICAgIGlmICh0aGlzLmhlaWdodCAhPT0gbmV3SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gbmV3SGVpZ2h0O1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXJFbGVtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgIHNldEN1c3RvbWl6YXRpb25TdHlsZSh0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gVXRpbHMubWVyZ2VDb25maWd1cmF0aW9uKFxyXG4gICAgICAgICAgbmV3IENvbmZpZ3VyYXRpb24oKSxcclxuICAgICAgICAgIFBERl9WSUVXRVJfRkVBX0RFRkFVTFQsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25cclxuICAgICAgICApO1xyXG4gICB9XHJcbiAgXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwZGYtdmlld2VyXCIgW2lkXT1cImlkXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIj5cclxuICAgIDxuZy1mYWQtdmlld2VyLWdlbmVyYWwtcGRmLXZpZXdlclxyXG4gICAgICBbcGFnZXNdPVwicGFnZXNcIlxyXG4gICAgICAob25wYWdlY2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKG9ubG9hZHBhZ2UpPVwib25Mb2FkUGFnZSgkZXZlbnQpXCI+XHJcbiAgXHJcbiAgICAgIDxuZy1mYWQtdmlld2VyLXBkZi1taW5pLXZpZXdcclxuICAgICAgICBtaW5pVmlld1xyXG4gICAgICAgIFtjb25maWd1cmF0aW9uXT1cIm1pbmlWaWV3Q29uZmlnXCJcclxuICAgICAgICBbcGFnZXNdPVwicGFnZXNcIlxyXG4gICAgICAgIFtwYWdlXT1cInBhZ2VcIlxyXG4gICAgICAgIChvbnBhZ2VjaGFuZ2UpPVwic2Nyb2xsVG9QYWdlKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgPC9uZy1mYWQtdmlld2VyLXBkZi1taW5pLXZpZXc+XHJcbiAgXHJcbiAgICA8L25nLWZhZC12aWV3ZXItZ2VuZXJhbC1wZGYtdmlld2VyPlxyXG48L2Rpdj4iXX0=