@sinequa/assistant 3.9.4 → 3.9.6-rc1

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 (69) hide show
  1. package/chat/chat-message/chat-message.component.d.ts +17 -25
  2. package/chat/chat-message/i18n/de.json +11 -0
  3. package/chat/chat-reference/chat-reference.component.d.ts +18 -8
  4. package/chat/chat-reference/i18n/de.json +4 -0
  5. package/chat/chat-settings-v3/i18n/de.json +14 -0
  6. package/chat/chat.component.d.ts +2 -1
  7. package/chat/debug-message/debug-message-details/debug-message-details.component.d.ts +2 -3
  8. package/chat/debug-message/i18n/de.json +3 -0
  9. package/chat/dialogs/i18n/de.json +19 -0
  10. package/chat/directives/copy-to-clipboard.directive.d.ts +8 -0
  11. package/chat/documents-upload/document-list/document-list.component.d.ts +4 -9
  12. package/chat/documents-upload/document-overview/document-overview.component.d.ts +3 -17
  13. package/chat/documents-upload/document-upload/document-upload.component.d.ts +3 -8
  14. package/chat/documents-upload/documents-upload.service.d.ts +7 -16
  15. package/chat/documents-upload/i18n/de.json +24 -0
  16. package/chat/i18n/de.json +42 -0
  17. package/chat/markdown-it-plugins/code-block.plugin.d.ts +2 -0
  18. package/chat/markdown-it-plugins/image-reference.plugin.d.ts +3 -0
  19. package/chat/markdown-it-plugins/link.plugin.d.ts +5 -0
  20. package/chat/markdown-it-plugins/page-reference.plugin.d.ts +3 -0
  21. package/chat/markdown-it-plugins/reference.plugin.d.ts +7 -0
  22. package/chat/public-api.d.ts +2 -1
  23. package/chat/references/i18n/de.json +6 -0
  24. package/chat/references/references.component.d.ts +43 -0
  25. package/chat/saved-chats/i18n/de.json +5 -0
  26. package/chat/services/app.service.d.ts +2 -1
  27. package/chat/services/custom-elements.service.d.ts +13 -0
  28. package/chat/smart-renderer/smart-renderer.d.ts +23 -0
  29. package/chat/token-progress-bar/i18n/de.json +4 -0
  30. package/chat/tooltip/tooltip.directive.d.ts +2 -2
  31. package/chat/types.d.ts +8 -42
  32. package/esm2022/chat/chat-message/chat-message.component.mjs +33 -135
  33. package/esm2022/chat/chat-reference/chat-reference.component.mjs +60 -26
  34. package/esm2022/chat/chat-settings-v3/chat-settings-v3.component.mjs +1 -1
  35. package/esm2022/chat/chat.component.mjs +50 -13
  36. package/esm2022/chat/chat.service.mjs +3 -2
  37. package/esm2022/chat/debug-message/debug-message-details/debug-message-details.component.mjs +2 -2
  38. package/esm2022/chat/debug-message/debug-message.service.mjs +4 -7
  39. package/esm2022/chat/directives/copy-to-clipboard.directive.mjs +68 -0
  40. package/esm2022/chat/documents-upload/document-list/document-list.component.mjs +21 -22
  41. package/esm2022/chat/documents-upload/document-overview/document-overview.component.mjs +8 -31
  42. package/esm2022/chat/documents-upload/document-upload/document-upload.component.mjs +12 -14
  43. package/esm2022/chat/documents-upload/documents-upload.service.mjs +25 -44
  44. package/esm2022/chat/markdown-it-plugins/code-block.plugin.mjs +14 -0
  45. package/esm2022/chat/markdown-it-plugins/image-reference.plugin.mjs +58 -0
  46. package/esm2022/chat/markdown-it-plugins/link.plugin.mjs +15 -0
  47. package/esm2022/chat/markdown-it-plugins/page-reference.plugin.mjs +60 -0
  48. package/esm2022/chat/markdown-it-plugins/reference.plugin.mjs +68 -0
  49. package/esm2022/chat/public-api.mjs +3 -2
  50. package/esm2022/chat/references/references.component.mjs +293 -0
  51. package/esm2022/chat/saved-chats/saved-chats.component.mjs +4 -3
  52. package/esm2022/chat/saved-chats/saved-chats.service.mjs +9 -12
  53. package/esm2022/chat/services/app.service.mjs +8 -2
  54. package/esm2022/chat/services/assistant-configuration.service.mjs +9 -18
  55. package/esm2022/chat/services/assistant-metadata.service.mjs +3 -3
  56. package/esm2022/chat/services/assistant-tokens-tracking.service.mjs +3 -6
  57. package/esm2022/chat/services/custom-elements.service.mjs +43 -0
  58. package/esm2022/chat/smart-renderer/smart-renderer.mjs +103 -0
  59. package/esm2022/chat/tooltip/tooltip.directive.mjs +9 -9
  60. package/esm2022/chat/types.mjs +2 -5
  61. package/fesm2022/sinequa-assistant-chat.mjs +913 -498
  62. package/fesm2022/sinequa-assistant-chat.mjs.map +1 -1
  63. package/package.json +4 -6
  64. package/chat/prompt.component.d.ts +0 -25
  65. package/chat/unified-plugins/embedded-image-reference.plugin.d.ts +0 -3
  66. package/chat/unified-plugins/embedded-page-reference.plugin.d.ts +0 -3
  67. package/esm2022/chat/prompt.component.mjs +0 -88
  68. package/esm2022/chat/unified-plugins/embedded-image-reference.plugin.mjs +0 -56
  69. package/esm2022/chat/unified-plugins/embedded-page-reference.plugin.mjs +0 -57
@@ -1,40 +1,74 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
3
- import { provideTranslocoScope, TranslocoPipe } from '@jsverse/transloco';
4
- import { FormatIconComponent } from '../format-icon/format-icon.component';
5
- import { TooltipDirective } from '../tooltip/tooltip.directive';
1
+ import { CommonModule } from "@angular/common";
2
+ import { Component, computed, input, output, signal, viewChild } from "@angular/core";
3
+ import { provideTranslocoScope, TranslocoPipe } from "@jsverse/transloco";
4
+ import { FormatIconComponent } from "../format-icon/format-icon.component";
5
+ import { TooltipDirective } from "../tooltip/tooltip.directive";
6
6
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
7
  export class ChatReferenceComponent {
9
8
  constructor() {
10
- this.openDocument = new EventEmitter();
11
- this.openPreview = new EventEmitter();
9
+ this.reference = input.required();
10
+ this.attachment = input.required();
11
+ this.partId = input(undefined);
12
+ this.referenceMap = input(undefined);
13
+ this.images = input([]);
14
+ this.pages = input([]);
15
+ this.openDocument = output();
16
+ this.openPreview = output();
17
+ this.modalTpl = viewChild("modal");
18
+ this.modalRef = signal({});
19
+ this.groupedImagesIds = computed(() => {
20
+ // Suppose images() returns an array like ['1.1.1', '1.1.2', '1.1.3']
21
+ const groups = {};
22
+ for (const id of this.images()) {
23
+ const parts = id.split(".").map(Number);
24
+ if (parts.length < 3)
25
+ continue;
26
+ const groupKey = parts[1].toString();
27
+ if (!groups[groupKey])
28
+ groups[groupKey] = [];
29
+ groups[groupKey].push(parts[2]);
30
+ }
31
+ return groups;
32
+ });
33
+ this.groupedPagesIds = computed(() => {
34
+ // Suppose images() returns an array like ['1.1', '1.2', '1.3']
35
+ const groups = {};
36
+ for (const id of this.pages()) {
37
+ const parts = id.split(".").map(Number);
38
+ const groupKey = parts[0].toString();
39
+ if (!groups[groupKey])
40
+ groups[groupKey] = [];
41
+ groups[groupKey].push(parts[1]);
42
+ }
43
+ return groups;
44
+ });
45
+ this.findImage = (arr, number) => arr.find((p) => p.imageNumber === number);
46
+ this.findPage = (arr, number) => arr.find((p) => p.pageNumber === number);
12
47
  }
13
48
  get parts() {
14
- if (!this.attachment)
49
+ if (!this.attachment())
15
50
  return [];
16
- return this.attachment.parts.filter(part => (!this.partId || part.partId === this.partId) && !!part.text);
51
+ return this.attachment().parts.filter((part) => (!this.partId() || part.partId === this.partId()) && !!part.text);
17
52
  }
18
53
  expandAttachment() {
19
- if (this.partId)
54
+ if (this.partId())
20
55
  return;
21
- this.attachment['$expanded'] = !this.attachment['$expanded'];
56
+ this.attachment()["$expanded"] = !this.attachment()["$expanded"];
57
+ }
58
+ modalClicked(ref) {
59
+ this.modalRef.set(ref);
60
+ this.modalTpl()?.nativeElement?.showModal();
22
61
  }
23
62
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChatReferenceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChatReferenceComponent, isStandalone: true, selector: "sq-chat-reference", inputs: { reference: "reference", attachment: "attachment", partId: "partId" }, outputs: { openDocument: "openDocument", openPreview: "openPreview" }, providers: [provideTranslocoScope('chat-reference')], ngImport: i0, template: "<div [class.reference-tooltip]=\"!!partId\">\n <div class=\"reference-data\" [class.expanded]=\"attachment['$expanded'] || !!partId\" (click)=\"expandAttachment()\">\n <span class=\"reference me-1\">{{reference}}</span>\n <sq-format-icon [extension]=\"attachment.record.fileext\"></sq-format-icon>\n <a [id]=\"'attachment-'+attachment.recordId\">\n {{attachment.record.title}}\n </a>\n <i class=\"fas fa-eye\" (click)=\"$event.stopPropagation(); openPreview.emit(attachment)\" [sqTooltip]=\"!partId ? ('chatReference.previewDocument' | transloco) : ''\"></i>\n <i class=\"fas fa-arrow-up-right-from-square\" *ngIf=\"attachment.record.url1 || attachment.record.originalUrl\"\n (click)=\"$event.stopPropagation(); openDocument.emit(attachment)\" [sqTooltip]=\"!partId ? ('chatReference.openDocument' | transloco) : ''\">\n </i>\n </div>\n <div class=\"reference-passages\" *ngIf=\"!!partId || (attachment['$expanded']) && parts.length\">\n <div class=\"reference-passage\" *ngFor=\"let part of parts\">\n <span class=\"reference me-1\">{{reference}}.{{part.partId}}</span>\n <span class=\"w-100 pe-2\" [innerHTML]=\"part.text\"></span>\n </div>\n </div>\n</div>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-error{background-color:var(--ast-error-bg, rgba(249, 58, 55, .2));color:var(--ast-action-buttons-color, inherit)}.ast-error:hover{color:var(--ast-error-color, rgba(249, 58, 55, .7))}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-uploaded-doc-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black;--ast-action-buttons-color: white;--ast-action-buttons-hover-color: #6dbee6;--ast-report-bg: #070707}:host ::ng-deep .reference,:host ::ng-deep .message-content .reference,:host ::ng-deep .attachment .reference{position:relative;bottom:var(--ast-reference-bottom, .3em);font-weight:var(--ast-reference-font-weight, bold);padding:var(--ast-reference-padding, 0 .2em);margin:var(--ast-reference-margin, 0 .1em);border-radius:var(--ast-reference-border-radius, .2em);background-color:var(--ast-reference-background-color, lightblue);color:var(--ast-reference-color, black)}:host ::ng-deep .reference,:host ::ng-deep .message-content .reference{font-size:var(--ast-reference-message-font-size, .7em)}:host ::ng-deep .attachment .reference{font-size:var(--ast-reference-attachment-font-size, 13px)}:host{display:block}:host.expanded,:host:hover{background-color:var(--ast-reference-expanded-hover-bg, white)}.reference-data{display:flex;flex-direction:row;align-items:baseline;padding:var(--ast-size-1, .25rem);cursor:pointer}.reference-data a{color:var(--ast-secondary-color, #FF732E);flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:var(--font-weight-bold, 500);cursor:pointer}.reference-data i{padding:var(--ast-size-1, .25rem);margin-left:var(--ast-size-1, .25rem);cursor:pointer;color:var(--ast-reference-icon-color, black)}.reference-data i.active{color:var(--ast-reference-icon-active-color, white);background-color:var(--ast-secondary-color, #FF732E)}.reference-data:not(.expanded) i{opacity:0}.reference-data:not(.expanded):hover i{opacity:1}.reference-passages{white-space:normal;font-style:italic;font-weight:400;padding:1rem 0;color:var(--ast-reference-passages-color, black)}.reference-passages .reference-passage{display:flex;align-items:baseline;padding-left:2.5rem;padding-right:1rem;word-wrap:break-word}.reference-passages .reference-passage+.reference-passage{padding-top:1rem}.reference-passages .reference-passage .reference{white-space:nowrap;margin-right:var(--ast-size-2, .5rem)}sq-format-icon{margin-left:var(--ast-size-1, .25rem);margin-right:var(--ast-size-2, .5rem);color:var(--ast-secondary-color, #FF732E)}.reference-tooltip{max-width:600px!important;box-shadow:0 .5rem 1rem #00000026;padding:.5rem;font-size:.875rem}.w-100{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormatIconComponent, selector: "sq-format-icon", inputs: ["extension"] }, { kind: "directive", type: TooltipDirective, selector: "[sqTooltip]", inputs: ["sqTooltip", "sqTooltipData", "sqTooltipTemplate", "placement", "fallbackPlacements", "delay", "hoverableTooltip", "tooltipClass"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] }); }
63
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ChatReferenceComponent, isStandalone: true, selector: "sq-chat-reference", inputs: { reference: { classPropertyName: "reference", publicName: "reference", isSignal: true, isRequired: true, transformFunction: null }, attachment: { classPropertyName: "attachment", publicName: "attachment", isSignal: true, isRequired: true, transformFunction: null }, partId: { classPropertyName: "partId", publicName: "partId", isSignal: true, isRequired: false, transformFunction: null }, referenceMap: { classPropertyName: "referenceMap", publicName: "referenceMap", isSignal: true, isRequired: false, transformFunction: null }, images: { classPropertyName: "images", publicName: "images", isSignal: true, isRequired: false, transformFunction: null }, pages: { classPropertyName: "pages", publicName: "pages", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openDocument: "openDocument", openPreview: "openPreview" }, providers: [provideTranslocoScope("chat-reference")], viewQueries: [{ propertyName: "modalTpl", first: true, predicate: ["modal"], descendants: true, isSignal: true }], ngImport: i0, template: "<div [class.reference-tooltip]=\"!!partId()\">\n <div\n class=\"reference-data\"\n [class.expanded]=\"attachment()['$expanded'] || !!partId()\"\n (click)=\"expandAttachment()\"\n >\n <span class=\"reference me-1\">{{ reference() }}</span>\n\n <sq-format-icon [extension]=\"attachment().record.fileext\"></sq-format-icon>\n\n <span class=\"title\" [id]=\"'attachment-' + attachment().recordId\">\n {{ attachment().record.title }}\n </span>\n\n <button\n type=\"button\"\n (click)=\"$event.stopPropagation(); openPreview.emit(attachment())\"\n [sqTooltip]=\"!partId() ? ('chatReference.previewDocument' | transloco) : ''\"\n class=\"bg-transparent border-0 p-0 m-0 cursor-pointer text-inherit leading-none inline-flex items-center justify-center\"\n >\n <i class=\"fas fa-eye\"></i>\n </button>\n\n\n @if (attachment().record.url1 || attachment().record.originalUrl) {\n <button\n type=\"button\"\n (click)=\"$event.stopPropagation(); openDocument.emit(attachment())\"\n [sqTooltip]=\"!partId() ? ('chatReference.openDocument' | transloco) : ''\"\n class=\"bg-transparent border-0 p-0 m-0 cursor-pointer text-inherit leading-none inline-flex items-center justify-center\"\n >\n <i class=\"fas fa-arrow-up-right-from-square\"></i>\n </button>\n }\n </div>\n\n @if (!!partId() || (attachment()['$expanded'] && parts.length)) {\n <div class=\"reference-passages\">\n @for (part of parts; track $index) {\n <div class=\"reference-passage\">\n <span class=\"reference me-1\">{{ reference() }}.{{ part.partId }}</span>\n <span class=\"w-100 pe-2\" [innerHTML]=\"part.text\"></span>\n </div>\n\n @for (imageId of groupedImagesIds()[part.partId]; track $index) { \n @let ref = part?.images?.[imageId - 1];\n @if (ref?.url) {\n <div\n class=\"gap-1 ms-2 my-2 items-start\"\n style=\"display: flex; align-items: start\"\n >\n <span class=\"reference\" style=\"flex-shrink: 0;\">\n {{ \"Img-\" + reference() + \".\" + part.partId + \".\" + imageId }}\n </span>\n\n <img\n [src]=\"ref.url\"\n [alt]=\"ref.description\"\n (click)=\"modalClicked(ref)\"\n />\n </div>\n }\n }\n }\n \n @for (pageId of groupedPagesIds()[reference()]; track $index) {\n @let ref = findPage(referenceMap()?.get(reference())?.pages, pageId);\n @if (ref?.url) {\n <div\n class=\"gap-1 ms-2 my-2 items-start\"\n style=\"display: flex; align-items: start\"\n >\n <span class=\"reference\" style=\"flex-shrink: 0;\">{{ \"Page-\" + reference() + \".\" + pageId }}</span>\n\n <img\n [src]=\"ref.url\"\n [alt]=\"ref.description\"\n (click)=\"modalClicked(ref)\"\n />\n </div>\n }\n }\n </div>\n }\n</div>\n\n<dialog #modal>\n <button class=\"close\" (click)=\"modalTpl()?.nativeElement?.close()\">\n <i class=\"fas fa-xmark\"></i>\n </button>\n\n <img [src]=\"modalRef().url\" [alt]=\"modalRef().description\" />\n</dialog>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-error{background-color:var(--ast-error-bg, rgba(249, 58, 55, .2));color:var(--ast-action-buttons-color, inherit)}.ast-error:hover{color:var(--ast-error-color, rgba(249, 58, 55, .7))}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-uploaded-doc-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black;--ast-action-buttons-color: white;--ast-action-buttons-hover-color: #6dbee6;--ast-report-bg: #070707}:host ::ng-deep .reference,:host ::ng-deep .message-content .reference,:host ::ng-deep .attachment .reference{position:relative;bottom:var(--ast-reference-bottom, .3em);font-weight:var(--ast-reference-font-weight, bold);padding:var(--ast-reference-padding, 0 .2em);margin:var(--ast-reference-margin, 0 .1em);border-radius:var(--ast-reference-border-radius, .2em);background-color:var(--ast-reference-background-color, lightblue);color:var(--ast-reference-color, black)}:host ::ng-deep .reference,:host ::ng-deep .message-content .reference{font-size:var(--ast-reference-message-font-size, .7em)}:host ::ng-deep .attachment .reference{font-size:var(--ast-reference-attachment-font-size, 13px)}:host{display:block}:host.expanded,:host:hover{background-color:var(--ast-reference-expanded-hover-bg, white)}.reference-data{display:flex;flex-direction:row;align-items:baseline;padding:var(--ast-size-1, .25rem);cursor:pointer}.reference-data span.title{color:var(--ast-secondary-color, #FF732E);flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:var(--font-weight-bold, 500);cursor:pointer}.reference-data i{padding:var(--ast-size-1, .25rem);margin-left:var(--ast-size-1, .25rem);cursor:pointer;color:var(--ast-reference-icon-color, black)}.reference-data i.active{color:var(--ast-reference-icon-active-color, white);background-color:var(--ast-secondary-color, #FF732E)}.reference-data:not(.expanded) i{opacity:0}.reference-data:not(.expanded):hover i{opacity:1}.reference-passages{white-space:normal;font-style:italic;font-weight:400;padding:1rem 0;color:var(--ast-reference-passages-color, black)}.reference-passages .reference-passage{display:flex;align-items:baseline;padding-left:2.5rem;padding-right:1rem;word-wrap:break-word}.reference-passages .reference-passage+.reference-passage{padding-top:1rem}.reference-passages .reference-passage .reference{white-space:nowrap;margin-right:var(--ast-size-2, .5rem)}sq-format-icon{margin-left:var(--ast-size-1, .25rem);margin-right:var(--ast-size-2, .5rem);color:var(--ast-secondary-color, #FF732E)}.reference-tooltip{max-width:600px!important;box-shadow:0 .5rem 1rem #00000026;padding:.5rem;font-size:.875rem}.w-100{width:100%}dialog ::backdrop{background-color:#000c}dialog img{max-width:90vw;max-height:90vh;object-fit:contain}dialog button.close{position:absolute;top:0;right:0;border:solid 1px black;background-color:#fff;color:#000;font-size:1rem;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: FormatIconComponent, selector: "sq-format-icon", inputs: ["extension"] }, { kind: "directive", type: TooltipDirective, selector: "[sqTooltip]", inputs: ["sqTooltip", "sqTooltipData", "sqTooltipTemplate", "placement", "fallbackPlacements", "delay", "hoverableTooltip", "tooltipClass"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] }); }
25
64
  }
26
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChatReferenceComponent, decorators: [{
27
66
  type: Component,
28
- args: [{ selector: 'sq-chat-reference', standalone: true, imports: [CommonModule, FormatIconComponent, TooltipDirective, TranslocoPipe], providers: [provideTranslocoScope('chat-reference')], template: "<div [class.reference-tooltip]=\"!!partId\">\n <div class=\"reference-data\" [class.expanded]=\"attachment['$expanded'] || !!partId\" (click)=\"expandAttachment()\">\n <span class=\"reference me-1\">{{reference}}</span>\n <sq-format-icon [extension]=\"attachment.record.fileext\"></sq-format-icon>\n <a [id]=\"'attachment-'+attachment.recordId\">\n {{attachment.record.title}}\n </a>\n <i class=\"fas fa-eye\" (click)=\"$event.stopPropagation(); openPreview.emit(attachment)\" [sqTooltip]=\"!partId ? ('chatReference.previewDocument' | transloco) : ''\"></i>\n <i class=\"fas fa-arrow-up-right-from-square\" *ngIf=\"attachment.record.url1 || attachment.record.originalUrl\"\n (click)=\"$event.stopPropagation(); openDocument.emit(attachment)\" [sqTooltip]=\"!partId ? ('chatReference.openDocument' | transloco) : ''\">\n </i>\n </div>\n <div class=\"reference-passages\" *ngIf=\"!!partId || (attachment['$expanded']) && parts.length\">\n <div class=\"reference-passage\" *ngFor=\"let part of parts\">\n <span class=\"reference me-1\">{{reference}}.{{part.partId}}</span>\n <span class=\"w-100 pe-2\" [innerHTML]=\"part.text\"></span>\n </div>\n </div>\n</div>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-error{background-color:var(--ast-error-bg, rgba(249, 58, 55, .2));color:var(--ast-action-buttons-color, inherit)}.ast-error:hover{color:var(--ast-error-color, rgba(249, 58, 55, .7))}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-uploaded-doc-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black;--ast-action-buttons-color: white;--ast-action-buttons-hover-color: #6dbee6;--ast-report-bg: #070707}:host ::ng-deep .reference,:host ::ng-deep .message-content .reference,:host ::ng-deep .attachment .reference{position:relative;bottom:var(--ast-reference-bottom, .3em);font-weight:var(--ast-reference-font-weight, bold);padding:var(--ast-reference-padding, 0 .2em);margin:var(--ast-reference-margin, 0 .1em);border-radius:var(--ast-reference-border-radius, .2em);background-color:var(--ast-reference-background-color, lightblue);color:var(--ast-reference-color, black)}:host ::ng-deep .reference,:host ::ng-deep .message-content .reference{font-size:var(--ast-reference-message-font-size, .7em)}:host ::ng-deep .attachment .reference{font-size:var(--ast-reference-attachment-font-size, 13px)}:host{display:block}:host.expanded,:host:hover{background-color:var(--ast-reference-expanded-hover-bg, white)}.reference-data{display:flex;flex-direction:row;align-items:baseline;padding:var(--ast-size-1, .25rem);cursor:pointer}.reference-data a{color:var(--ast-secondary-color, #FF732E);flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:var(--font-weight-bold, 500);cursor:pointer}.reference-data i{padding:var(--ast-size-1, .25rem);margin-left:var(--ast-size-1, .25rem);cursor:pointer;color:var(--ast-reference-icon-color, black)}.reference-data i.active{color:var(--ast-reference-icon-active-color, white);background-color:var(--ast-secondary-color, #FF732E)}.reference-data:not(.expanded) i{opacity:0}.reference-data:not(.expanded):hover i{opacity:1}.reference-passages{white-space:normal;font-style:italic;font-weight:400;padding:1rem 0;color:var(--ast-reference-passages-color, black)}.reference-passages .reference-passage{display:flex;align-items:baseline;padding-left:2.5rem;padding-right:1rem;word-wrap:break-word}.reference-passages .reference-passage+.reference-passage{padding-top:1rem}.reference-passages .reference-passage .reference{white-space:nowrap;margin-right:var(--ast-size-2, .5rem)}sq-format-icon{margin-left:var(--ast-size-1, .25rem);margin-right:var(--ast-size-2, .5rem);color:var(--ast-secondary-color, #FF732E)}.reference-tooltip{max-width:600px!important;box-shadow:0 .5rem 1rem #00000026;padding:.5rem;font-size:.875rem}.w-100{width:100%}\n"] }]
29
- }], propDecorators: { reference: [{
30
- type: Input
31
- }], attachment: [{
32
- type: Input
33
- }], partId: [{
34
- type: Input
35
- }], openDocument: [{
36
- type: Output
37
- }], openPreview: [{
38
- type: Output
39
- }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1yZWZlcmVuY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC1yZWZlcmVuY2UvY2hhdC1yZWZlcmVuY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC1yZWZlcmVuY2UvY2hhdC1yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFVaEUsTUFBTSxPQUFPLHNCQUFzQjtJQVJuQztRQWNZLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFDekQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztLQVduRTtJQVRDLElBQUksS0FBSztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0QsQ0FBQzsrR0FqQlUsc0JBQXNCO21HQUF0QixzQkFBc0IsdU5BRnRCLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQywwQkNkdEQsa3dDQW1CQSxtaUhETlksWUFBWSxnUUFBRSxtQkFBbUIsa0ZBQUUsZ0JBQWdCLGdNQUFFLGFBQWE7OzRGQUdqRSxzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsYUFDbEUsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDOzhCQUkzQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZVRyYW5zbG9jb1Njb3BlLCBUcmFuc2xvY29QaXBlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcblxuaW1wb3J0IHsgRm9ybWF0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm1hdC1pY29uL2Zvcm1hdC1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGF0Q29udGV4dEF0dGFjaG1lbnQsIERvY3VtZW50UGFydCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3EtY2hhdC1yZWZlcmVuY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGF0LXJlZmVyZW5jZS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3JtYXRJY29uQ29tcG9uZW50LCBUb29sdGlwRGlyZWN0aXZlLCBUcmFuc2xvY29QaXBlXSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZVRyYW5zbG9jb1Njb3BlKCdjaGF0LXJlZmVyZW5jZScpXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdFJlZmVyZW5jZUNvbXBvbmVudCB7XG5cbiAgQElucHV0KCkgcmVmZXJlbmNlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGF0dGFjaG1lbnQ6IENoYXRDb250ZXh0QXR0YWNobWVudDtcbiAgQElucHV0KCkgcGFydElkPzogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSBvcGVuRG9jdW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRDb250ZXh0QXR0YWNobWVudD4oKTtcbiAgQE91dHB1dCgpIG9wZW5QcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0Q29udGV4dEF0dGFjaG1lbnQ+KCk7XG5cbiAgZ2V0IHBhcnRzKCk6IERvY3VtZW50UGFydFtdIHtcbiAgICBpZiAoIXRoaXMuYXR0YWNobWVudCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB0aGlzLmF0dGFjaG1lbnQucGFydHMuZmlsdGVyKHBhcnQgPT4gKCF0aGlzLnBhcnRJZCB8fCBwYXJ0LnBhcnRJZCA9PT0gdGhpcy5wYXJ0SWQpICYmICEhcGFydC50ZXh0KTtcbiAgfVxuXG4gIGV4cGFuZEF0dGFjaG1lbnQoKSB7XG4gICAgaWYgKHRoaXMucGFydElkKSByZXR1cm47XG4gICAgdGhpcy5hdHRhY2htZW50WyckZXhwYW5kZWQnXSA9ICF0aGlzLmF0dGFjaG1lbnRbJyRleHBhbmRlZCddO1xuICB9XG59XG4iLCI8ZGl2IFtjbGFzcy5yZWZlcmVuY2UtdG9vbHRpcF09XCIhIXBhcnRJZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJyZWZlcmVuY2UtZGF0YVwiIFtjbGFzcy5leHBhbmRlZF09XCJhdHRhY2htZW50WyckZXhwYW5kZWQnXSB8fCAhIXBhcnRJZFwiIChjbGljayk9XCJleHBhbmRBdHRhY2htZW50KClcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWZlcmVuY2UgbWUtMVwiPnt7cmVmZXJlbmNlfX08L3NwYW4+XG4gICAgICAgIDxzcS1mb3JtYXQtaWNvbiBbZXh0ZW5zaW9uXT1cImF0dGFjaG1lbnQucmVjb3JkLmZpbGVleHRcIj48L3NxLWZvcm1hdC1pY29uPlxuICAgICAgICA8YSBbaWRdPVwiJ2F0dGFjaG1lbnQtJythdHRhY2htZW50LnJlY29yZElkXCI+XG4gICAgICAgICAgICB7e2F0dGFjaG1lbnQucmVjb3JkLnRpdGxlfX1cbiAgICAgICAgPC9hPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1leWVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuUHJldmlldy5lbWl0KGF0dGFjaG1lbnQpXCIgW3NxVG9vbHRpcF09XCIhcGFydElkID8gKCdjaGF0UmVmZXJlbmNlLnByZXZpZXdEb2N1bWVudCcgfCB0cmFuc2xvY28pIDogJydcIj48L2k+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFycm93LXVwLXJpZ2h0LWZyb20tc3F1YXJlXCIgKm5nSWY9XCJhdHRhY2htZW50LnJlY29yZC51cmwxIHx8IGF0dGFjaG1lbnQucmVjb3JkLm9yaWdpbmFsVXJsXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5Eb2N1bWVudC5lbWl0KGF0dGFjaG1lbnQpXCIgW3NxVG9vbHRpcF09XCIhcGFydElkID8gKCdjaGF0UmVmZXJlbmNlLm9wZW5Eb2N1bWVudCcgfCB0cmFuc2xvY28pIDogJydcIj5cbiAgICAgICAgPC9pPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyZWZlcmVuY2UtcGFzc2FnZXNcIiAqbmdJZj1cIiEhcGFydElkIHx8IChhdHRhY2htZW50WyckZXhwYW5kZWQnXSkgJiYgcGFydHMubGVuZ3RoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWZlcmVuY2UtcGFzc2FnZVwiICpuZ0Zvcj1cImxldCBwYXJ0IG9mIHBhcnRzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlZmVyZW5jZSBtZS0xXCI+e3tyZWZlcmVuY2V9fS57e3BhcnQucGFydElkfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMTAwIHBlLTJcIiBbaW5uZXJIVE1MXT1cInBhcnQudGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
67
+ args: [{ selector: "sq-chat-reference", standalone: true, imports: [
68
+ CommonModule,
69
+ FormatIconComponent,
70
+ TooltipDirective,
71
+ TranslocoPipe,
72
+ ], providers: [provideTranslocoScope("chat-reference")], template: "<div [class.reference-tooltip]=\"!!partId()\">\n <div\n class=\"reference-data\"\n [class.expanded]=\"attachment()['$expanded'] || !!partId()\"\n (click)=\"expandAttachment()\"\n >\n <span class=\"reference me-1\">{{ reference() }}</span>\n\n <sq-format-icon [extension]=\"attachment().record.fileext\"></sq-format-icon>\n\n <span class=\"title\" [id]=\"'attachment-' + attachment().recordId\">\n {{ attachment().record.title }}\n </span>\n\n <button\n type=\"button\"\n (click)=\"$event.stopPropagation(); openPreview.emit(attachment())\"\n [sqTooltip]=\"!partId() ? ('chatReference.previewDocument' | transloco) : ''\"\n class=\"bg-transparent border-0 p-0 m-0 cursor-pointer text-inherit leading-none inline-flex items-center justify-center\"\n >\n <i class=\"fas fa-eye\"></i>\n </button>\n\n\n @if (attachment().record.url1 || attachment().record.originalUrl) {\n <button\n type=\"button\"\n (click)=\"$event.stopPropagation(); openDocument.emit(attachment())\"\n [sqTooltip]=\"!partId() ? ('chatReference.openDocument' | transloco) : ''\"\n class=\"bg-transparent border-0 p-0 m-0 cursor-pointer text-inherit leading-none inline-flex items-center justify-center\"\n >\n <i class=\"fas fa-arrow-up-right-from-square\"></i>\n </button>\n }\n </div>\n\n @if (!!partId() || (attachment()['$expanded'] && parts.length)) {\n <div class=\"reference-passages\">\n @for (part of parts; track $index) {\n <div class=\"reference-passage\">\n <span class=\"reference me-1\">{{ reference() }}.{{ part.partId }}</span>\n <span class=\"w-100 pe-2\" [innerHTML]=\"part.text\"></span>\n </div>\n\n @for (imageId of groupedImagesIds()[part.partId]; track $index) { \n @let ref = part?.images?.[imageId - 1];\n @if (ref?.url) {\n <div\n class=\"gap-1 ms-2 my-2 items-start\"\n style=\"display: flex; align-items: start\"\n >\n <span class=\"reference\" style=\"flex-shrink: 0;\">\n {{ \"Img-\" + reference() + \".\" + part.partId + \".\" + imageId }}\n </span>\n\n <img\n [src]=\"ref.url\"\n [alt]=\"ref.description\"\n (click)=\"modalClicked(ref)\"\n />\n </div>\n }\n }\n }\n \n @for (pageId of groupedPagesIds()[reference()]; track $index) {\n @let ref = findPage(referenceMap()?.get(reference())?.pages, pageId);\n @if (ref?.url) {\n <div\n class=\"gap-1 ms-2 my-2 items-start\"\n style=\"display: flex; align-items: start\"\n >\n <span class=\"reference\" style=\"flex-shrink: 0;\">{{ \"Page-\" + reference() + \".\" + pageId }}</span>\n\n <img\n [src]=\"ref.url\"\n [alt]=\"ref.description\"\n (click)=\"modalClicked(ref)\"\n />\n </div>\n }\n }\n </div>\n }\n</div>\n\n<dialog #modal>\n <button class=\"close\" (click)=\"modalTpl()?.nativeElement?.close()\">\n <i class=\"fas fa-xmark\"></i>\n </button>\n\n <img [src]=\"modalRef().url\" [alt]=\"modalRef().description\" />\n</dialog>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-error{background-color:var(--ast-error-bg, rgba(249, 58, 55, .2));color:var(--ast-action-buttons-color, inherit)}.ast-error:hover{color:var(--ast-error-color, rgba(249, 58, 55, .7))}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-uploaded-doc-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black;--ast-action-buttons-color: white;--ast-action-buttons-hover-color: #6dbee6;--ast-report-bg: #070707}:host ::ng-deep .reference,:host ::ng-deep .message-content .reference,:host ::ng-deep .attachment .reference{position:relative;bottom:var(--ast-reference-bottom, .3em);font-weight:var(--ast-reference-font-weight, bold);padding:var(--ast-reference-padding, 0 .2em);margin:var(--ast-reference-margin, 0 .1em);border-radius:var(--ast-reference-border-radius, .2em);background-color:var(--ast-reference-background-color, lightblue);color:var(--ast-reference-color, black)}:host ::ng-deep .reference,:host ::ng-deep .message-content .reference{font-size:var(--ast-reference-message-font-size, .7em)}:host ::ng-deep .attachment .reference{font-size:var(--ast-reference-attachment-font-size, 13px)}:host{display:block}:host.expanded,:host:hover{background-color:var(--ast-reference-expanded-hover-bg, white)}.reference-data{display:flex;flex-direction:row;align-items:baseline;padding:var(--ast-size-1, .25rem);cursor:pointer}.reference-data span.title{color:var(--ast-secondary-color, #FF732E);flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:var(--font-weight-bold, 500);cursor:pointer}.reference-data i{padding:var(--ast-size-1, .25rem);margin-left:var(--ast-size-1, .25rem);cursor:pointer;color:var(--ast-reference-icon-color, black)}.reference-data i.active{color:var(--ast-reference-icon-active-color, white);background-color:var(--ast-secondary-color, #FF732E)}.reference-data:not(.expanded) i{opacity:0}.reference-data:not(.expanded):hover i{opacity:1}.reference-passages{white-space:normal;font-style:italic;font-weight:400;padding:1rem 0;color:var(--ast-reference-passages-color, black)}.reference-passages .reference-passage{display:flex;align-items:baseline;padding-left:2.5rem;padding-right:1rem;word-wrap:break-word}.reference-passages .reference-passage+.reference-passage{padding-top:1rem}.reference-passages .reference-passage .reference{white-space:nowrap;margin-right:var(--ast-size-2, .5rem)}sq-format-icon{margin-left:var(--ast-size-1, .25rem);margin-right:var(--ast-size-2, .5rem);color:var(--ast-secondary-color, #FF732E)}.reference-tooltip{max-width:600px!important;box-shadow:0 .5rem 1rem #00000026;padding:.5rem;font-size:.875rem}.w-100{width:100%}dialog ::backdrop{background-color:#000c}dialog img{max-width:90vw;max-height:90vh;object-fit:contain}dialog button.close{position:absolute;top:0;right:0;border:solid 1px black;background-color:#fff;color:#000;font-size:1rem;cursor:pointer}\n"] }]
73
+ }] });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1yZWZlcmVuY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC1yZWZlcmVuY2UvY2hhdC1yZWZlcmVuY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC1yZWZlcmVuY2UvY2hhdC1yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUVSLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBZ0JoRSxNQUFNLE9BQU8sc0JBQXNCO0lBYm5DO1FBY1csY0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNyQyxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBeUIsQ0FBQztRQUNyRCxXQUFNLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLEtBQUssQ0FDM0IsU0FBUyxDQUNWLENBQUM7UUFDTyxXQUFNLEdBQUcsS0FBSyxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLFVBQUssR0FBRyxLQUFLLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFNUIsaUJBQVksR0FBRyxNQUFNLEVBQXlCLENBQUM7UUFDL0MsZ0JBQVcsR0FBRyxNQUFNLEVBQXlCLENBQUM7UUFFOUMs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QztJQUVELFlBQVksQ0FBQyxHQUFRO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDOUMsQ0FBQzsrR0EvRFUsc0JBQXNCO21HQUF0QixzQkFBc0IsdTVCQUZ0QixDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUMsNklDM0J0RCw4cUdBNkZBLDR4SER2RUksWUFBWSwrQkFDWixtQkFBbUIsa0ZBQ25CLGdCQUFnQixnTUFDaEIsYUFBYTs7NEZBSUosc0JBQXNCO2tCQWJsQyxTQUFTOytCQUNFLG1CQUFtQixjQUdqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsYUFBYTtxQkFDZCxhQUNVLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEVsZW1lbnRSZWYsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBwcm92aWRlVHJhbnNsb2NvU2NvcGUsIFRyYW5zbG9jb1BpcGUgfSBmcm9tIFwiQGpzdmVyc2UvdHJhbnNsb2NvXCI7XG5cbmltcG9ydCB7IEZvcm1hdEljb25Db21wb25lbnQgfSBmcm9tIFwiLi4vZm9ybWF0LWljb24vZm9ybWF0LWljb24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSBcIi4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IENoYXRDb250ZXh0QXR0YWNobWVudCwgRG9jdW1lbnRQYXJ0IH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzcS1jaGF0LXJlZmVyZW5jZVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2NoYXQtcmVmZXJlbmNlLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9jaGF0LXJlZmVyZW5jZS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3JtYXRJY29uQ29tcG9uZW50LFxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXG4gICAgVHJhbnNsb2NvUGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZVRyYW5zbG9jb1Njb3BlKFwiY2hhdC1yZWZlcmVuY2VcIildLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0UmVmZXJlbmNlQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgcmVmZXJlbmNlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBhdHRhY2htZW50ID0gaW5wdXQucmVxdWlyZWQ8Q2hhdENvbnRleHRBdHRhY2htZW50PigpO1xuICByZWFkb25seSBwYXJ0SWQgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJlZmVyZW5jZU1hcCA9IGlucHV0PE1hcDxzdHJpbmcsIENoYXRDb250ZXh0QXR0YWNobWVudD4gfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuICByZWFkb25seSBpbWFnZXMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBwYWdlcyA9IGlucHV0PHN0cmluZ1tdPihbXSk7XG5cbiAgcmVhZG9ubHkgb3BlbkRvY3VtZW50ID0gb3V0cHV0PENoYXRDb250ZXh0QXR0YWNobWVudD4oKTtcbiAgcmVhZG9ubHkgb3BlblByZXZpZXcgPSBvdXRwdXQ8Q2hhdENvbnRleHRBdHRhY2htZW50PigpO1xuXG4gIHJlYWRvbmx5IG1vZGFsVHBsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpYWxvZ0VsZW1lbnQ+PihcIm1vZGFsXCIpO1xuXG4gIHJlYWRvbmx5IG1vZGFsUmVmID0gc2lnbmFsPGFueT4oe30pO1xuXG4gIHJlYWRvbmx5IGdyb3VwZWRJbWFnZXNJZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgLy8gU3VwcG9zZSBpbWFnZXMoKSByZXR1cm5zIGFuIGFycmF5IGxpa2UgWycxLjEuMScsICcxLjEuMicsICcxLjEuMyddXG4gICAgY29uc3QgZ3JvdXBzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXJbXT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIHRoaXMuaW1hZ2VzKCkpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gaWQuc3BsaXQoXCIuXCIpLm1hcChOdW1iZXIpO1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA8IDMpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgZ3JvdXBLZXkgPSBwYXJ0c1sxXS50b1N0cmluZygpO1xuICAgICAgaWYgKCFncm91cHNbZ3JvdXBLZXldKSBncm91cHNbZ3JvdXBLZXldID0gW107XG4gICAgICBncm91cHNbZ3JvdXBLZXldLnB1c2gocGFydHNbMl0pO1xuICAgIH1cbiAgICByZXR1cm4gZ3JvdXBzO1xuICB9KTtcbiAgcmVhZG9ubHkgZ3JvdXBlZFBhZ2VzSWRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vIFN1cHBvc2UgaW1hZ2VzKCkgcmV0dXJucyBhbiBhcnJheSBsaWtlIFsnMS4xJywgJzEuMicsICcxLjMnXVxuICAgIGNvbnN0IGdyb3VwczogUmVjb3JkPHN0cmluZywgbnVtYmVyW10+ID0ge307XG4gICAgZm9yIChjb25zdCBpZCBvZiB0aGlzLnBhZ2VzKCkpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gaWQuc3BsaXQoXCIuXCIpLm1hcChOdW1iZXIpO1xuICAgICAgY29uc3QgZ3JvdXBLZXkgPSBwYXJ0c1swXS50b1N0cmluZygpO1xuICAgICAgaWYgKCFncm91cHNbZ3JvdXBLZXldKSBncm91cHNbZ3JvdXBLZXldID0gW107XG4gICAgICBncm91cHNbZ3JvdXBLZXldLnB1c2gocGFydHNbMV0pO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cHM7XG4gIH0pO1xuXG4gIGdldCBwYXJ0cygpOiBEb2N1bWVudFBhcnRbXSB7XG4gICAgaWYgKCF0aGlzLmF0dGFjaG1lbnQoKSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB0aGlzLmF0dGFjaG1lbnQoKS5wYXJ0cy5maWx0ZXIoXG4gICAgICAocGFydCkgPT4gKCF0aGlzLnBhcnRJZCgpIHx8IHBhcnQucGFydElkID09PSB0aGlzLnBhcnRJZCgpKSAmJiAhIXBhcnQudGV4dFxuICAgICk7XG4gIH1cblxuICBmaW5kSW1hZ2UgPSAoYXJyOiBhbnlbXSwgbnVtYmVyOiBudW1iZXIpOiBhbnkgfCB1bmRlZmluZWQgPT5cbiAgICBhcnIuZmluZCgocCkgPT4gcC5pbWFnZU51bWJlciA9PT0gbnVtYmVyKTtcblxuICBmaW5kUGFnZSA9IChhcnI6IGFueVtdLCBudW1iZXI6IG51bWJlcik6IGFueSB8IHVuZGVmaW5lZCA9PlxuICAgIGFyci5maW5kKChwKSA9PiBwLnBhZ2VOdW1iZXIgPT09IG51bWJlcik7XG5cbiAgZXhwYW5kQXR0YWNobWVudCgpIHtcbiAgICBpZiAodGhpcy5wYXJ0SWQoKSkgcmV0dXJuO1xuICAgIHRoaXMuYXR0YWNobWVudCgpW1wiJGV4cGFuZGVkXCJdID0gIXRoaXMuYXR0YWNobWVudCgpW1wiJGV4cGFuZGVkXCJdO1xuICB9XG5cbiAgbW9kYWxDbGlja2VkKHJlZjogYW55KSB7XG4gICAgdGhpcy5tb2RhbFJlZi5zZXQocmVmKTtcbiAgICB0aGlzLm1vZGFsVHBsKCk/Lm5hdGl2ZUVsZW1lbnQ/LnNob3dNb2RhbCgpO1xuICB9XG59XG4iLCI8ZGl2IFtjbGFzcy5yZWZlcmVuY2UtdG9vbHRpcF09XCIhIXBhcnRJZCgpXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInJlZmVyZW5jZS1kYXRhXCJcbiAgICBbY2xhc3MuZXhwYW5kZWRdPVwiYXR0YWNobWVudCgpWyckZXhwYW5kZWQnXSB8fCAhIXBhcnRJZCgpXCJcbiAgICAoY2xpY2spPVwiZXhwYW5kQXR0YWNobWVudCgpXCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwicmVmZXJlbmNlIG1lLTFcIj57eyByZWZlcmVuY2UoKSB9fTwvc3Bhbj5cblxuICAgIDxzcS1mb3JtYXQtaWNvbiBbZXh0ZW5zaW9uXT1cImF0dGFjaG1lbnQoKS5yZWNvcmQuZmlsZWV4dFwiPjwvc3EtZm9ybWF0LWljb24+XG5cbiAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCIgW2lkXT1cIidhdHRhY2htZW50LScgKyBhdHRhY2htZW50KCkucmVjb3JkSWRcIj5cbiAgICAgIHt7IGF0dGFjaG1lbnQoKS5yZWNvcmQudGl0bGUgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5QcmV2aWV3LmVtaXQoYXR0YWNobWVudCgpKVwiXG4gICAgICBbc3FUb29sdGlwXT1cIiFwYXJ0SWQoKSA/ICgnY2hhdFJlZmVyZW5jZS5wcmV2aWV3RG9jdW1lbnQnIHwgdHJhbnNsb2NvKSA6ICcnXCJcbiAgICAgIGNsYXNzPVwiYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgcC0wIG0tMCBjdXJzb3ItcG9pbnRlciB0ZXh0LWluaGVyaXQgbGVhZGluZy1ub25lIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZXllXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuXG5cbiAgICBAaWYgKGF0dGFjaG1lbnQoKS5yZWNvcmQudXJsMSB8fCBhdHRhY2htZW50KCkucmVjb3JkLm9yaWdpbmFsVXJsKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuRG9jdW1lbnQuZW1pdChhdHRhY2htZW50KCkpXCJcbiAgICAgICAgW3NxVG9vbHRpcF09XCIhcGFydElkKCkgPyAoJ2NoYXRSZWZlcmVuY2Uub3BlbkRvY3VtZW50JyB8IHRyYW5zbG9jbykgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgcC0wIG0tMCBjdXJzb3ItcG9pbnRlciB0ZXh0LWluaGVyaXQgbGVhZGluZy1ub25lIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFycm93LXVwLXJpZ2h0LWZyb20tc3F1YXJlXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKCEhcGFydElkKCkgfHwgKGF0dGFjaG1lbnQoKVsnJGV4cGFuZGVkJ10gJiYgcGFydHMubGVuZ3RoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJyZWZlcmVuY2UtcGFzc2FnZXNcIj5cbiAgICAgIEBmb3IgKHBhcnQgb2YgcGFydHM7IHRyYWNrICRpbmRleCkge1xuICAgICAgPGRpdiBjbGFzcz1cInJlZmVyZW5jZS1wYXNzYWdlXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVmZXJlbmNlIG1lLTFcIj57eyByZWZlcmVuY2UoKSB9fS57eyBwYXJ0LnBhcnRJZCB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LTEwMCBwZS0yXCIgW2lubmVySFRNTF09XCJwYXJ0LnRleHRcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGZvciAoaW1hZ2VJZCBvZiBncm91cGVkSW1hZ2VzSWRzKClbcGFydC5wYXJ0SWRdOyB0cmFjayAkaW5kZXgpIHsgXG4gICAgICAgIEBsZXQgcmVmID0gcGFydD8uaW1hZ2VzPy5baW1hZ2VJZCAtIDFdO1xuICAgICAgICBAaWYgKHJlZj8udXJsKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJnYXAtMSBtcy0yIG15LTIgaXRlbXMtc3RhcnRcIlxuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogc3RhcnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVmZXJlbmNlXCIgc3R5bGU9XCJmbGV4LXNocmluazogMDtcIj5cbiAgICAgICAgICAgICAge3sgXCJJbWctXCIgKyByZWZlcmVuY2UoKSArIFwiLlwiICsgcGFydC5wYXJ0SWQgKyBcIi5cIiArIGltYWdlSWQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBbc3JjXT1cInJlZi51cmxcIlxuICAgICAgICAgICAgICBbYWx0XT1cInJlZi5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJtb2RhbENsaWNrZWQocmVmKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIEBmb3IgKHBhZ2VJZCBvZiBncm91cGVkUGFnZXNJZHMoKVtyZWZlcmVuY2UoKV07IHRyYWNrICRpbmRleCkge1xuICAgICAgQGxldCByZWYgPSBmaW5kUGFnZShyZWZlcmVuY2VNYXAoKT8uZ2V0KHJlZmVyZW5jZSgpKT8ucGFnZXMsIHBhZ2VJZCk7XG4gICAgICBAaWYgKHJlZj8udXJsKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdhcC0xIG1zLTIgbXktMiBpdGVtcy1zdGFydFwiXG4gICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogc3RhcnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWZlcmVuY2VcIiBzdHlsZT1cImZsZXgtc2hyaW5rOiAwO1wiPnt7IFwiUGFnZS1cIiArIHJlZmVyZW5jZSgpICsgXCIuXCIgKyBwYWdlSWQgfX08L3NwYW4+XG5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBbc3JjXT1cInJlZi51cmxcIlxuICAgICAgICAgICAgW2FsdF09XCJyZWYuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsQ2xpY2tlZChyZWYpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48ZGlhbG9nICNtb2RhbD5cbiAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsVHBsKCk/Lm5hdGl2ZUVsZW1lbnQ/LmNsb3NlKClcIj5cbiAgICA8aSBjbGFzcz1cImZhcyBmYS14bWFya1wiPjwvaT5cbiAgPC9idXR0b24+XG5cbiAgPGltZyBbc3JjXT1cIm1vZGFsUmVmKCkudXJsXCIgW2FsdF09XCJtb2RhbFJlZigpLmRlc2NyaXB0aW9uXCIgLz5cbjwvZGlhbG9nPlxuIl19
@@ -115,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
115
115
  type: Output,
116
116
  args: ["cancel"]
117
117
  }] } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zZXR0aW5ncy12My5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9jaGF0LXNldHRpbmdzLXYzL2NoYXQtc2V0dGluZ3MtdjMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC1zZXR0aW5ncy12My9jaGF0LXNldHRpbmdzLXYzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQVVwRSxNQUFNLE9BQU8sdUJBQXVCO0lBUnBDO1FBWW9CLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3pDLFlBQU8sR0FBRyxJ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QWtCLENBQUMseUJBQXlCLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDOytHQWpIVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwySkFGdkIsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQywwQkN0QnJELCtnSUFpRUEsb3NKRDVDWSxZQUFZLCtQQUFFLFdBQVcsbzFDQUFFLGFBQWE7OzRGQUd2Qyx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLGFBQ3hDLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7OEJBSTFDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRVksT0FBTztzQkFBeEIsTUFBTTt1QkFBQyxRQUFRO2dCQUNFLE9BQU87c0JBQXhCLE1BQU07dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHByb3ZpZGVUcmFuc2xvY29TY29wZSwgVHJhbnNsb2NvUGlwZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5cbmltcG9ydCB7IGlzQXV0aGVudGljYXRlZCwgc2hhNTEyIH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xuXG5pbXBvcnQgeyBDaGF0U2VydmljZSB9IGZyb20gXCIuLi9jaGF0LnNlcnZpY2VcIjtcbmltcG9ydCB7IEluc3RhbmNlTWFuYWdlclNlcnZpY2UgfSBmcm9tIFwiLi4vaW5zdGFuY2UtbWFuYWdlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDaGF0Q29uZmlnLCBHbGxtTW9kZWxEZXNjcmlwdGlvbiB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQcmluY2lwYWxTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3ByaW5jaXBhbC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBnZXRBc3Npc3RhbnRKc29uRnJvbUNDQXBwIH0gZnJvbSBcIi4uL3V0aWxzL2Fzc2lzdGFudC1qc29uXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NxLWNoYXQtc2V0dGluZ3MtdjMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1zZXR0aW5ncy12My5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1wiLi9jaGF0LXNldHRpbmdzLXYzLmNvbXBvbmVudC5zY3NzXCJdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgVHJhbnNsb2NvUGlwZV0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVUcmFuc2xvY29TY29wZSgnY2hhdC1zZXR0aW5ncycpXVxufSlcbmV4cG9ydCBjbGFzcyBDaGF0U2V0dGluZ3NWM0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqIERlZmluZSB0aGUga2V5IGJhc2VkIG9uIGl0LCB0aGUgYXBwcm9wcmlhdGUgY2hhdFNlcnZpY2UgaW5zdGFuY2Ugd2lsbCBiZSByZXR1cm5lZCBmcm9tIGluc3RhbmNlTWFuYWdlclNlcnZpY2UgKi9cbiAgQElucHV0KCkgaW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gIEBPdXRwdXQoXCJ1cGRhdGVcIikgX3VwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhdENvbmZpZz4oKTtcbiAgQE91dHB1dChcImNhbmNlbFwiKSBfY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0Q29uZmlnPigpO1xuXG4gIGNoYXRTZXJ2aWNlOiBDaGF0U2VydmljZTtcbiAgY29uZmlnOiBDaGF0Q29uZmlnO1xuICBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHNlbGVjdGVkTW9kZWw6IEdsbG1Nb2RlbERlc2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBmdW5jdGlvbnM6IHtuYW1lOiBzdHJpbmcsIGVuYWJsZWQ6IGJvb2xlYW59W10gPSBbXTtcbiAgaXNBZG1pbiA9IGZhbHNlO1xuICBzaG93RGVidWdUb2dnbGUgPSBmYWxzZTtcblxuICBwdWJsaWMgaW5zdGFuY2VNYW5hZ2VyU2VydmljZSA9IGluamVjdChJbnN0YW5jZU1hbmFnZXJTZXJ2aWNlKTtcbiAgcHVibGljIHByaW5jaXBhbFNlcnZpY2UgPSBpbmplY3QoUHJpbmNpcGFsU2VydmljZSk7XG4gIHB1YmxpYyBhcHBTZXJ2aWNlID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIG9mKGlzQXV0aGVudGljYXRlZCgpKS5waXBlKFxuICAgICAgICB0YXAoXyA9PiB0aGlzLmluc3RhbnRpYXRlQ2hhdFNlcnZpY2UoKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNoYXRTZXJ2aWNlLmluaXRDb25maWckKSxcbiAgICAgICAgZmlsdGVyKGluaXRDb25maWcgPT4gISFpbml0Q29uZmlnKVxuICAgICAgKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IHRoaXMucHJpbmNpcGFsU2VydmljZS5wcmluY2lwYWwhLmlzQWRtaW5pc3RyYXRvcjtcbiAgICAgICAgLy8gSW5pdCBjb25maWcgd2l0aCBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGNoYXQgY29uZmlnLCBzbyB0aGF0IGl0IHdvbid0IGJlIG1vZGlmaWVkIGJ5IHRoZSB1c2VyIHVudGlsIGhlIGNsaWNrcyBvbiBzYXZlXG4gICAgICAgIHRoaXMuY29uZmlnID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXRTZXJ2aWNlLmFzc2lzdGFudENvbmZpZyQudmFsdWUpKTtcbiAgICAgICAgLy8gU2hvdyBkZWJ1ZyB0b2dnbGUgd2hldGhlciB0aGUgdXNlciBpcyBhbiBhZG1pbiBvciBhIGRlbGVnYXRlZCBhZG1pbiB3aXRoIHRoZSBkZWJ1ZyBtb2RlIGVuYWJsZWQgaW4gdGhlIHVpU2V0dGluZ3NcbiAgICAgICAgdGhpcy5zaG93RGVidWdUb2dnbGUgPSAoXG4gICAgICAgICAgdGhpcy5pc0FkbWluIHx8ICEhdGhpcy5jaGF0U2VydmljZS51c2VyT3ZlcnJpZGUkLnZhbHVlIHx8ICh0aGlzLnByaW5jaXBhbFNlcnZpY2UucHJpbmNpcGFsIS5pc0RlbGVnYXRlZEFkbWluICYmIHRoaXMuY29uZmlnLnVpU2V0dGluZ3MuZGVidWcpXG4gICAgICAgICkgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbCA9IHRoaXMuY2hhdFNlcnZpY2UuZ2V0TW9kZWwodGhpcy5jb25maWcuZGVmYXVsdFZhbHVlcy5zZXJ2aWNlX2lkLCB0aGlzLmNvbmZpZy5kZWZhdWx0VmFsdWVzLm1vZGVsX2lkKTtcbiAgICAgICAgdGhpcy5pbml0RnVuY3Rpb25zTGlzdCgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldCBoYXNQcm9tcHRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzQWRtaW5cbiAgICAgIHx8ICEhdGhpcy5jb25maWcudWlTZXR0aW5ncy5kaXNwbGF5U3lzdGVtUHJvbXB0XG4gICAgICB8fCAhIXRoaXMuY29uZmlnLnVpU2V0dGluZ3MuZGlzcGxheVVzZXJQcm9tcHQ7XG4gIH1cblxuICBnZXQgaGFzQWR2YW5jZWRQYXJhbWV0ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzQWRtaW5cbiAgICAgIHx8ICEhdGhpcy5jb25maWcudWlTZXR0aW5ncy50ZW1wZXJhdHVyZVxuICAgICAgfHwgISF0aGlzLmNvbmZpZy51aVNldHRpbmdzLnRvcF9wXG4gICAgICB8fCAhIXRoaXMuY29uZmlnLnVpU2V0dGluZ3MubWF4X3Rva2VucztcbiAgfVxuXG4gIGdldCBoYXNNb2RlbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0FkbWluXG4gICAgICB8fCAhIXRoaXMuY29uZmlnLnVpU2V0dGluZ3Muc2VydmljZXNNb2RlbHNcbiAgICAgIHx8ICEhdGhpcy5jb25maWcudWlTZXR0aW5ncy5mdW5jdGlvbnNcbiAgICAgIHx8ICEhdGhpcy5jb25maWcudWlTZXR0aW5ncy5kZWJ1Z1xuICAgICAgfHwgISF0aGlzLmNvbmZpZy51aVNldHRpbmdzLnRlbXBlcmF0dXJlXG4gICAgICB8fCAhIXRoaXMuY29uZmlnLnVpU2V0dGluZ3MudG9wX3BcbiAgICAgIHx8ICEhdGhpcy5jb25maWcudWlTZXR0aW5ncy5tYXhfdG9rZW5zO1xuICB9XG5cbiAgaW5zdGFudGlhdGVDaGF0U2VydmljZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYXRTZXJ2aWNlID0gdGhpcy5pbnN0YW5jZU1hbmFnZXJTZXJ2aWNlLmdldEluc3RhbmNlKHRoaXMuaW5zdGFuY2VJZCk7XG4gIH1cblxuICBvbkNoYXRNb2RlbENoYW5nZShzZWxlY3RlZE1vZGVsOiBHbGxtTW9kZWxEZXNjcmlwdGlvbikge1xuICAgIC8vIFVwZGF0ZSBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCBtb2RlbFxuICAgIHRoaXMuY29uZmlnLmRlZmF1bHRWYWx1ZXMuc2VydmljZV9pZCA9IHNlbGVjdGVkTW9kZWwuc2VydmljZUlkO1xuICAgIHRoaXMuY29uZmlnLmRlZmF1bHRWYWx1ZXMubW9kZWxfaWQgPSBzZWxlY3RlZE1vZGVsLm1vZGVsSWQ7XG4gIH1cblxuICBnZXRGdW5jdGlvbkRlc2NyaXB0aW9uKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hhdFNlcnZpY2UuZnVuY3Rpb25zPy5maW5kKGZuID0+IGZuLmZ1bmN0aW9uTmFtZSA9PT0gbmFtZSk/LmRlc2NyaXB0aW9uIHx8IFwiXCI7XG4gIH1cblxuICB0b2dnbGVGdW5jdGlvbnNTZWxlY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgLy8gVXBkYXRlIHRoZSBlbmFibGVkIHByb3BlcnR5IG9mIHRoZSBmdW5jdGlvblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jb25maWcuZGVmYXVsdFZhbHVlcy5mdW5jdGlvbnMuZmluZEluZGV4KGZ1bmMgPT4gZnVuYy5uYW1lID09PSBuYW1lKTtcbiAgICB0aGlzLmNvbmZpZy5kZWZhdWx0VmFsdWVzLmZ1bmN0aW9uc1tpbmRleF0uZW5hYmxlZCA9IHRoaXMuZnVuY3Rpb25zW2luZGV4XS5lbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RnVuY3Rpb25zTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZ1bmN0aW9ucyA9IHRoaXMuY29uZmlnLmRlZmF1bHRWYWx1ZXMuZnVuY3Rpb25zLmZpbHRlcihmdW5jID0+ICEhdGhpcy5jaGF0U2VydmljZS5mdW5jdGlvbnM/LmZpbmQoZm4gPT4gZm4uZnVuY3Rpb25OYW1lID09PSBmdW5jLm5hbWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSBuZXcgY2hhdCBjb25maWcgaW4gdGhlIGNoYXQgc2VydmljZSBhbmQgdGhlIHVzZXIgcHJlZmVyZW5jZXNcbiAgICogSWYgdGhlIHVzZXIgaGFzIG5ldmVyIG1vZGlmaWVkIHRoZSBkZWZhdWx0IHZhbHVlcywgd2UgbmVlZCB0byBzYXZlIHRoZSBoYXNoIG9mIHRoZSBzdGFuZGFyZCBkZWZhdWx0IHZhbHVlcywgYXMgZGVmaW5lZCBieSB0aGUgYWRtaW4sIGluIG9yZGVyIHRvIHByb3Blcmx5IHRyYWNrIGNoYW5nZXMgYWZ0ZXJ3YXJkcy5cbiAgICovXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgY29uc3QgdXNlclNldHRpbmdzQ29uZmlnID0gdGhpcy5jaGF0U2VydmljZS5hc3Npc3RhbnRzW3RoaXMuaW5zdGFuY2VJZF0gfHwge307XG4gICAgaWYgKCF1c2VyU2V0dGluZ3NDb25maWcuZGVmYXVsdFZhbHVlcykgeyAvLyBBdCB0aGlzIHBvaW50LCBpdCBpcyB0aGUgdmVyeSBmaXJzdCB0aW1lIHRoZSB1c2VyIG1ha2VzIGNoYW5nZXMgdG8gdGhlIGRlZmF1bHQgdmFsdWVzXG4gICAgICBjb25zdCBzdGFuZGFyZENoYXRDb25maWcgPSBnZXRBc3Npc3RhbnRKc29uRnJvbUNDQXBwKHRoaXMuYXBwU2VydmljZS5hcHAsIHRoaXMuaW5zdGFuY2VJZCk7XG4gICAgICBjb25zdCBjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2ggPSBhd2FpdCBzaGE1MTIoSlNPTi5zdHJpbmdpZnkoc3RhbmRhcmRDaGF0Q29uZmlnLmRlZmF1bHRWYWx1ZXMpKTtcbiAgICAgIGNvbnN0IGhhc2hlcyA9IHsgLi4udXNlclNldHRpbmdzQ29uZmlnLmhhc2hlcywgXCJhcHBsaWVkLWRlZmF1bHRWYWx1ZXMtaGFzaFwiOiBjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2ggfTtcbiAgICAgIHRoaXMuY2hhdFNlcnZpY2UudXBkYXRlQ2hhdENvbmZpZyh0aGlzLmNvbmZpZywgaGFzaGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGF0U2VydmljZS51cGRhdGVDaGF0Q29uZmlnKHRoaXMuY29uZmlnKTtcbiAgICB9XG4gICAgdGhpcy5jaGF0U2VydmljZS5nZW5lcmF0ZUF1ZGl0RXZlbnQoXCJhc3QtY29uZmlndXJhdGlvbi5jbGlja1wiLCB7ICdjb25maWd1cmF0aW9uJzogSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpIH0pO1xuICAgIHRoaXMuX3VwZGF0ZS5lbWl0KHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWwgdGhlIGN1cnJlbnQgY2hhbmdlc1xuICAgKi9cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMuX2NhbmNlbC5lbWl0KHRoaXMuY2hhdFNlcnZpY2UuYXNzaXN0YW50Q29uZmlnJC52YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzcS1jaGF0LXNldHRpbmdzXCIgKm5nSWY9XCJpc0FkbWluIHx8IGNvbmZpZy51aVNldHRpbmdzLmRpc3BsYXlcIj5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmdzLXBhbmVsIHAtMiBzbWFsbFwiICpuZ0lmPVwiY29uZmlnXCI+XG5cbiAgICA8aDUgKm5nSWY9XCJoYXNNb2RlbFwiPnt7ICdjaGF0U2V0dGluZ3MubW9kZWwnIHwgdHJhbnNsb2NvIH19PC9oNT5cbiAgICA8ZGl2IGNsYXNzPVwibWItMlwiICpuZ0lmPVwiaXNBZG1pbiB8fCBjb25maWcudWlTZXR0aW5ncy5zZXJ2aWNlc01vZGVsc1wiPlxuICAgICAgPGxhYmVsIGZvcj1cImdsbG1Nb2RlbFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdjaGF0U2V0dGluZ3MubW9kZWwnIHwgdHJhbnNsb2NvIH19PC9sYWJlbD5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGlkPVwiZ2xsbU1vZGVsXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1vZGVsXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGF0TW9kZWxDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBjaGF0U2VydmljZS5tb2RlbHNcIiBbbmdWYWx1ZV09XCJtb2RlbFwiPnt7bW9kZWwubmFtZX19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi00XCIgKm5nSWY9XCJpc0FkbWluIHx8IGNvbmZpZy51aVNldHRpbmdzLmZ1bmN0aW9uc1wiPlxuICAgICAgPGxhYmVsIGZvcj1cImdsbG1GdW5jdGlvbnNcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyAnY2hhdFNldHRpbmdzLmZ1bmN0aW9ucycgfCB0cmFuc2xvY28gfX08L2xhYmVsPlxuICAgICAgPGRpdiBpZD1cImdsbG1GdW5jdGlvbnNcIiAqbmdGb3I9XCJsZXQgZnVuYyBvZiBmdW5jdGlvbnNcIiBjbGFzcz1cIm11bHRpLW9wdGlvbiBmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiByb2xlPVwic3dpdGNoXCIgW2lkXT1cImZ1bmMubmFtZVwiIFsobmdNb2RlbCldPVwiZnVuYy5lbmFibGVkXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVGdW5jdGlvbnNTZWxlY3Rpb24oZnVuYy5uYW1lKVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2Zvcl09XCJmdW5jLm5hbWVcIiBbdGl0bGVdPVwiZ2V0RnVuY3Rpb25EZXNjcmlwdGlvbihmdW5jLm5hbWUpXCI+e3sgZnVuYy5uYW1lIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbWItMlwiICpuZ0lmPVwic2hvd0RlYnVnVG9nZ2xlXCI+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIGlkPVwiZGVidWdcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5kZWZhdWx0VmFsdWVzLmRlYnVnXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZGVidWdcIj57eyAnY2hhdFNldHRpbmdzLmRlYnVnJyB8IHRyYW5zbG9jbyB9fTwvbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGV0YWlscyAqbmdJZj1cImhhc0FkdmFuY2VkUGFyYW1ldGVyc1wiPlxuICAgICAgPHN1bW1hcnk+e3sgJ2NoYXRTZXR0aW5ncy5hZHZhbmNlZFBhcmFtZXRlcnMnIHwgdHJhbnNsb2NvIH19PC9zdW1tYXJ5PlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cImlzQWRtaW4gfHwgY29uZmlnLnVpU2V0dGluZ3MudGVtcGVyYXR1cmVcIj5cbiAgICAgICAgPGxhYmVsIGZvcj1cInRlbXBlcmF0dXJlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ2NoYXRTZXR0aW5ncy50ZW1wZXJhdHVyZScgfCB0cmFuc2xvY28gfX06IHt7Y29uZmlnLmRlZmF1bHRWYWx1ZXMudGVtcGVyYXR1cmV9fTwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cImZvcm0tcmFuZ2UgZm9ybS1yYW5nZS1zbVwiIG1pbj1cIjBcIiBtYXg9XCIyXCIgc3RlcD1cIjAuMVwiIGlkPVwidGVtcGVyYXR1cmVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmRlZmF1bHRWYWx1ZXMudGVtcGVyYXR1cmVcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cImlzQWRtaW4gfHwgY29uZmlnLnVpU2V0dGluZ3MudG9wX3BcIj5cbiAgICAgICAgPGxhYmVsIGZvcj1cInRvcC1wXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ2NoYXRTZXR0aW5ncy50b3BQJyB8IHRyYW5zbG9jbyB9fToge3tjb25maWcuZGVmYXVsdFZhbHVlcy50b3BfcH19PC9sYWJlbD5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIGNsYXNzPVwiZm9ybS1yYW5nZSBmb3JtLXJhbmdlLXNtXCIgbWluPVwiMFwiIG1heD1cIjFcIiBzdGVwPVwiMC4wNVwiIGlkPVwidG9wLXBcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmRlZmF1bHRWYWx1ZXMudG9wX3BcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cImlzQWRtaW4gfHwgY29uZmlnLnVpU2V0dGluZ3MubWF4X3Rva2Vuc1wiPlxuICAgICAgICA8bGFiZWwgZm9yPVwibWF4LXRva2Vuc1wiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdjaGF0U2V0dGluZ3MuTWF4R2VuZXJhdGVkVG9rZW5zJyB8IHRyYW5zbG9jbyB9fTpcbiAgICAgICAgICB7e2NvbmZpZy5kZWZhdWx0VmFsdWVzLm1heF90b2tlbnN9fTwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cImZvcm0tcmFuZ2UgZm9ybS1yYW5nZS1zbVwiIG1pbj1cIjFcIiBtYXg9XCIyMDQ4XCIgc3RlcD1cIjFcIiBpZD1cIm1heC10b2tlbnNcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmRlZmF1bHRWYWx1ZXMubWF4X3Rva2Vuc1wiPlxuICAgICAgPC9kaXY+XG4gICAgPC9kZXRhaWxzPlxuXG4gICAgPGhyPlxuXG4gICAgPGg1ICpuZ0lmPVwiaGFzUHJvbXB0c1wiPnt7ICdjaGF0U2V0dGluZ3MuUHJvbXB0cycgfCB0cmFuc2xvY28gfX08L2g1PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCJpc0FkbWluIHx8IGNvbmZpZy51aVNldHRpbmdzLmRpc3BsYXlTeXN0ZW1Qcm9tcHRcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJpbml0aWFsU3lzdGVtUHJvbXB0XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ2NoYXRTZXR0aW5ncy5zeXN0ZW1Qcm9tcHQnIHwgdHJhbnNsb2NvIH19PC9sYWJlbD5cbiAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiaW5pdGlhbFN5c3RlbVByb21wdFwiIFsobmdNb2RlbCldPVwiY29uZmlnLmRlZmF1bHRWYWx1ZXMuc3lzdGVtUHJvbXB0XCI+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItMlwiICpuZ0lmPVwiaXNBZG1pbiB8fCBjb25maWcudWlTZXR0aW5ncy5kaXNwbGF5VXNlclByb21wdFwiPlxuICAgICAgPGxhYmVsIGZvcj1cImluaXRpYWxVc2VyUHJvbXB0XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ2NoYXRTZXR0aW5ncy5pbml0aWFsVXNlclByb21wdCcgfCB0cmFuc2xvY28gfX08L2xhYmVsPlxuICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJpbml0aWFsVXNlclByb21wdFwiIFsobmdNb2RlbCldPVwiY29uZmlnLmRlZmF1bHRWYWx1ZXMudXNlclByb21wdFwiPjwvdGV4dGFyZWE+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtcGFuZWwgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0xXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+e3sgJ2NoYXRTZXR0aW5ncy5jYW5jZWwnIHwgdHJhbnNsb2NvIH19PC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiICpuZ0lmPVwiY29uZmlnXCIgKGNsaWNrKT1cInNhdmUoKVwiPnt7ICdjaGF0U2V0dGluZ3Muc2F2ZScgfCB0cmFuc2xvY28gfX08L2J1dHRvbj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zZXR0aW5ncy12My5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9jaGF0LXNldHRpbmdzLXYzL2NoYXQtc2V0dGluZ3MtdjMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC1zZXR0aW5ncy12My9jaGF0LXNldHRpbmdzLXYzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQVVwRSxNQUFNLE9BQU8sdUJBQXVCO0lBUnBDO1FBWW9CLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3pDLFlBQU8sR0FBRyxJ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QWtCLENBQUMseUJBQXlCLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDOytHQWpIVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwySkFGdkIsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQywwQkN0QnJELCtnSUFpRUEsb3NKRDVDWSxZQUFZLCtQQUFFLFdBQVcsbzFDQUFFLGFBQWE7OzRGQUd2Qyx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLGFBQ3hDLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7OEJBSTFDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRVksT0FBTztzQkFBeEIsTUFBTTt1QkFBQyxRQUFRO2dCQUNFLE9BQU87c0JBQXhCLE1BQU07dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHByb3ZpZGVUcmFuc2xvY29TY29wZSwgVHJhbnNsb2NvUGlwZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5cbmltcG9ydCB7IGlzQXV0aGVudGljYXRlZCwgc2hhNTEyIH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xuXG5pbXBvcnQgeyBDaGF0U2VydmljZSB9IGZyb20gXCIuLi9jaGF0LnNlcnZpY2VcIjtcbmltcG9ydCB7IEluc3RhbmNlTWFuYWdlclNlcnZpY2UgfSBmcm9tIFwiLi4vaW5zdGFuY2UtbWFuYWdlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDaGF0Q29uZmlnLCBHbGxtTW9kZWxEZXNjcmlwdGlvbiB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQcmluY2lwYWxTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3ByaW5jaXBhbC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBnZXRBc3Npc3RhbnRKc29uRnJvbUNDQXBwIH0gZnJvbSBcIi4uL3V0aWxzL2Fzc2lzdGFudC1qc29uXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NxLWNoYXQtc2V0dGluZ3MtdjMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1zZXR0aW5ncy12My5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1wiLi9jaGF0LXNldHRpbmdzLXYzLmNvbXBvbmVudC5zY3NzXCJdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgVHJhbnNsb2NvUGlwZV0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVUcmFuc2xvY29TY29wZSgnY2hhdC1zZXR0aW5ncycpXVxufSlcbmV4cG9ydCBjbGFzcyBDaGF0U2V0dGluZ3NWM0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqIERlZmluZSB0aGUga2V5IGJhc2VkIG9uIGl0LCB0aGUgYXBwcm9wcmlhdGUgY2hhdFNlcnZpY2UgaW5zdGFuY2Ugd2lsbCBiZSByZXR1cm5lZCBmcm9tIGluc3RhbmNlTWFuYWdlclNlcnZpY2UgKi9cbiAgQElucHV0KCkgaW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gIEBPdXRwdXQoXCJ1cGRhdGVcIikgX3VwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhdENvbmZpZz4oKTtcbiAgQE91dHB1dChcImNhbmNlbFwiKSBfY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0Q29uZmlnPigpO1xuXG4gIGNoYXRTZXJ2aWNlOiBDaGF0U2VydmljZTtcbiAgY29uZmlnOiBDaGF0Q29uZmlnO1xuICBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHNlbGVjdGVkTW9kZWw6IEdsbG1Nb2RlbERlc2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBmdW5jdGlvbnM6IHtuYW1lOiBzdHJpbmcsIGVuYWJsZWQ6IGJvb2xlYW59W10gPSBbXTtcbiAgaXNBZG1pbiA9IGZhbHNlO1xuICBzaG93RGVidWdUb2dnbGUgPSBmYWxzZTtcblxuICBwdWJsaWMgaW5zdGFuY2VNYW5hZ2VyU2VydmljZSA9IGluamVjdChJbnN0YW5jZU1hbmFnZXJTZXJ2aWNlKTtcbiAgcHVibGljIHByaW5jaXBhbFNlcnZpY2UgPSBpbmplY3QoUHJpbmNpcGFsU2VydmljZSk7XG4gIHB1YmxpYyBhcHBTZXJ2aWNlID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIG9mKGlzQXV0aGVudGljYXRlZCgpKS5waXBlKFxuICAgICAgICB0YXAoXyA9PiB0aGlzLmluc3RhbnRpYXRlQ2hhdFNlcnZpY2UoKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNoYXRTZXJ2aWNlLmluaXRDb25maWckKSxcbiAgICAgICAgZmlsdGVyKGluaXRDb25maWcgPT4gISFpbml0Q29uZmlnKVxuICAgICAgKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IHRoaXMucHJpbmNpcGFsU2VydmljZS5wcmluY2lwYWwhLmlzQWRtaW5pc3RyYXRvcjtcbiAgICAgICAgLy8gSW5pdCBjb25maWcgd2l0aCBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGNoYXQgY29uZmlnLCBzbyB0aGF0IGl0IHdvbid0IGJlIG1vZGlmaWVkIGJ5IHRoZSB1c2VyIHVudGlsIGhlIGNsaWNrcyBvbiBzYXZlXG4gICAgICAgIHRoaXMuY29uZmlnID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXRTZXJ2aWNlLmFzc2lzdGFudENvbmZpZyQudmFsdWUpKTtcbiAgICAgICAgLy8gU2hvdyBkZWJ1ZyB0b2dnbGUgd2hldGhlciB0aGUgdXNlciBpcyBhbiBhZG1pbiBvciBhIGRlbGVnYXRlZCBhZG1pbiB3aXRoIHRoZSBkZWJ1ZyBtb2RlIGVuYWJsZWQgaW4gdGhlIHVpU2V0dGluZ3NcbiAgICAgICAgdGhpcy5zaG93RGVidWdUb2dnbGUgPSAoXG4gICAgICAgICAgdGhpcy5pc0FkbWluIHx8ICEhdGhpcy5jaGF0U2VydmljZS51c2VyT3ZlcnJpZGUkLnZhbHVlIHx8ICh0aGlzLnByaW5jaXBhbFNlcnZpY2UucHJpbmNpcGFsIS5pc0RlbGVnYXRlZEFkbWluICYmIHRoaXMuY29uZmlnLnVpU2V0dGluZ3MuZGVidWcpXG4gICAgICAgICkgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbCA9IHRoaXMuY2hhdFNlcnZpY2UuZ2V0TW9kZWwodGhpcy5jb25maWcuZGVmYXVsdFZhbHVlcy5zZXJ2aWNlX2lkLCB0aGlzLmNvbmZpZy5kZWZhdWx0VmFsdWVzLm1vZGVsX2lkKTtcbiAgICAgICAgdGhpcy5pbml0RnVuY3Rpb25zTGlzdCgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldCBoYXNQcm9tcHRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzQWRtaW5cbiAgICAgIHx8ICEhdGhpcy5jb25maWcudWlTZXR0aW5ncy5kaXNwbGF5U3lzdGVtUHJvbXB0XG4gICAgICB8fCAhIXRoaXMuY29uZmlnLnVpU2V0dGluZ3MuZGlzcGxheVVzZXJQcm9tcHQ7XG4gIH1cblxuICBnZXQgaGFzQWR2YW5jZWRQYXJhbWV0ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzQWRtaW5cbiAgICAgIHx8ICEhdGhpcy5jb25maWcudWlTZXR0aW5ncy50ZW1wZXJhdHVyZVxuICAgICAgfHwgISF0aGlzLmNvbmZpZy51aVNldHRpbmdzLnRvcF9wXG4gICAgICB8fCAhIXRoaXMuY29uZmlnLnVpU2V0dGluZ3MubWF4X3Rva2VucztcbiAgfVxuXG4gIGdldCBoYXNNb2RlbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0FkbWluXG4gICAgICB8fCAhIXRoaXMuY29uZmlnLnVpU2V0dGluZ3Muc2VydmljZXNNb2RlbHNcbiAgICAgIHx8ICEhdGhpcy5jb25maWcudWlTZXR0aW5ncy5mdW5jdGlvbnNcbiAgICAgIHx8ICEhdGhpcy5jb25maWcudWlTZXR0aW5ncy5kZWJ1Z1xuICAgICAgfHwgISF0aGlzLmNvbmZpZy51aVNldHRpbmdzLnRlbXBlcmF0dXJlXG4gICAgICB8fCAhIXRoaXMuY29uZmlnLnVpU2V0dGluZ3MudG9wX3BcbiAgICAgIHx8ICEhdGhpcy5jb25maWcudWlTZXR0aW5ncy5tYXhfdG9rZW5zO1xuICB9XG5cbiAgaW5zdGFudGlhdGVDaGF0U2VydmljZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYXRTZXJ2aWNlID0gdGhpcy5pbnN0YW5jZU1hbmFnZXJTZXJ2aWNlLmdldEluc3RhbmNlKHRoaXMuaW5zdGFuY2VJZCk7XG4gIH1cblxuICBvbkNoYXRNb2RlbENoYW5nZShzZWxlY3RlZE1vZGVsOiBHbGxtTW9kZWxEZXNjcmlwdGlvbikge1xuICAgIC8vIFVwZGF0ZSBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCBtb2RlbFxuICAgIHRoaXMuY29uZmlnLmRlZmF1bHRWYWx1ZXMuc2VydmljZV9pZCA9IHNlbGVjdGVkTW9kZWwuc2VydmljZUlkO1xuICAgIHRoaXMuY29uZmlnLmRlZmF1bHRWYWx1ZXMubW9kZWxfaWQgPSBzZWxlY3RlZE1vZGVsLm1vZGVsSWQ7XG4gIH1cblxuICBnZXRGdW5jdGlvbkRlc2NyaXB0aW9uKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hhdFNlcnZpY2UuZnVuY3Rpb25zPy5maW5kKGZuID0+IGZuLmZ1bmN0aW9uTmFtZSA9PT0gbmFtZSk/LmRlc2NyaXB0aW9uIHx8IFwiXCI7XG4gIH1cblxuICB0b2dnbGVGdW5jdGlvbnNTZWxlY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgLy8gVXBkYXRlIHRoZSBlbmFibGVkIHByb3BlcnR5IG9mIHRoZSBmdW5jdGlvblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jb25maWcuZGVmYXVsdFZhbHVlcy5mdW5jdGlvbnMuZmluZEluZGV4KGZ1bmMgPT4gZnVuYy5uYW1lID09PSBuYW1lKTtcbiAgICB0aGlzLmNvbmZpZy5kZWZhdWx0VmFsdWVzLmZ1bmN0aW9uc1tpbmRleF0uZW5hYmxlZCA9IHRoaXMuZnVuY3Rpb25zW2luZGV4XS5lbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RnVuY3Rpb25zTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZ1bmN0aW9ucyA9IHRoaXMuY29uZmlnLmRlZmF1bHRWYWx1ZXMuZnVuY3Rpb25zLmZpbHRlcihmdW5jID0+ICEhdGhpcy5jaGF0U2VydmljZS5mdW5jdGlvbnM/LmZpbmQoZm4gPT4gZm4uZnVuY3Rpb25OYW1lID09PSBmdW5jLm5hbWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSBuZXcgY2hhdCBjb25maWcgaW4gdGhlIGNoYXQgc2VydmljZSBhbmQgdGhlIHVzZXIgcHJlZmVyZW5jZXNcbiAgICogSWYgdGhlIHVzZXIgaGFzIG5ldmVyIG1vZGlmaWVkIHRoZSBkZWZhdWx0IHZhbHVlcywgd2UgbmVlZCB0byBzYXZlIHRoZSBoYXNoIG9mIHRoZSBzdGFuZGFyZCBkZWZhdWx0IHZhbHVlcywgYXMgZGVmaW5lZCBieSB0aGUgYWRtaW4sIGluIG9yZGVyIHRvIHByb3Blcmx5IHRyYWNrIGNoYW5nZXMgYWZ0ZXJ3YXJkcy5cbiAgICovXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgY29uc3QgdXNlclNldHRpbmdzQ29uZmlnID0gdGhpcy5jaGF0U2VydmljZS5hc3Npc3RhbnRzW3RoaXMuaW5zdGFuY2VJZF0gfHwge307XG4gICAgaWYgKCF1c2VyU2V0dGluZ3NDb25maWcuZGVmYXVsdFZhbHVlcykgeyAvLyBBdCB0aGlzIHBvaW50LCBpdCBpcyB0aGUgdmVyeSBmaXJzdCB0aW1lIHRoZSB1c2VyIG1ha2VzIGNoYW5nZXMgdG8gdGhlIGRlZmF1bHQgdmFsdWVzXG4gICAgICBjb25zdCBzdGFuZGFyZENoYXRDb25maWcgPSBnZXRBc3Npc3RhbnRKc29uRnJvbUNDQXBwKHRoaXMuYXBwU2VydmljZS5hcHAhLCB0aGlzLmluc3RhbmNlSWQpO1xuICAgICAgY29uc3QgY3VycmVudERlZmF1bHRWYWx1ZXNIYXNoID0gYXdhaXQgc2hhNTEyKEpTT04uc3RyaW5naWZ5KHN0YW5kYXJkQ2hhdENvbmZpZy5kZWZhdWx0VmFsdWVzKSk7XG4gICAgICBjb25zdCBoYXNoZXMgPSB7IC4uLnVzZXJTZXR0aW5nc0NvbmZpZy5oYXNoZXMsIFwiYXBwbGllZC1kZWZhdWx0VmFsdWVzLWhhc2hcIjogY3VycmVudERlZmF1bHRWYWx1ZXNIYXNoIH07XG4gICAgICB0aGlzLmNoYXRTZXJ2aWNlLnVwZGF0ZUNoYXRDb25maWcodGhpcy5jb25maWcsIGhhc2hlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hhdFNlcnZpY2UudXBkYXRlQ2hhdENvbmZpZyh0aGlzLmNvbmZpZyk7XG4gICAgfVxuICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2VuZXJhdGVBdWRpdEV2ZW50KFwiYXN0LWNvbmZpZ3VyYXRpb24uY2xpY2tcIiwgeyAnY29uZmlndXJhdGlvbic6IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKSB9KTtcbiAgICB0aGlzLl91cGRhdGUuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VsIHRoZSBjdXJyZW50IGNoYW5nZXNcbiAgICovXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLl9jYW5jZWwuZW1pdCh0aGlzLmNoYXRTZXJ2aWNlLmFzc2lzdGFudENvbmZpZyQudmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3EtY2hhdC1zZXR0aW5nc1wiICpuZ0lmPVwiaXNBZG1pbiB8fCBjb25maWcudWlTZXR0aW5ncy5kaXNwbGF5XCI+XG4gIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1wYW5lbCBwLTIgc21hbGxcIiAqbmdJZj1cImNvbmZpZ1wiPlxuXG4gICAgPGg1ICpuZ0lmPVwiaGFzTW9kZWxcIj57eyAnY2hhdFNldHRpbmdzLm1vZGVsJyB8IHRyYW5zbG9jbyB9fTwvaDU+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cImlzQWRtaW4gfHwgY29uZmlnLnVpU2V0dGluZ3Muc2VydmljZXNNb2RlbHNcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJnbGxtTW9kZWxcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyAnY2hhdFNldHRpbmdzLm1vZGVsJyB8IHRyYW5zbG9jbyB9fTwvbGFiZWw+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBpZD1cImdsbG1Nb2RlbFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRNb2RlbFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhdE1vZGVsQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbW9kZWwgb2YgY2hhdFNlcnZpY2UubW9kZWxzXCIgW25nVmFsdWVdPVwibW9kZWxcIj57e21vZGVsLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItNFwiICpuZ0lmPVwiaXNBZG1pbiB8fCBjb25maWcudWlTZXR0aW5ncy5mdW5jdGlvbnNcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJnbGxtRnVuY3Rpb25zXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ2NoYXRTZXR0aW5ncy5mdW5jdGlvbnMnIHwgdHJhbnNsb2NvIH19PC9sYWJlbD5cbiAgICAgIDxkaXYgaWQ9XCJnbGxtRnVuY3Rpb25zXCIgKm5nRm9yPVwibGV0IGZ1bmMgb2YgZnVuY3Rpb25zXCIgY2xhc3M9XCJtdWx0aS1vcHRpb24gZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIFtpZF09XCJmdW5jLm5hbWVcIiBbKG5nTW9kZWwpXT1cImZ1bmMuZW5hYmxlZFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlRnVuY3Rpb25zU2VsZWN0aW9uKGZ1bmMubmFtZSlcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwiZnVuYy5uYW1lXCIgW3RpdGxlXT1cImdldEZ1bmN0aW9uRGVzY3JpcHRpb24oZnVuYy5uYW1lKVwiPnt7IGZ1bmMubmFtZSB9fTwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG1iLTJcIiAqbmdJZj1cInNob3dEZWJ1Z1RvZ2dsZVwiPlxuICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHJvbGU9XCJzd2l0Y2hcIiBpZD1cImRlYnVnXCIgWyhuZ01vZGVsKV09XCJjb25maWcuZGVmYXVsdFZhbHVlcy5kZWJ1Z1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImRlYnVnXCI+e3sgJ2NoYXRTZXR0aW5ncy5kZWJ1ZycgfCB0cmFuc2xvY28gfX08L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRldGFpbHMgKm5nSWY9XCJoYXNBZHZhbmNlZFBhcmFtZXRlcnNcIj5cbiAgICAgIDxzdW1tYXJ5Pnt7ICdjaGF0U2V0dGluZ3MuYWR2YW5jZWRQYXJhbWV0ZXJzJyB8IHRyYW5zbG9jbyB9fTwvc3VtbWFyeT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCJpc0FkbWluIHx8IGNvbmZpZy51aVNldHRpbmdzLnRlbXBlcmF0dXJlXCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJ0ZW1wZXJhdHVyZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdjaGF0U2V0dGluZ3MudGVtcGVyYXR1cmUnIHwgdHJhbnNsb2NvIH19OiB7e2NvbmZpZy5kZWZhdWx0VmFsdWVzLnRlbXBlcmF0dXJlfX08L2xhYmVsPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgY2xhc3M9XCJmb3JtLXJhbmdlIGZvcm0tcmFuZ2Utc21cIiBtaW49XCIwXCIgbWF4PVwiMlwiIHN0ZXA9XCIwLjFcIiBpZD1cInRlbXBlcmF0dXJlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5kZWZhdWx0VmFsdWVzLnRlbXBlcmF0dXJlXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCJpc0FkbWluIHx8IGNvbmZpZy51aVNldHRpbmdzLnRvcF9wXCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJ0b3AtcFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdjaGF0U2V0dGluZ3MudG9wUCcgfCB0cmFuc2xvY28gfX06IHt7Y29uZmlnLmRlZmF1bHRWYWx1ZXMudG9wX3B9fTwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cImZvcm0tcmFuZ2UgZm9ybS1yYW5nZS1zbVwiIG1pbj1cIjBcIiBtYXg9XCIxXCIgc3RlcD1cIjAuMDVcIiBpZD1cInRvcC1wXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5kZWZhdWx0VmFsdWVzLnRvcF9wXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCJpc0FkbWluIHx8IGNvbmZpZy51aVNldHRpbmdzLm1heF90b2tlbnNcIj5cbiAgICAgICAgPGxhYmVsIGZvcj1cIm1heC10b2tlbnNcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyAnY2hhdFNldHRpbmdzLk1heEdlbmVyYXRlZFRva2VucycgfCB0cmFuc2xvY28gfX06XG4gICAgICAgICAge3tjb25maWcuZGVmYXVsdFZhbHVlcy5tYXhfdG9rZW5zfX08L2xhYmVsPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgY2xhc3M9XCJmb3JtLXJhbmdlIGZvcm0tcmFuZ2Utc21cIiBtaW49XCIxXCIgbWF4PVwiMjA0OFwiIHN0ZXA9XCIxXCIgaWQ9XCJtYXgtdG9rZW5zXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5kZWZhdWx0VmFsdWVzLm1heF90b2tlbnNcIj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGV0YWlscz5cblxuICAgIDxocj5cblxuICAgIDxoNSAqbmdJZj1cImhhc1Byb21wdHNcIj57eyAnY2hhdFNldHRpbmdzLlByb21wdHMnIHwgdHJhbnNsb2NvIH19PC9oNT5cbiAgICA8ZGl2IGNsYXNzPVwibWItMlwiICpuZ0lmPVwiaXNBZG1pbiB8fCBjb25maWcudWlTZXR0aW5ncy5kaXNwbGF5U3lzdGVtUHJvbXB0XCI+XG4gICAgICA8bGFiZWwgZm9yPVwiaW5pdGlhbFN5c3RlbVByb21wdFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdjaGF0U2V0dGluZ3Muc3lzdGVtUHJvbXB0JyB8IHRyYW5zbG9jbyB9fTwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImluaXRpYWxTeXN0ZW1Qcm9tcHRcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5kZWZhdWx0VmFsdWVzLnN5c3RlbVByb21wdFwiPjwvdGV4dGFyZWE+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cImlzQWRtaW4gfHwgY29uZmlnLnVpU2V0dGluZ3MuZGlzcGxheVVzZXJQcm9tcHRcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJpbml0aWFsVXNlclByb21wdFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdjaGF0U2V0dGluZ3MuaW5pdGlhbFVzZXJQcm9tcHQnIHwgdHJhbnNsb2NvIH19PC9sYWJlbD5cbiAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiaW5pdGlhbFVzZXJQcm9tcHRcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5kZWZhdWx0VmFsdWVzLnVzZXJQcm9tcHRcIj48L3RleHRhcmVhPlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJidXR0b25zLXBhbmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMVwiIChjbGljayk9XCJjYW5jZWwoKVwiPnt7ICdjaGF0U2V0dGluZ3MuY2FuY2VsJyB8IHRyYW5zbG9jbyB9fTwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAqbmdJZj1cImNvbmZpZ1wiIChjbGljayk9XCJzYXZlKClcIj57eyAnY2hhdFNldHRpbmdzLnNhdmUnIHwgdHJhbnNsb2NvIH19PC9idXR0b24+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==