valtech-components 4.0.1037 → 4.0.1038

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.
@@ -13,11 +13,32 @@ export class AiMessageRendererComponent {
13
13
  @if (part.kind === 'code') {
14
14
  <pre class="code"><code>{{ part.code }}</code></pre>
15
15
  } @else {
16
- <p class="text">{{ part.text }}</p>
16
+ @switch (part.tag) {
17
+ @case ('h3') {
18
+ <h3 class="heading" [innerHTML]="part.html"></h3>
19
+ }
20
+ @case ('ul') {
21
+ <ul class="list">
22
+ @for (item of part.items ?? []; track item) {
23
+ <li [innerHTML]="item"></li>
24
+ }
25
+ </ul>
26
+ }
27
+ @case ('ol') {
28
+ <ol class="list">
29
+ @for (item of part.items ?? []; track item) {
30
+ <li [innerHTML]="item"></li>
31
+ }
32
+ </ol>
33
+ }
34
+ @default {
35
+ <p class="text" [innerHTML]="part.html"></p>
36
+ }
37
+ }
17
38
  }
18
39
  }
19
40
  </div>
20
- `, isInline: true, styles: [":host{display:block}.ai-message{display:flex;flex-direction:column;gap:.65rem}.text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.code{max-width:100%;margin:0;padding:.75rem;overflow-x:auto;border-radius:8px;background:var(--val-ai-message-code-background, rgba(15, 23, 42, .06));color:var(--val-ai-message-code-color, currentColor);font-size:.82rem;line-height:1.45}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
41
+ `, isInline: true, styles: [":host{display:block}.ai-message{display:flex;flex-direction:column;gap:.65rem}.text,.heading,.list{margin:0;overflow-wrap:anywhere}.heading{font-size:1rem;line-height:1.3;font-weight:750}.text{white-space:pre-wrap}.list{display:flex;flex-direction:column;gap:.28rem;padding-inline-start:1.15rem}.code{max-width:100%;margin:0;padding:.75rem;overflow-x:auto;border-radius:8px;background:var(--val-ai-message-code-background, rgba(15, 23, 42, .06));color:var(--val-ai-message-code-color, currentColor);font-size:.82rem;line-height:1.45}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.text ::ng-deep code,.heading ::ng-deep code,.list ::ng-deep code{padding:.08rem .28rem;border-radius:5px;background:var(--val-ai-message-inline-code-background, rgba(15, 23, 42, .08));font-size:.9em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
21
42
  }
22
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiMessageRendererComponent, decorators: [{
23
44
  type: Component,
@@ -27,11 +48,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
27
48
  @if (part.kind === 'code') {
28
49
  <pre class="code"><code>{{ part.code }}</code></pre>
29
50
  } @else {
30
- <p class="text">{{ part.text }}</p>
51
+ @switch (part.tag) {
52
+ @case ('h3') {
53
+ <h3 class="heading" [innerHTML]="part.html"></h3>
54
+ }
55
+ @case ('ul') {
56
+ <ul class="list">
57
+ @for (item of part.items ?? []; track item) {
58
+ <li [innerHTML]="item"></li>
59
+ }
60
+ </ul>
61
+ }
62
+ @case ('ol') {
63
+ <ol class="list">
64
+ @for (item of part.items ?? []; track item) {
65
+ <li [innerHTML]="item"></li>
66
+ }
67
+ </ol>
68
+ }
69
+ @default {
70
+ <p class="text" [innerHTML]="part.html"></p>
71
+ }
72
+ }
31
73
  }
32
74
  }
33
75
  </div>
34
- `, styles: [":host{display:block}.ai-message{display:flex;flex-direction:column;gap:.65rem}.text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.code{max-width:100%;margin:0;padding:.75rem;overflow-x:auto;border-radius:8px;background:var(--val-ai-message-code-background, rgba(15, 23, 42, .06));color:var(--val-ai-message-code-color, currentColor);font-size:.82rem;line-height:1.45}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}\n"] }]
76
+ `, styles: [":host{display:block}.ai-message{display:flex;flex-direction:column;gap:.65rem}.text,.heading,.list{margin:0;overflow-wrap:anywhere}.heading{font-size:1rem;line-height:1.3;font-weight:750}.text{white-space:pre-wrap}.list{display:flex;flex-direction:column;gap:.28rem;padding-inline-start:1.15rem}.code{max-width:100%;margin:0;padding:.75rem;overflow-x:auto;border-radius:8px;background:var(--val-ai-message-code-background, rgba(15, 23, 42, .06));color:var(--val-ai-message-code-color, currentColor);font-size:.82rem;line-height:1.45}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.text ::ng-deep code,.heading ::ng-deep code,.list ::ng-deep code{padding:.08rem .28rem;border-radius:5px;background:var(--val-ai-message-inline-code-background, rgba(15, 23, 42, .08));font-size:.9em}\n"] }]
35
77
  }] });
36
78
  function parseAiMessage(text) {
37
79
  const parts = [];
@@ -42,7 +84,8 @@ function parseAiMessage(text) {
42
84
  while ((match = fence.exec(text)) !== null) {
43
85
  const before = text.slice(lastIndex, match.index).trim();
44
86
  if (before) {
45
- parts.push({ kind: 'text', id: `text-${index++}`, text: before });
87
+ parts.push(...parseMarkdownBlocks(before, index));
88
+ index = parts.length;
46
89
  }
47
90
  parts.push({
48
91
  kind: 'code',
@@ -54,8 +97,80 @@ function parseAiMessage(text) {
54
97
  }
55
98
  const rest = text.slice(lastIndex).trim();
56
99
  if (rest) {
57
- parts.push({ kind: 'text', id: `text-${index++}`, text: rest });
100
+ parts.push(...parseMarkdownBlocks(rest, index));
58
101
  }
59
- return parts.length > 0 ? parts : [{ kind: 'text', id: 'text-0', text }];
102
+ return parts.length > 0 ? parts : [{ kind: 'block', id: 'text-0', tag: 'p', html: renderInline(text) }];
60
103
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktbWVzc2FnZS1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2FpLW1lc3NhZ2UtcmVuZGVyZXIvYWktbWVzc2FnZS1yZW5kZXJlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFnRTNELE1BQU0sT0FBTywwQkFBMEI7SUExRHZDO1FBMkRXLFNBQUksR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFZixVQUFLLEdBQUcsUUFBUSxDQUFrQixHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN6RjsrR0FKWSwwQkFBMEI7bUdBQTFCLDBCQUEwQixvTkF0RDNCOzs7Ozs7Ozs7O0dBVVQsK2hCQVhTLFlBQVk7OzRGQXVEWCwwQkFBMEI7a0JBMUR0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7OztHQVVUOztBQWtESCxTQUFTLGNBQWMsQ0FBQyxJQUFZO0lBQ2xDLE1BQU0sS0FBSyxHQUFvQixFQUFFLENBQUM7SUFDbEMsTUFBTSxLQUFLLEdBQUcsK0JBQStCLENBQUM7SUFDOUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksS0FBNkIsQ0FBQztJQUVsQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLEVBQUUsTUFBTTtZQUNaLEVBQUUsRUFBRSxRQUFRLEtBQUssRUFBRSxFQUFFO1lBQ3JCLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUNoQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7U0FDaEMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxudHlwZSBBaU1lc3NhZ2VQYXJ0ID1cbiAgfCB7IGtpbmQ6ICd0ZXh0JzsgaWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6ICdjb2RlJzsgaWQ6IHN0cmluZzsgY29kZTogc3RyaW5nOyBsYW5ndWFnZTogc3RyaW5nIH07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1haS1tZXNzYWdlLXJlbmRlcmVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImFpLW1lc3NhZ2VcIj5cbiAgICAgIEBmb3IgKHBhcnQgb2YgcGFydHMoKTsgdHJhY2sgcGFydC5pZCkge1xuICAgICAgICBAaWYgKHBhcnQua2luZCA9PT0gJ2NvZGUnKSB7XG4gICAgICAgICAgPHByZSBjbGFzcz1cImNvZGVcIj48Y29kZT57eyBwYXJ0LmNvZGUgfX08L2NvZGU+PC9wcmU+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxwIGNsYXNzPVwidGV4dFwiPnt7IHBhcnQudGV4dCB9fTwvcD5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAuYWktbWVzc2FnZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgIH1cblxuICAgICAgLnRleHQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgICB9XG5cbiAgICAgIC5jb2RlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdmFsLWFpLW1lc3NhZ2UtY29kZS1iYWNrZ3JvdW5kLCByZ2JhKDE1LCAyMywgNDIsIDAuMDYpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXZhbC1haS1tZXNzYWdlLWNvZGUtY29sb3IsIGN1cnJlbnRDb2xvcik7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICB9XG5cbiAgICAgIGNvZGUge1xuICAgICAgICBmb250LWZhbWlseTpcbiAgICAgICAgICB1aS1tb25vc3BhY2UsXG4gICAgICAgICAgU0ZNb25vLVJlZ3VsYXIsXG4gICAgICAgICAgTWVubG8sXG4gICAgICAgICAgTW9uYWNvLFxuICAgICAgICAgIENvbnNvbGFzLFxuICAgICAgICAgICdMaWJlcmF0aW9uIE1vbm8nLFxuICAgICAgICAgIG1vbm9zcGFjZTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBaU1lc3NhZ2VSZW5kZXJlckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHRleHQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFydHMgPSBjb21wdXRlZDxBaU1lc3NhZ2VQYXJ0W10+KCgpID0+IHBhcnNlQWlNZXNzYWdlKHRoaXMudGV4dCgpKSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQWlNZXNzYWdlKHRleHQ6IHN0cmluZyk6IEFpTWVzc2FnZVBhcnRbXSB7XG4gIGNvbnN0IHBhcnRzOiBBaU1lc3NhZ2VQYXJ0W10gPSBbXTtcbiAgY29uc3QgZmVuY2UgPSAvYGBgKFteXFxuYF0qKVxcbj8oW1xcc1xcU10qPylgYGAvZztcbiAgbGV0IGxhc3RJbmRleCA9IDA7XG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcblxuICB3aGlsZSAoKG1hdGNoID0gZmVuY2UuZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICBjb25zdCBiZWZvcmUgPSB0ZXh0LnNsaWNlKGxhc3RJbmRleCwgbWF0Y2guaW5kZXgpLnRyaW0oKTtcbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICBwYXJ0cy5wdXNoKHsga2luZDogJ3RleHQnLCBpZDogYHRleHQtJHtpbmRleCsrfWAsIHRleHQ6IGJlZm9yZSB9KTtcbiAgICB9XG5cbiAgICBwYXJ0cy5wdXNoKHtcbiAgICAgIGtpbmQ6ICdjb2RlJyxcbiAgICAgIGlkOiBgY29kZS0ke2luZGV4Kyt9YCxcbiAgICAgIGxhbmd1YWdlOiBtYXRjaFsxXT8udHJpbSgpID8/ICcnLFxuICAgICAgY29kZTogbWF0Y2hbMl0/LnRyaW1FbmQoKSA/PyAnJyxcbiAgICB9KTtcbiAgICBsYXN0SW5kZXggPSBmZW5jZS5sYXN0SW5kZXg7XG4gIH1cblxuICBjb25zdCByZXN0ID0gdGV4dC5zbGljZShsYXN0SW5kZXgpLnRyaW0oKTtcbiAgaWYgKHJlc3QpIHtcbiAgICBwYXJ0cy5wdXNoKHsga2luZDogJ3RleHQnLCBpZDogYHRleHQtJHtpbmRleCsrfWAsIHRleHQ6IHJlc3QgfSk7XG4gIH1cblxuICByZXR1cm4gcGFydHMubGVuZ3RoID4gMCA/IHBhcnRzIDogW3sga2luZDogJ3RleHQnLCBpZDogJ3RleHQtMCcsIHRleHQgfV07XG59XG4iXX0=
104
+ function parseMarkdownBlocks(text, offset) {
105
+ const blocks = [];
106
+ const lines = text.split('\n');
107
+ let paragraph = [];
108
+ let listItems = [];
109
+ let orderedItems = [];
110
+ let index = offset;
111
+ const flushParagraph = () => {
112
+ if (paragraph.length === 0)
113
+ return;
114
+ blocks.push({ kind: 'block', id: `text-${index++}`, tag: 'p', html: renderInline(paragraph.join('\n')) });
115
+ paragraph = [];
116
+ };
117
+ const flushLists = () => {
118
+ if (listItems.length > 0) {
119
+ blocks.push({ kind: 'block', id: `list-${index++}`, tag: 'ul', items: listItems });
120
+ listItems = [];
121
+ }
122
+ if (orderedItems.length > 0) {
123
+ blocks.push({ kind: 'block', id: `list-${index++}`, tag: 'ol', items: orderedItems });
124
+ orderedItems = [];
125
+ }
126
+ };
127
+ for (const raw of lines) {
128
+ const line = raw.trim();
129
+ if (!line) {
130
+ flushParagraph();
131
+ flushLists();
132
+ continue;
133
+ }
134
+ const heading = line.match(/^#{1,4}\s+(.+)$/);
135
+ if (heading) {
136
+ flushParagraph();
137
+ flushLists();
138
+ blocks.push({ kind: 'block', id: `heading-${index++}`, tag: 'h3', html: renderInline(heading[1]) });
139
+ continue;
140
+ }
141
+ const bullet = line.match(/^[-*]\s+(.+)$/);
142
+ if (bullet) {
143
+ flushParagraph();
144
+ orderedItems = [];
145
+ listItems.push(renderInline(bullet[1]));
146
+ continue;
147
+ }
148
+ const ordered = line.match(/^\d+\.\s+(.+)$/);
149
+ if (ordered) {
150
+ flushParagraph();
151
+ listItems = [];
152
+ orderedItems.push(renderInline(ordered[1]));
153
+ continue;
154
+ }
155
+ flushLists();
156
+ paragraph.push(raw);
157
+ }
158
+ flushParagraph();
159
+ flushLists();
160
+ return blocks;
161
+ }
162
+ function renderInline(text) {
163
+ return escapeHtml(text)
164
+ .replace(/`([^`]+)`/g, '<code>$1</code>')
165
+ .replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>')
166
+ .replace(/\*([^*]+)\*/g, '<em>$1</em>');
167
+ }
168
+ function escapeHtml(text) {
169
+ return text
170
+ .replace(/&/g, '&amp;')
171
+ .replace(/</g, '&lt;')
172
+ .replace(/>/g, '&gt;')
173
+ .replace(/"/g, '&quot;')
174
+ .replace(/'/g, '&#39;');
175
+ }
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktbWVzc2FnZS1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2FpLW1lc3NhZ2UtcmVuZGVyZXIvYWktbWVzc2FnZS1yZW5kZXJlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFnSDNELE1BQU0sT0FBTywwQkFBMEI7SUExR3ZDO1FBMkdXLFNBQUksR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFZixVQUFLLEdBQUcsUUFBUSxDQUFrQixHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN6RjsrR0FKWSwwQkFBMEI7bUdBQTFCLDBCQUEwQixvTkF0RzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JULHE0QkFoQ1MsWUFBWTs7NEZBdUdYLDBCQUEwQjtrQkExR3RDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JUOztBQTZFSCxTQUFTLGNBQWMsQ0FBQyxJQUFZO0lBQ2xDLE1BQU0sS0FBSyxHQUFvQixFQUFFLENBQUM7SUFDbEMsTUFBTSxLQUFLLEdBQUcsK0JBQStCLENBQUM7SUFDOUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksS0FBNkIsQ0FBQztJQUVsQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFB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N0MsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDZixZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLFNBQVM7UUFDWCxDQUFDO1FBRUQsVUFBVSxFQUFFLENBQUM7UUFDYixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxjQUFjLEVBQUUsQ0FBQztJQUNqQixVQUFVLEVBQUUsQ0FBQztJQUNiLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFZO0lBQ2hDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQztTQUNwQixPQUFPLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDO1NBQ3hDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQztTQUNsRCxPQUFPLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFZO0lBQzlCLE9BQU8sSUFBSTtTQUNSLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO1NBQ3ZCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG50eXBlIEFpTWVzc2FnZVBhcnQgPVxuICB8IHsga2luZDogJ2Jsb2NrJzsgaWQ6IHN0cmluZzsgdGFnOiAncCcgfCAnaDMnIHwgJ3VsJyB8ICdvbCc7IGh0bWw/OiBzdHJpbmc7IGl0ZW1zPzogc3RyaW5nW10gfVxuICB8IHsga2luZDogJ2NvZGUnOyBpZDogc3RyaW5nOyBjb2RlOiBzdHJpbmc7IGxhbmd1YWdlOiBzdHJpbmcgfTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWFpLW1lc3NhZ2UtcmVuZGVyZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYWktbWVzc2FnZVwiPlxuICAgICAgQGZvciAocGFydCBvZiBwYXJ0cygpOyB0cmFjayBwYXJ0LmlkKSB7XG4gICAgICAgIEBpZiAocGFydC5raW5kID09PSAnY29kZScpIHtcbiAgICAgICAgICA8cHJlIGNsYXNzPVwiY29kZVwiPjxjb2RlPnt7IHBhcnQuY29kZSB9fTwvY29kZT48L3ByZT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQHN3aXRjaCAocGFydC50YWcpIHtcbiAgICAgICAgICAgIEBjYXNlICgnaDMnKSB7XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cImhlYWRpbmdcIiBbaW5uZXJIVE1MXT1cInBhcnQuaHRtbFwiPjwvaDM+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ3VsJykge1xuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBwYXJ0Lml0ZW1zID8/IFtdOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICA8bGkgW2lubmVySFRNTF09XCJpdGVtXCI+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ29sJykge1xuICAgICAgICAgICAgICA8b2wgY2xhc3M9XCJsaXN0XCI+XG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBwYXJ0Lml0ZW1zID8/IFtdOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICA8bGkgW2lubmVySFRNTF09XCJpdGVtXCI+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dFwiIFtpbm5lckhUTUxdPVwicGFydC5odG1sXCI+PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAuYWktbWVzc2FnZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgIH1cblxuICAgICAgLnRleHQsXG4gICAgICAuaGVhZGluZyxcbiAgICAgIC5saXN0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgIH1cblxuICAgICAgLmhlYWRpbmcge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3NTA7XG4gICAgICB9XG5cbiAgICAgIC50ZXh0IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgfVxuXG4gICAgICAubGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMC4yOHJlbTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDEuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jb2RlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdmFsLWFpLW1lc3NhZ2UtY29kZS1iYWNrZ3JvdW5kLCByZ2JhKDE1LCAyMywgNDIsIDAuMDYpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXZhbC1haS1tZXNzYWdlLWNvZGUtY29sb3IsIGN1cnJlbnRDb2xvcik7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICB9XG5cbiAgICAgIGNvZGUge1xuICAgICAgICBmb250LWZhbWlseTpcbiAgICAgICAgICB1aS1tb25vc3BhY2UsXG4gICAgICAgICAgU0ZNb25vLVJlZ3VsYXIsXG4gICAgICAgICAgTWVubG8sXG4gICAgICAgICAgTW9uYWNvLFxuICAgICAgICAgIENvbnNvbGFzLFxuICAgICAgICAgICdMaWJlcmF0aW9uIE1vbm8nLFxuICAgICAgICAgIG1vbm9zcGFjZTtcbiAgICAgIH1cblxuICAgICAgLnRleHQgOjpuZy1kZWVwIGNvZGUsXG4gICAgICAuaGVhZGluZyA6Om5nLWRlZXAgY29kZSxcbiAgICAgIC5saXN0IDo6bmctZGVlcCBjb2RlIHtcbiAgICAgICAgcGFkZGluZzogMC4wOHJlbSAwLjI4cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXZhbC1haS1tZXNzYWdlLWlubGluZS1jb2RlLWJhY2tncm91bmQsIHJnYmEoMTUsIDIzLCA0MiwgMC4wOCkpO1xuICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFpTWVzc2FnZVJlbmRlcmVyQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgdGV4dCA9IGlucHV0PHN0cmluZz4oJycpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYXJ0cyA9IGNvbXB1dGVkPEFpTWVzc2FnZVBhcnRbXT4oKCkgPT4gcGFyc2VBaU1lc3NhZ2UodGhpcy50ZXh0KCkpKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VBaU1lc3NhZ2UodGV4dDogc3RyaW5nKTogQWlNZXNzYWdlUGFydFtdIHtcbiAgY29uc3QgcGFydHM6IEFpTWVzc2FnZVBhcnRbXSA9IFtdO1xuICBjb25zdCBmZW5jZSA9IC9gYGAoW15cXG5gXSopXFxuPyhbXFxzXFxTXSo/KWBgYC9nO1xuICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgbGV0IGluZGV4ID0gMDtcbiAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuXG4gIHdoaWxlICgobWF0Y2ggPSBmZW5jZS5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGJlZm9yZSA9IHRleHQuc2xpY2UobGFzdEluZGV4LCBtYXRjaC5pbmRleCkudHJpbSgpO1xuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgIHBhcnRzLnB1c2goLi4ucGFyc2VNYXJrZG93bkJsb2NrcyhiZWZvcmUsIGluZGV4KSk7XG4gICAgICBpbmRleCA9IHBhcnRzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwYXJ0cy5wdXNoKHtcbiAgICAgIGtpbmQ6ICdjb2RlJyxcbiAgICAgIGlkOiBgY29kZS0ke2luZGV4Kyt9YCxcbiAgICAgIGxhbmd1YWdlOiBtYXRjaFsxXT8udHJpbSgpID8/ICcnLFxuICAgICAgY29kZTogbWF0Y2hbMl0/LnRyaW1FbmQoKSA/PyAnJyxcbiAgICB9KTtcbiAgICBsYXN0SW5kZXggPSBmZW5jZS5sYXN0SW5kZXg7XG4gIH1cblxuICBjb25zdCByZXN0ID0gdGV4dC5zbGljZShsYXN0SW5kZXgpLnRyaW0oKTtcbiAgaWYgKHJlc3QpIHtcbiAgICBwYXJ0cy5wdXNoKC4uLnBhcnNlTWFya2Rvd25CbG9ja3MocmVzdCwgaW5kZXgpKTtcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHMgOiBbeyBraW5kOiAnYmxvY2snLCBpZDogJ3RleHQtMCcsIHRhZzogJ3AnLCBodG1sOiByZW5kZXJJbmxpbmUodGV4dCkgfV07XG59XG5cbmZ1bmN0aW9uIHBhcnNlTWFya2Rvd25CbG9ja3ModGV4dDogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcik6IEFpTWVzc2FnZVBhcnRbXSB7XG4gIGNvbnN0IGJsb2NrczogQWlNZXNzYWdlUGFydFtdID0gW107XG4gIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gIGxldCBwYXJhZ3JhcGg6IHN0cmluZ1tdID0gW107XG4gIGxldCBsaXN0SXRlbXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBvcmRlcmVkSXRlbXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBpbmRleCA9IG9mZnNldDtcblxuICBjb25zdCBmbHVzaFBhcmFncmFwaCA9ICgpID0+IHtcbiAgICBpZiAocGFyYWdyYXBoLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGJsb2Nrcy5wdXNoKHsga2luZDogJ2Jsb2NrJywgaWQ6IGB0ZXh0LSR7aW5kZXgrK31gLCB0YWc6ICdwJywgaHRtbDogcmVuZGVySW5saW5lKHBhcmFncmFwaC5qb2luKCdcXG4nKSkgfSk7XG4gICAgcGFyYWdyYXBoID0gW107XG4gIH07XG4gIGNvbnN0IGZsdXNoTGlzdHMgPSAoKSA9PiB7XG4gICAgaWYgKGxpc3RJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICBibG9ja3MucHVzaCh7IGtpbmQ6ICdibG9jaycsIGlkOiBgbGlzdC0ke2luZGV4Kyt9YCwgdGFnOiAndWwnLCBpdGVtczogbGlzdEl0ZW1zIH0pO1xuICAgICAgbGlzdEl0ZW1zID0gW107XG4gICAgfVxuICAgIGlmIChvcmRlcmVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgYmxvY2tzLnB1c2goeyBraW5kOiAnYmxvY2snLCBpZDogYGxpc3QtJHtpbmRleCsrfWAsIHRhZzogJ29sJywgaXRlbXM6IG9yZGVyZWRJdGVtcyB9KTtcbiAgICAgIG9yZGVyZWRJdGVtcyA9IFtdO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKGNvbnN0IHJhdyBvZiBsaW5lcykge1xuICAgIGNvbnN0IGxpbmUgPSByYXcudHJpbSgpO1xuICAgIGlmICghbGluZSkge1xuICAgICAgZmx1c2hQYXJhZ3JhcGgoKTtcbiAgICAgIGZsdXNoTGlzdHMoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGhlYWRpbmcgPSBsaW5lLm1hdGNoKC9eI3sxLDR9XFxzKyguKykkLyk7XG4gICAgaWYgKGhlYWRpbmcpIHtcbiAgICAgIGZsdXNoUGFyYWdyYXBoKCk7XG4gICAgICBmbHVzaExpc3RzKCk7XG4gICAgICBibG9ja3MucHVzaCh7IGtpbmQ6ICdibG9jaycsIGlkOiBgaGVhZGluZy0ke2luZGV4Kyt9YCwgdGFnOiAnaDMnLCBodG1sOiByZW5kZXJJbmxpbmUoaGVhZGluZ1sxXSkgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBidWxsZXQgPSBsaW5lLm1hdGNoKC9eWy0qXVxccysoLispJC8pO1xuICAgIGlmIChidWxsZXQpIHtcbiAgICAgIGZsdXNoUGFyYWdyYXBoKCk7XG4gICAgICBvcmRlcmVkSXRlbXMgPSBbXTtcbiAgICAgIGxpc3RJdGVtcy5wdXNoKHJlbmRlcklubGluZShidWxsZXRbMV0pKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG9yZGVyZWQgPSBsaW5lLm1hdGNoKC9eXFxkK1xcLlxccysoLispJC8pO1xuICAgIGlmIChvcmRlcmVkKSB7XG4gICAgICBmbHVzaFBhcmFncmFwaCgpO1xuICAgICAgbGlzdEl0ZW1zID0gW107XG4gICAgICBvcmRlcmVkSXRlbXMucHVzaChyZW5kZXJJbmxpbmUob3JkZXJlZFsxXSkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZmx1c2hMaXN0cygpO1xuICAgIHBhcmFncmFwaC5wdXNoKHJhdyk7XG4gIH1cblxuICBmbHVzaFBhcmFncmFwaCgpO1xuICBmbHVzaExpc3RzKCk7XG4gIHJldHVybiBibG9ja3M7XG59XG5cbmZ1bmN0aW9uIHJlbmRlcklubGluZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZXNjYXBlSHRtbCh0ZXh0KVxuICAgIC5yZXBsYWNlKC9gKFteYF0rKWAvZywgJzxjb2RlPiQxPC9jb2RlPicpXG4gICAgLnJlcGxhY2UoL1xcKlxcKihbXipdKylcXCpcXCovZywgJzxzdHJvbmc+JDE8L3N0cm9uZz4nKVxuICAgIC5yZXBsYWNlKC9cXCooW14qXSspXFwqL2csICc8ZW0+JDE8L2VtPicpO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVIdG1sKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JylcbiAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKVxuICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcbiAgICAucmVwbGFjZSgvJy9nLCAnJiMzOTsnKTtcbn1cbiJdfQ==
@@ -77,6 +77,21 @@ export class MessageBubbleComponent {
77
77
  this.showCopyAction() ||
78
78
  (this.showEditAction() && this.msg().isMine) ||
79
79
  (this.showDeleteAction() && (this.msg().isMine || this.canModerate())));
80
+ this.copyOnlyActions = computed(() => this.showCopyAction() && this.hasActionsCount() === 1);
81
+ this.hasActionsCount = computed(() => {
82
+ let count = 0;
83
+ if (this.showReactAction())
84
+ count++;
85
+ if (this.showReplyAction())
86
+ count++;
87
+ if (this.showCopyAction())
88
+ count++;
89
+ if (this.showEditAction() && this.msg().isMine)
90
+ count++;
91
+ if (this.showDeleteAction() && (this.msg().isMine || this.canModerate()))
92
+ count++;
93
+ return count;
94
+ });
80
95
  this.time = computed(() => formatClockTime(this.msg().createdAt, this.locale()));
81
96
  this.initials = computed(() => {
82
97
  const name = this.msg().senderName?.trim() ?? '';
@@ -259,7 +274,7 @@ export class MessageBubbleComponent {
259
274
  }
260
275
 
261
276
  @if (!msg().isDeleted && hasActions()) {
262
- <div class="actions" [class.open]="actionsOpen()">
277
+ <div class="actions" [class.open]="actionsOpen()" [class.copy-only]="copyOnlyActions()">
263
278
  @if (showReactAction()) {
264
279
  <button class="act" [attr.aria-label]="t('react')" (click)="emit('react', '👍')">
265
280
  <ion-icon name="happy-outline" aria-hidden="true" />
@@ -289,7 +304,7 @@ export class MessageBubbleComponent {
289
304
  }
290
305
  </div>
291
306
  </div>
292
- `, isInline: true, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(86%,680px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:9px 12px;border-radius:18px;background:var(--val-message-background, transparent);border:1px solid var(--val-message-border, transparent);color:var(--ion-text-color, #000);font-size:.95rem;line-height:1.45;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:18px}.mine .bubble{background:var(--val-message-mine-background, var(--ion-color-dark, #111));border-color:var(--val-message-mine-border, var(--val-message-mine-background, var(--ion-color-dark, #111)));color:var(--val-message-mine-color, #fff)}.mine.tail .bubble{border-bottom-right-radius:18px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:var(--val-message-meta-opacity, 0)}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: AiMessageRendererComponent, selector: "val-ai-message-renderer", inputs: ["text"] }] }); }
307
+ `, isInline: true, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(86%,680px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:9px 12px;border-radius:18px;background:var(--val-message-background, transparent);border:1px solid var(--val-message-border, transparent);color:var(--ion-text-color, #000);font-size:.95rem;line-height:1.45;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:18px}.mine .bubble{background:var(--val-message-mine-background, var(--ion-color-dark, #111));border-color:var(--val-message-mine-border, var(--val-message-mine-background, var(--ion-color-dark, #111)));color:var(--val-message-mine-color, #fff)}.mine.tail .bubble{border-bottom-right-radius:18px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:var(--val-message-meta-opacity, 0)}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.actions.copy-only{inset:auto auto -14px 0}.row.mine .actions.copy-only{left:0;right:auto}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: AiMessageRendererComponent, selector: "val-ai-message-renderer", inputs: ["text"] }] }); }
293
308
  }
294
309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessageBubbleComponent, decorators: [{
295
310
  type: Component,
@@ -395,7 +410,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
395
410
  }
396
411
 
397
412
  @if (!msg().isDeleted && hasActions()) {
398
- <div class="actions" [class.open]="actionsOpen()">
413
+ <div class="actions" [class.open]="actionsOpen()" [class.copy-only]="copyOnlyActions()">
399
414
  @if (showReactAction()) {
400
415
  <button class="act" [attr.aria-label]="t('react')" (click)="emit('react', '👍')">
401
416
  <ion-icon name="happy-outline" aria-hidden="true" />
@@ -425,6 +440,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
425
440
  }
426
441
  </div>
427
442
  </div>
428
- `, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(86%,680px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:9px 12px;border-radius:18px;background:var(--val-message-background, transparent);border:1px solid var(--val-message-border, transparent);color:var(--ion-text-color, #000);font-size:.95rem;line-height:1.45;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:18px}.mine .bubble{background:var(--val-message-mine-background, var(--ion-color-dark, #111));border-color:var(--val-message-mine-border, var(--val-message-mine-background, var(--ion-color-dark, #111)));color:var(--val-message-mine-color, #fff)}.mine.tail .bubble{border-bottom-right-radius:18px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:var(--val-message-meta-opacity, 0)}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"] }]
443
+ `, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(86%,680px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:9px 12px;border-radius:18px;background:var(--val-message-background, transparent);border:1px solid var(--val-message-border, transparent);color:var(--ion-text-color, #000);font-size:.95rem;line-height:1.45;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:18px}.mine .bubble{background:var(--val-message-mine-background, var(--ion-color-dark, #111));border-color:var(--val-message-mine-border, var(--val-message-mine-background, var(--ion-color-dark, #111)));color:var(--val-message-mine-color, #fff)}.mine.tail .bubble{border-bottom-right-radius:18px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:var(--val-message-meta-opacity, 0)}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.actions.copy-only{inset:auto auto -14px 0}.row.mine .actions.copy-only{left:0;right:auto}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"] }]
429
444
  }], ctorParameters: () => [] });
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idWJibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS9tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsV0FBVyxFQUNYLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDNUcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7O0FBR2xHLFFBQVEsQ0FBQztJQUNQLFdBQVc7SUFDWCxTQUFTO0lBQ1QsYUFBYTtJQUNiLFdBQVc7SUFDWCxhQUFhO0lBQ2IsZUFBZTtJQUNmLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFlBQVk7Q0FDYixDQUFDLENB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9JVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhbGVydENpcmNsZSxcbiAgY2hlY2ttYXJrLFxuICBjaGVja21hcmtEb25lLFxuICBjb3B5T3V0bGluZSxcbiAgY3JlYXRlT3V0bGluZSxcbiAgZG9jdW1lbnRPdXRsaW5lLFxuICBoYXBweU91dGxpbmUsXG4gIGFycm93VW5kb091dGxpbmUsXG4gIHRpbWVPdXRsaW5lLFxuICB0cmFzaE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgZm9ybWF0Q2xvY2tUaW1lIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2RhdGV0aW1lJztcbmltcG9ydCB7IE1lZGlhVmlld2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvbWVkaWEtdmlld2VyLW1vZGFsL21lZGlhLXZpZXdlci1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWlNZXNzYWdlUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9haS1tZXNzYWdlLXJlbmRlcmVyL2FpLW1lc3NhZ2UtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNvcHlPdXRsaW5lLFxuICBjcmVhdGVPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIGhhcHB5T3V0bGluZSxcbiAgYXJyb3dVbmRvT3V0bGluZSxcbiAgdGltZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0pO1xuXG5jb25zdCBNRVNTQUdFX0JVQkJMRV9JMThOID0ge1xuICBlczoge1xuICAgIHJlcGx5OiAnUmVzcG9uZGVyJyxcbiAgICBlZGl0OiAnRWRpdGFyJyxcbiAgICBkZWxldGU6ICdFbGltaW5hcicsXG4gICAgY29weTogJ0NvcGlhcicsXG4gICAgcmVhY3Q6ICdSZWFjY2lvbmFyJyxcbiAgICBkZWxldGVkOiAnTWVuc2FqZSBlbGltaW5hZG8nLFxuICAgIGVkaXRlZDogJ2VkaXRhZG8nLFxuICB9LFxuICBlbjoge1xuICAgIHJlcGx5OiAnUmVwbHknLFxuICAgIGVkaXQ6ICdFZGl0JyxcbiAgICBkZWxldGU6ICdEZWxldGUnLFxuICAgIGNvcHk6ICdDb3B5JyxcbiAgICByZWFjdDogJ1JlYWN0JyxcbiAgICBkZWxldGVkOiAnTWVzc2FnZSBkZWxldGVkJyxcbiAgICBlZGl0ZWQ6ICdlZGl0ZWQnLFxuICB9LFxufTtcblxuLyoqIEFjY2nDs24gZGlzcGFyYWRhIGRlc2RlIHVuYSBidXJidWphLiBVbiBzb2xvIG91dHB1dCB0aXBhZG8gZW4gdmV6IGRlIDQuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VCdWJibGVBY3Rpb24ge1xuICB0eXBlOiAncmVwbHknIHwgJ2VkaXQnIHwgJ2RlbGV0ZScgfCAncmVhY3QnIHwgJ2NvcHknO1xuICBtc2dJZDogc3RyaW5nO1xuICAvKiogVG9rZW4gZGVsIGVtb2ppLCBzb2xvIHBhcmEgdHlwZSAncmVhY3QnLiAqL1xuICB0b2tlbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiB2YWwtbWVzc2FnZS1idWJibGUg4oCUIGJ1cmJ1amEgZGUgbWVuc2FqZSBwcmVzZW50YWNpb25hbCAoc2lnbmFsIGlucHV0cykuXG4gKlxuICogU2luIGzDs2dpY2EgZGUgbmVnb2NpbzogZWwgY29udGVuZWRvciAoYHZhbC1jaGF0LXdpbmRvd2ApIGRlY2lkZSBhZ3J1cGFjacOzbiB5XG4gKiBwYXNhIGZsYWdzIChzaG93QXZhdGFyL3Nob3dOYW1lL3RhaWwpLiBMYXMgYWNjaW9uZXMgKHJlc3BvbmRlci9lZGl0YXIvYm9ycmFyL1xuICogcmVhY2Npb25hcikgTk8gZXN0w6FuIHNpZW1wcmUgdmlzaWJsZXM6IHNlIHJldmVsYW4gZW4gaG92ZXIgKGRlc2t0b3ApIG8gYWwgdG9jYXJcbiAqIGxhIGJ1cmJ1amEgKG3Ds3ZpbCksIHkgc2UgZW1pdGVuIHBvciB1biDDum5pY28gYChhY3Rpb24pYCB0aXBhZG8uXG4gKlxuICogUmVhZCByZWNlaXB0cyBlc3RpbG8gV2hhdHNBcHA6IHNlbmRpbmcg4oaSIHJlbG9qLCBzZW50IOKGkiDinJMsIGRlbGl2ZXJlZC9yZWFkIOKGkiDinJPinJNcbiAqIChyZWFkIGVuIGNvbG9yKSwgZmFpbGVkIOKGkiBhbGVydGEuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1tZXNzYWdlLWJ1YmJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb24sIEFpTWVzc2FnZVJlbmRlcmVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2NsYXNzLm1pbmVdPVwibXNnKCkuaXNNaW5lXCIgW2NsYXNzLnRhaWxdPVwidGFpbCgpXCIgW2NsYXNzLndpdGgtYXZhdGFyXT1cInNob3dBdmF0YXIoKVwiPlxuICAgICAgQGlmIChzaG93QXZhdGFyKCkgJiYgIW1zZygpLmlzTWluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgW2NsYXNzLmhpZGRlbl09XCIhdGFpbCgpXCI+XG4gICAgICAgICAgQGlmIChtc2coKS5zZW5kZXJBdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtc2coKS5zZW5kZXJBdmF0YXJcIiBbYWx0XT1cIm1zZygpLnNlbmRlck5hbWVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnViYmxlLXdyYXBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYnViYmxlXCJcbiAgICAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJtc2coKS5pc0RlbGV0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHNob3dOYW1lKCkgJiYgIW1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBtc2coKS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobXNnKCkucmVwbHlUbyAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktcHJldmlld1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyBtc2coKS5yZXBseVRvIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyBtc2coKS5yZXBseVRvIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keSBkZWxldGVkLXRleHRcIj57eyB0KCdkZWxldGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGltYWdlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBpbWFnZUF0dGFjaG1lbnRzKCk7IHRyYWNrIGF0dC51cmwpIHtcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdHQtaW1hZ2VcIiBbc3JjXT1cImF0dC51cmxcIiBbYWx0XT1cImF0dC5uYW1lXCIgKGNsaWNrKT1cInZpZXdBdHRhY2htZW50KGF0dClcIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGF1ZGlvQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdWRpb3NcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChhdHQgb2YgYXVkaW9BdHRhY2htZW50cygpOyB0cmFjayBhdHQudXJsKSB7XG4gICAgICAgICAgICAgICAgICA8YXVkaW9cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdHQtYXVkaW9cIlxuICAgICAgICAgICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgICAgICAgICAgICBwcmVsb2FkPVwibWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF0dC51cmxcIlxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25BdWRpb0Vycm9yKGF0dCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9hdWRpbz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChmaWxlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBmaWxlQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmaWxlLWNoaXBcIiBbaHJlZl09XCJhdHQudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYXR0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobXNnKCkuYm9keSkge1xuICAgICAgICAgICAgICBAaWYgKHJlbmRlckFpTWVzc2FnZSgpKSB7XG4gICAgICAgICAgICAgICAgPHZhbC1haS1tZXNzYWdlLXJlbmRlcmVyIFt0ZXh0XT1cIm1zZygpLmJvZHlcIiAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHlcIj57eyBtc2coKS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhXCI+XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzRWRpdGVkICYmICFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlZGl0ZWRcIj57eyB0KCdlZGl0ZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZVwiPnt7IHRpbWUoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAobXNnKCkuaXNNaW5lICYmICFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGF0dXNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5yZWFkXT1cIm1zZygpLnN0YXR1cyA9PT0gJ3JlYWQnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmFpbGVkXT1cIm1zZygpLnN0YXR1cyA9PT0gJ2ZhaWxlZCdcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInN0YXR1c0ljb24oKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoc2hvd1JlYWN0aW9ucygpICYmIG1zZygpLnJlYWN0aW9ucyAmJiBtc2coKS5yZWFjdGlvbnMhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhY3Rpb25zXCI+XG4gICAgICAgICAgICBAZm9yIChyIG9mIG1zZygpLnJlYWN0aW9ucyE7IHRyYWNrIHIudG9rZW4pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlYWN0aW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJyLmFjdGl2ZVwiIChjbGljayk9XCJlbWl0KCdyZWFjdCcsIHIudG9rZW4pXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgci50b2tlbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCI+e3sgci5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCFtc2coKS5pc0RlbGV0ZWQgJiYgaGFzQWN0aW9ucygpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiBbY2xhc3Mub3Blbl09XCJhY3Rpb25zT3BlbigpXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dSZWFjdEFjdGlvbigpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlYWN0JylcIiAoY2xpY2spPVwiZW1pdCgncmVhY3QnLCAn8J+RjScpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJoYXBweS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNob3dSZXBseUFjdGlvbigpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlcGx5JylcIiAoY2xpY2spPVwiZW1pdCgncmVwbHknKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctdW5kby1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNob3dDb3B5QWN0aW9uKCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY29weScpXCIgKGNsaWNrKT1cImNvcHlNZXNzYWdlKClcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvcHktb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzaG93RWRpdEFjdGlvbigpICYmIG1zZygpLmlzTWluZSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdlZGl0JylcIiAoY2xpY2spPVwiZW1pdCgnZWRpdCcpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjcmVhdGUtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzaG93RGVsZXRlQWN0aW9uKCkgJiYgKG1zZygpLmlzTWluZSB8fCBjYW5Nb2RlcmF0ZSgpKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0IGRhbmdlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnZGVsZXRlJylcIiAoY2xpY2spPVwiZW1pdCgnZGVsZXRlJylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyYXNoLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAucm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuICAgICAgLnJvdy5taW5lIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgfVxuICAgICAgLnJvdy50YWlsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgICAgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXIuaGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oODYlLCA2ODBweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmJ1YmJsZS13cmFwIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgICAgLmJ1YmJsZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogOXB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXZhbC1tZXNzYWdlLWJhY2tncm91bmQsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdmFsLW1lc3NhZ2UtYm9yZGVyLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKS50YWlsIC5idWJibGUge1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAxOHB4O1xuICAgICAgfVxuICAgICAgLm1pbmUgLmJ1YmJsZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXZhbC1tZXNzYWdlLW1pbmUtYmFja2dyb3VuZCwgdmFyKC0taW9uLWNvbG9yLWRhcmssICMxMTEpKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS12YWwtbWVzc2FnZS1taW5lLWJvcmRlciwgdmFyKC0tdmFsLW1lc3NhZ2UtbWluZS1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tY29sb3ItZGFyaywgIzExMSkpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXZhbC1tZXNzYWdlLW1pbmUtY29sb3IsICNmZmYpO1xuICAgICAgfVxuICAgICAgLm1pbmUudGFpbCAuYnViYmxlIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDE4cHg7XG4gICAgICB9XG4gICAgICAuYnViYmxlLmRlbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIC5uYW1lIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgICAgLnJlcGx5LXByZXZpZXcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDFweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgICB9XG4gICAgICAuYm9keSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgIH1cbiAgICAgIC5kZWxldGVkLXRleHQge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgIH1cbiAgICAgIC5hdHRhY2htZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXR0LWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuICAgICAgLmF1ZGlvcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXR0LWF1ZGlvIHtcbiAgICAgICAgd2lkdGg6IDI0MHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgIH1cbiAgICAgIC5maWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuZmlsZS1jaGlwIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIH1cbiAgICAgIC5tZXRhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIG1hcmdpbjogMnB4IDAgLTJweCA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBvcGFjaXR5OiB2YXIoLS12YWwtbWVzc2FnZS1tZXRhLW9wYWNpdHksIDApO1xuICAgICAgfVxuICAgICAgLmVkaXRlZCB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cbiAgICAgIC5zdGF0dXMge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgfVxuICAgICAgLnN0YXR1cy5yZWFkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnksICM0ZmMzZjcpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgICAgLnN0YXR1cy5mYWlsZWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogM3B4O1xuICAgICAgfVxuICAgICAgLnJlYWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogM3B4O1xuICAgICAgICBwYWRkaW5nOiAxcHggN3B4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24uYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24gLmNvdW50IHtcbiAgICAgICAgb3BhY2l0eTogMC43NTtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgcGFkZGluZzogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTJzIGVhc2U7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmFjdGlvbnMge1xuICAgICAgICByaWdodDogMDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKSAuYWN0aW9ucyB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICB9XG4gICAgICAuYnViYmxlLXdyYXA6aG92ZXIgLmFjdGlvbnMsXG4gICAgICAuYWN0aW9ucy5vcGVuIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICB9XG4gICAgICAuYWN0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgfVxuICAgICAgLmFjdDpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTEwMCwgcmdiYSgxMjcsIDEyNywgMTI3LCAwLjEyKSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICB9XG4gICAgICAuYWN0LmRhbmdlcjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlQnViYmxlQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBtb2RhbCA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IG1zZyA9IGlucHV0LnJlcXVpcmVkPE1lc3NhZ2VCdWJibGVNZXRhZGF0YT4oKTtcbiAgcmVhZG9ubHkgc2hvd0F2YXRhciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd05hbWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHRhaWwgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgbG9jYWxlID0gaW5wdXQ8c3RyaW5nPignZXMtQ0wnKTtcbiAgLyoqIE93bmVyL21vZGVyYXRvciBkZWwgY2hhdDogcHVlZGUgYm9ycmFyIG1lbnNhamVzIGFqZW5vcyAobW9kZXJhY2lvbikuICovXG4gIHJlYWRvbmx5IGNhbk1vZGVyYXRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSByZW5kZXJBaU1lc3NhZ2UgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNob3dSZWFjdGlvbnMgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd1JlcGx5QWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHNob3dSZWFjdEFjdGlvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBzaG93RWRpdEFjdGlvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBzaG93RGVsZXRlQWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHNob3dDb3B5QWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IGFjdGlvbiA9IG91dHB1dDxNZXNzYWdlQnViYmxlQWN0aW9uPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBoYXNBY3Rpb25zID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuc2hvd1JlYWN0QWN0aW9uKCkgfHxcbiAgICAgIHRoaXMuc2hvd1JlcGx5QWN0aW9uKCkgfHxcbiAgICAgIHRoaXMuc2hvd0NvcHlBY3Rpb24oKSB8fFxuICAgICAgKHRoaXMuc2hvd0VkaXRBY3Rpb24oKSAmJiB0aGlzLm1zZygpLmlzTWluZSkgfHxcbiAgICAgICh0aGlzLnNob3dEZWxldGVBY3Rpb24oKSAmJiAodGhpcy5tc2coKS5pc01pbmUgfHwgdGhpcy5jYW5Nb2RlcmF0ZSgpKSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnTWVzc2FnZUJ1YmJsZScsIE1FU1NBR0VfQlVCQkxFX0kxOE4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWUgPSBjb21wdXRlZCgoKSA9PiBmb3JtYXRDbG9ja1RpbWUodGhpcy5tc2coKS5jcmVhdGVkQXQsIHRoaXMubG9jYWxlKCkpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5pdGlhbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMubXNnKCkuc2VuZGVyTmFtZT8udHJpbSgpID8/ICcnO1xuICAgIGlmICghbmFtZSkgcmV0dXJuICc/JztcbiAgICBjb25zdCBwYXJ0cyA9IG5hbWUuc3BsaXQoL1xccysvKTtcbiAgICByZXR1cm4gKHBhcnRzWzBdWzBdICsgKHBhcnRzWzFdPy5bMF0gPz8gJycpKS50b1VwcGVyQ2FzZSgpO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW1hZ2VBdHRhY2htZW50cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMubXNnKCkuYXR0YWNobWVudHMgPz8gW10pLmZpbHRlcihhID0+IGEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpKVxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhdWRpb0F0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnYXVkaW8vJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbGVBdHRhY2htZW50cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMubXNnKCkuYXR0YWNobWVudHMgPz8gW10pLmZpbHRlcihhID0+ICFhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdpbWFnZS8nKSAmJiAhYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnYXVkaW8vJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXR1c0ljb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLm1zZygpLnN0YXR1cykge1xuICAgICAgY2FzZSAnc2VuZGluZyc6XG4gICAgICAgIHJldHVybiAndGltZS1vdXRsaW5lJztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiAnYWxlcnQtY2lyY2xlJztcbiAgICAgIGNhc2UgJ2RlbGl2ZXJlZCc6XG4gICAgICBjYXNlICdyZWFkJzpcbiAgICAgICAgcmV0dXJuICdjaGVja21hcmstZG9uZSc7XG4gICAgICBjYXNlICdzZW50JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY2hlY2ttYXJrJztcbiAgICB9XG4gIH0pO1xuXG4gIHByb3RlY3RlZCB0b2dnbGVBY3Rpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1zZygpLmlzRGVsZXRlZCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5oYXNBY3Rpb25zKCkpIHJldHVybjtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnVwZGF0ZSh2ID0+ICF2KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0KHR5cGU6IE1lc3NhZ2VCdWJibGVBY3Rpb25bJ3R5cGUnXSwgdG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IHR5cGUsIG1zZ0lkOiB0aGlzLm1zZygpLm1zZ0lkLCB0b2tlbiB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjb3B5TWVzc2FnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnNldChmYWxzZSk7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMubXNnKCkuYm9keSA/PyAnJztcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgICB0ZXh0YXJlYS52YWx1ZSA9IHRleHQ7XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0YXJlYSk7XG4gICAgICB0ZXh0YXJlYS5zZWxlY3QoKTtcbiAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgICB0ZXh0YXJlYS5yZW1vdmUoKTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IHR5cGU6ICdjb3B5JywgbXNnSWQ6IHRoaXMubXNnKCkubXNnSWQgfSk7XG4gIH1cblxuICAvKiogQWJyZSBsYSBpbWFnZW4gYWRqdW50YSBlbiBlbCB2aXNvciBkZSBtZWRpb3MgYSBwYW50YWxsYSBjb21wbGV0YS4gKi9cbiAgcHJvdGVjdGVkIHZpZXdBdHRhY2htZW50KGF0dDogeyB1cmw6IHN0cmluZzsgbmFtZT86IHN0cmluZzsgbWltZVR5cGU/OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbC5vcGVuKHtcbiAgICAgIGNvbXBvbmVudDogTWVkaWFWaWV3ZXJNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7IHVybDogYXR0LnVybCwgbmFtZTogYXR0Lm5hbWUsIG1pbWVUeXBlOiBhdHQubWltZVR5cGUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBEaWFnbsOzc3RpY286IGVsIG5hdmVnYWRvciBubyBwdWRvIHJlcHJvZHVjaXIgZWwgYXVkaW8gcmVjaWJpZG8uICovXG4gIHByb3RlY3RlZCBvbkF1ZGlvRXJyb3IoYXR0OiB7IHVybDogc3RyaW5nOyBtaW1lVHlwZT86IHN0cmluZyB9LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQXVkaW9FbGVtZW50O1xuICAgIGNvbnN0IGNvZGVzOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0geyAxOiAnQUJPUlRFRCcsIDI6ICdORVRXT1JLJywgMzogJ0RFQ09ERScsIDQ6ICdTUkNfTk9UX1NVUFBPUlRFRCcgfTtcbiAgICBjb25zdCBjYW5QbGF5ID0gYXR0Lm1pbWVUeXBlID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXVkaW8nKS5jYW5QbGF5VHlwZShhdHQubWltZVR5cGUpIDogJyc7XG4gICAgY29uc29sZS5lcnJvcignW01lc3NhZ2VCdWJibGVdIGF1ZGlvIHBsYXkgZXJyb3InLCB7XG4gICAgICBtaW1lVHlwZTogYXR0Lm1pbWVUeXBlLFxuICAgICAgdXJsOiBhdHQudXJsLnNsaWNlKDAsIDgwKSxcbiAgICAgIGNvZGU6IGVsLmVycm9yPy5jb2RlLFxuICAgICAgcmVhc29uOiBlbC5lcnJvciA/IGNvZGVzW2VsLmVycm9yLmNvZGVdIDogJ3Vua25vd24nLFxuICAgICAgY2FuUGxheVRoaXNUeXBlOiBjYW5QbGF5LFxuICAgIH0pO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01lc3NhZ2VCdWJibGUnKTtcbiAgfVxufVxuIl19
445
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idWJibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS9tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsV0FBVyxFQUNYLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDNUcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7O0FBR2xHLFFBQVEsQ0FBQztJQUNQLFdBQVc7SUFDWCxTQUFTO0lBQ1QsYUFBYTtJQUNiLFdBQVc7SUFDWCxhQUFhO0lBQ2IsZUFBZTtJQUNmLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFlBQVk7Q0FDYixDQUFDLENB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QUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ25ELGVBQWUsRUFBRSxPQUFPO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxDQUFDLENBQUMsR0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBdElVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDYzREF6WXZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvSVQsNm9JQXJJUyxZQUFZLCtCQUFFLE9BQU8sMkpBQUUsMEJBQTBCOzs0RkEwWWhELHNCQUFzQjtrQkE3WWxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsMEJBQTBCLENBQUMsWUFDbEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9JVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhbGVydENpcmNsZSxcbiAgY2hlY2ttYXJrLFxuICBjaGVja21hcmtEb25lLFxuICBjb3B5T3V0bGluZSxcbiAgY3JlYXRlT3V0bGluZSxcbiAgZG9jdW1lbnRPdXRsaW5lLFxuICBoYXBweU91dGxpbmUsXG4gIGFycm93VW5kb091dGxpbmUsXG4gIHRpbWVPdXRsaW5lLFxuICB0cmFzaE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgZm9ybWF0Q2xvY2tUaW1lIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2RhdGV0aW1lJztcbmltcG9ydCB7IE1lZGlhVmlld2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvbWVkaWEtdmlld2VyLW1vZGFsL21lZGlhLXZpZXdlci1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWlNZXNzYWdlUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9haS1tZXNzYWdlLXJlbmRlcmVyL2FpLW1lc3NhZ2UtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNvcHlPdXRsaW5lLFxuICBjcmVhdGVPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIGhhcHB5T3V0bGluZSxcbiAgYXJyb3dVbmRvT3V0bGluZSxcbiAgdGltZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0pO1xuXG5jb25zdCBNRVNTQUdFX0JVQkJMRV9JMThOID0ge1xuICBlczoge1xuICAgIHJlcGx5OiAnUmVzcG9uZGVyJyxcbiAgICBlZGl0OiAnRWRpdGFyJyxcbiAgICBkZWxldGU6ICdFbGltaW5hcicsXG4gICAgY29weTogJ0NvcGlhcicsXG4gICAgcmVhY3Q6ICdSZWFjY2lvbmFyJyxcbiAgICBkZWxldGVkOiAnTWVuc2FqZSBlbGltaW5hZG8nLFxuICAgIGVkaXRlZDogJ2VkaXRhZG8nLFxuICB9LFxuICBlbjoge1xuICAgIHJlcGx5OiAnUmVwbHknLFxuICAgIGVkaXQ6ICdFZGl0JyxcbiAgICBkZWxldGU6ICdEZWxldGUnLFxuICAgIGNvcHk6ICdDb3B5JyxcbiAgICByZWFjdDogJ1JlYWN0JyxcbiAgICBkZWxldGVkOiAnTWVzc2FnZSBkZWxldGVkJyxcbiAgICBlZGl0ZWQ6ICdlZGl0ZWQnLFxuICB9LFxufTtcblxuLyoqIEFjY2nDs24gZGlzcGFyYWRhIGRlc2RlIHVuYSBidXJidWphLiBVbiBzb2xvIG91dHB1dCB0aXBhZG8gZW4gdmV6IGRlIDQuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VCdWJibGVBY3Rpb24ge1xuICB0eXBlOiAncmVwbHknIHwgJ2VkaXQnIHwgJ2RlbGV0ZScgfCAncmVhY3QnIHwgJ2NvcHknO1xuICBtc2dJZDogc3RyaW5nO1xuICAvKiogVG9rZW4gZGVsIGVtb2ppLCBzb2xvIHBhcmEgdHlwZSAncmVhY3QnLiAqL1xuICB0b2tlbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiB2YWwtbWVzc2FnZS1idWJibGUg4oCUIGJ1cmJ1amEgZGUgbWVuc2FqZSBwcmVzZW50YWNpb25hbCAoc2lnbmFsIGlucHV0cykuXG4gKlxuICogU2luIGzDs2dpY2EgZGUgbmVnb2NpbzogZWwgY29udGVuZWRvciAoYHZhbC1jaGF0LXdpbmRvd2ApIGRlY2lkZSBhZ3J1cGFjacOzbiB5XG4gKiBwYXNhIGZsYWdzIChzaG93QXZhdGFyL3Nob3dOYW1lL3RhaWwpLiBMYXMgYWNjaW9uZXMgKHJlc3BvbmRlci9lZGl0YXIvYm9ycmFyL1xuICogcmVhY2Npb25hcikgTk8gZXN0w6FuIHNpZW1wcmUgdmlzaWJsZXM6IHNlIHJldmVsYW4gZW4gaG92ZXIgKGRlc2t0b3ApIG8gYWwgdG9jYXJcbiAqIGxhIGJ1cmJ1amEgKG3Ds3ZpbCksIHkgc2UgZW1pdGVuIHBvciB1biDDum5pY28gYChhY3Rpb24pYCB0aXBhZG8uXG4gKlxuICogUmVhZCByZWNlaXB0cyBlc3RpbG8gV2hhdHNBcHA6IHNlbmRpbmcg4oaSIHJlbG9qLCBzZW50IOKGkiDinJMsIGRlbGl2ZXJlZC9yZWFkIOKGkiDinJPinJNcbiAqIChyZWFkIGVuIGNvbG9yKSwgZmFpbGVkIOKGkiBhbGVydGEuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1tZXNzYWdlLWJ1YmJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb24sIEFpTWVzc2FnZVJlbmRlcmVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2NsYXNzLm1pbmVdPVwibXNnKCkuaXNNaW5lXCIgW2NsYXNzLnRhaWxdPVwidGFpbCgpXCIgW2NsYXNzLndpdGgtYXZhdGFyXT1cInNob3dBdmF0YXIoKVwiPlxuICAgICAgQGlmIChzaG93QXZhdGFyKCkgJiYgIW1zZygpLmlzTWluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgW2NsYXNzLmhpZGRlbl09XCIhdGFpbCgpXCI+XG4gICAgICAgICAgQGlmIChtc2coKS5zZW5kZXJBdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtc2coKS5zZW5kZXJBdmF0YXJcIiBbYWx0XT1cIm1zZygpLnNlbmRlck5hbWVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnViYmxlLXdyYXBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYnViYmxlXCJcbiAgICAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJtc2coKS5pc0RlbGV0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHNob3dOYW1lKCkgJiYgIW1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBtc2coKS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobXNnKCkucmVwbHlUbyAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktcHJldmlld1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyBtc2coKS5yZXBseVRvIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyBtc2coKS5yZXBseVRvIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keSBkZWxldGVkLXRleHRcIj57eyB0KCdkZWxldGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGltYWdlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBpbWFnZUF0dGFjaG1lbnRzKCk7IHRyYWNrIGF0dC51cmwpIHtcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdHQtaW1hZ2VcIiBbc3JjXT1cImF0dC51cmxcIiBbYWx0XT1cImF0dC5uYW1lXCIgKGNsaWNrKT1cInZpZXdBdHRhY2htZW50KGF0dClcIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGF1ZGlvQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdWRpb3NcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChhdHQgb2YgYXVkaW9BdHRhY2htZW50cygpOyB0cmFjayBhdHQudXJsKSB7XG4gICAgICAgICAgICAgICAgICA8YXVkaW9cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdHQtYXVkaW9cIlxuICAgICAgICAgICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgICAgICAgICAgICBwcmVsb2FkPVwibWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF0dC51cmxcIlxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25BdWRpb0Vycm9yKGF0dCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9hdWRpbz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChmaWxlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBmaWxlQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmaWxlLWNoaXBcIiBbaHJlZl09XCJhdHQudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYXR0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobXNnKCkuYm9keSkge1xuICAgICAgICAgICAgICBAaWYgKHJlbmRlckFpTWVzc2FnZSgpKSB7XG4gICAgICAgICAgICAgICAgPHZhbC1haS1tZXNzYWdlLXJlbmRlcmVyIFt0ZXh0XT1cIm1zZygpLmJvZHlcIiAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHlcIj57eyBtc2coKS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhXCI+XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzRWRpdGVkICYmICFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlZGl0ZWRcIj57eyB0KCdlZGl0ZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZVwiPnt7IHRpbWUoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAobXNnKCkuaXNNaW5lICYmICFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGF0dXNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5yZWFkXT1cIm1zZygpLnN0YXR1cyA9PT0gJ3JlYWQnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmFpbGVkXT1cIm1zZygpLnN0YXR1cyA9PT0gJ2ZhaWxlZCdcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInN0YXR1c0ljb24oKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoc2hvd1JlYWN0aW9ucygpICYmIG1zZygpLnJlYWN0aW9ucyAmJiBtc2coKS5yZWFjdGlvbnMhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhY3Rpb25zXCI+XG4gICAgICAgICAgICBAZm9yIChyIG9mIG1zZygpLnJlYWN0aW9ucyE7IHRyYWNrIHIudG9rZW4pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlYWN0aW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJyLmFjdGl2ZVwiIChjbGljayk9XCJlbWl0KCdyZWFjdCcsIHIudG9rZW4pXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgci50b2tlbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCI+e3sgci5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCFtc2coKS5pc0RlbGV0ZWQgJiYgaGFzQWN0aW9ucygpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiBbY2xhc3Mub3Blbl09XCJhY3Rpb25zT3BlbigpXCIgW2NsYXNzLmNvcHktb25seV09XCJjb3B5T25seUFjdGlvbnMoKVwiPlxuICAgICAgICAgICAgQGlmIChzaG93UmVhY3RBY3Rpb24oKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdyZWFjdCcpXCIgKGNsaWNrKT1cImVtaXQoJ3JlYWN0JywgJ/CfkY0nKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaGFwcHktb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzaG93UmVwbHlBY3Rpb24oKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdyZXBseScpXCIgKGNsaWNrKT1cImVtaXQoJ3JlcGx5JylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LXVuZG8tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzaG93Q29weUFjdGlvbigpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NvcHknKVwiIChjbGljayk9XCJjb3B5TWVzc2FnZSgpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjb3B5LW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2hvd0VkaXRBY3Rpb24oKSAmJiBtc2coKS5pc01pbmUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnZWRpdCcpXCIgKGNsaWNrKT1cImVtaXQoJ2VkaXQnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY3JlYXRlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2hvd0RlbGV0ZUFjdGlvbigpICYmIChtc2coKS5pc01pbmUgfHwgY2FuTW9kZXJhdGUoKSkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdCBkYW5nZXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2RlbGV0ZScpXCIgKGNsaWNrKT1cImVtaXQoJ2RlbGV0ZScpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgLnJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cbiAgICAgIC5yb3cubWluZSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICAgIH1cbiAgICAgIC5yb3cudGFpbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXIge1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG4gICAgICAuYXZhdGFyLmhpZGRlbiB7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXIgaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICB9XG4gICAgICAuYnViYmxlLXdyYXAge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1heC13aWR0aDogbWluKDg2JSwgNjgwcHgpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuICAgICAgLnJvdy5taW5lIC5idWJibGUtd3JhcCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgIH1cbiAgICAgIC5idWJibGUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmc6IDlweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS12YWwtbWVzc2FnZS1iYWNrZ3JvdW5kLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXZhbC1tZXNzYWdlLWJvcmRlciwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICB9XG4gICAgICAucm93Om5vdCgubWluZSkudGFpbCAuYnViYmxlIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMThweDtcbiAgICAgIH1cbiAgICAgIC5taW5lIC5idWJibGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS12YWwtbWVzc2FnZS1taW5lLWJhY2tncm91bmQsIHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMTExKSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdmFsLW1lc3NhZ2UtbWluZS1ib3JkZXIsIHZhcigtLXZhbC1tZXNzYWdlLW1pbmUtYmFja2dyb3VuZCwgdmFyKC0taW9uLWNvbG9yLWRhcmssICMxMTEpKSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS12YWwtbWVzc2FnZS1taW5lLWNvbG9yLCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5taW5lLnRhaWwgLmJ1YmJsZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxOHB4O1xuICAgICAgfVxuICAgICAgLmJ1YmJsZS5kZWxldGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1zdHlsZTogZGFzaGVkO1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICB9XG4gICAgICAubmFtZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1wcmV2aWV3IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxcHg7XG4gICAgICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICB9XG4gICAgICAucmVwbHktbmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG4gICAgICAucmVwbHktYm9keSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBtYXgtd2lkdGg6IDI0MHB4O1xuICAgICAgfVxuICAgICAgLmJvZHkge1xuICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICB9XG4gICAgICAuZGVsZXRlZC10ZXh0IHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICB9XG4gICAgICAuYXR0YWNobWVudHMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmF0dC1pbWFnZSB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICAgIC5hdWRpb3Mge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmF0dC1hdWRpbyB7XG4gICAgICAgIHdpZHRoOiAyNDBweDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICB9XG4gICAgICAuZmlsZXMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmZpbGUtY2hpcCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICB9XG4gICAgICAubWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW46IDJweCAwIC0ycHggOHB4O1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgb3BhY2l0eTogdmFyKC0tdmFsLW1lc3NhZ2UtbWV0YS1vcGFjaXR5LCAwKTtcbiAgICAgIH1cbiAgICAgIC5lZGl0ZWQge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICB9XG4gICAgICAuc3RhdHVzIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIH1cbiAgICAgIC5zdGF0dXMucmVhZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc2Vjb25kYXJ5LCAjNGZjM2Y3KTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICAgIC5zdGF0dXMuZmFpbGVkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgICAgLnJlYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDNweDtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDNweDtcbiAgICAgICAgcGFkZGluZzogMXB4IDdweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgfVxuICAgICAgLnJlYWN0aW9uLmFjdGl2ZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS10aW50LCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3QsICNmZmYpO1xuICAgICAgfVxuICAgICAgLnJlYWN0aW9uIC5jb3VudCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgICB9XG4gICAgICAuYWN0aW9ucyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMTRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgIHBhZGRpbmc6IDJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjEycyBlYXNlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgfVxuICAgICAgLnJvdy5taW5lIC5hY3Rpb25zIHtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICB9XG4gICAgICAucm93Om5vdCgubWluZSkgLmFjdGlvbnMge1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgfVxuICAgICAgLmFjdGlvbnMuY29weS1vbmx5IHtcbiAgICAgICAgdG9wOiBhdXRvO1xuICAgICAgICBib3R0b206IC0xNHB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgIH1cbiAgICAgIC5yb3cubWluZSAuYWN0aW9ucy5jb3B5LW9ubHkge1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcDpob3ZlciAuYWN0aW9ucyxcbiAgICAgIC5hY3Rpb25zLm9wZW4ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgIH1cbiAgICAgIC5hY3Qge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgICAuYWN0OmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5hY3QuZGFuZ2VyOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdWJibGVDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgbXNnID0gaW5wdXQucmVxdWlyZWQ8TWVzc2FnZUJ1YmJsZU1ldGFkYXRhPigpO1xuICByZWFkb25seSBzaG93QXZhdGFyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93TmFtZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgdGFpbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBsb2NhbGUgPSBpbnB1dDxzdHJpbmc+KCdlcy1DTCcpO1xuICAvKiogT3duZXIvbW9kZXJhdG9yIGRlbCBjaGF0OiBwdWVkZSBib3JyYXIgbWVuc2FqZXMgYWplbm9zIChtb2RlcmFjaW9uKS4gKi9cbiAgcmVhZG9ubHkgY2FuTW9kZXJhdGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHJlbmRlckFpTWVzc2FnZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd1JlYWN0aW9ucyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBzaG93UmVwbHlBY3Rpb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd1JlYWN0QWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHNob3dFZGl0QWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHNob3dEZWxldGVBY3Rpb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd0NvcHlBY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgYWN0aW9uID0gb3V0cHV0PE1lc3NhZ2VCdWJibGVBY3Rpb24+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGlvbnNPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc0FjdGlvbnMgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5zaG93UmVhY3RBY3Rpb24oKSB8fFxuICAgICAgdGhpcy5zaG93UmVwbHlBY3Rpb24oKSB8fFxuICAgICAgdGhpcy5zaG93Q29weUFjdGlvbigpIHx8XG4gICAgICAodGhpcy5zaG93RWRpdEFjdGlvbigpICYmIHRoaXMubXNnKCkuaXNNaW5lKSB8fFxuICAgICAgKHRoaXMuc2hvd0RlbGV0ZUFjdGlvbigpICYmICh0aGlzLm1zZygpLmlzTWluZSB8fCB0aGlzLmNhbk1vZGVyYXRlKCkpKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29weU9ubHlBY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zaG93Q29weUFjdGlvbigpICYmIHRoaXMuaGFzQWN0aW9uc0NvdW50KCkgPT09IDEpO1xuICBwcml2YXRlIHJlYWRvbmx5IGhhc0FjdGlvbnNDb3VudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGlmICh0aGlzLnNob3dSZWFjdEFjdGlvbigpKSBjb3VudCsrO1xuICAgIGlmICh0aGlzLnNob3dSZXBseUFjdGlvbigpKSBjb3VudCsrO1xuICAgIGlmICh0aGlzLnNob3dDb3B5QWN0aW9uKCkpIGNvdW50Kys7XG4gICAgaWYgKHRoaXMuc2hvd0VkaXRBY3Rpb24oKSAmJiB0aGlzLm1zZygpLmlzTWluZSkgY291bnQrKztcbiAgICBpZiAodGhpcy5zaG93RGVsZXRlQWN0aW9uKCkgJiYgKHRoaXMubXNnKCkuaXNNaW5lIHx8IHRoaXMuY2FuTW9kZXJhdGUoKSkpIGNvdW50Kys7XG4gICAgcmV0dXJuIGNvdW50O1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnTWVzc2FnZUJ1YmJsZScsIE1FU1NBR0VfQlVCQkxFX0kxOE4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWUgPSBjb21wdXRlZCgoKSA9PiBmb3JtYXRDbG9ja1RpbWUodGhpcy5tc2coKS5jcmVhdGVkQXQsIHRoaXMubG9jYWxlKCkpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5pdGlhbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMubXNnKCkuc2VuZGVyTmFtZT8udHJpbSgpID8/ICcnO1xuICAgIGlmICghbmFtZSkgcmV0dXJuICc/JztcbiAgICBjb25zdCBwYXJ0cyA9IG5hbWUuc3BsaXQoL1xccysvKTtcbiAgICByZXR1cm4gKHBhcnRzWzBdWzBdICsgKHBhcnRzWzFdPy5bMF0gPz8gJycpKS50b1VwcGVyQ2FzZSgpO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW1hZ2VBdHRhY2htZW50cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMubXNnKCkuYXR0YWNobWVudHMgPz8gW10pLmZpbHRlcihhID0+IGEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpKVxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhdWRpb0F0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnYXVkaW8vJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbGVBdHRhY2htZW50cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMubXNnKCkuYXR0YWNobWVudHMgPz8gW10pLmZpbHRlcihhID0+ICFhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdpbWFnZS8nKSAmJiAhYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnYXVkaW8vJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXR1c0ljb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLm1zZygpLnN0YXR1cykge1xuICAgICAgY2FzZSAnc2VuZGluZyc6XG4gICAgICAgIHJldHVybiAndGltZS1vdXRsaW5lJztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiAnYWxlcnQtY2lyY2xlJztcbiAgICAgIGNhc2UgJ2RlbGl2ZXJlZCc6XG4gICAgICBjYXNlICdyZWFkJzpcbiAgICAgICAgcmV0dXJuICdjaGVja21hcmstZG9uZSc7XG4gICAgICBjYXNlICdzZW50JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY2hlY2ttYXJrJztcbiAgICB9XG4gIH0pO1xuXG4gIHByb3RlY3RlZCB0b2dnbGVBY3Rpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1zZygpLmlzRGVsZXRlZCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5oYXNBY3Rpb25zKCkpIHJldHVybjtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnVwZGF0ZSh2ID0+ICF2KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0KHR5cGU6IE1lc3NhZ2VCdWJibGVBY3Rpb25bJ3R5cGUnXSwgdG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IHR5cGUsIG1zZ0lkOiB0aGlzLm1zZygpLm1zZ0lkLCB0b2tlbiB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjb3B5TWVzc2FnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnNldChmYWxzZSk7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMubXNnKCkuYm9keSA/PyAnJztcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgICB0ZXh0YXJlYS52YWx1ZSA9IHRleHQ7XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0YXJlYSk7XG4gICAgICB0ZXh0YXJlYS5zZWxlY3QoKTtcbiAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgICB0ZXh0YXJlYS5yZW1vdmUoKTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IHR5cGU6ICdjb3B5JywgbXNnSWQ6IHRoaXMubXNnKCkubXNnSWQgfSk7XG4gIH1cblxuICAvKiogQWJyZSBsYSBpbWFnZW4gYWRqdW50YSBlbiBlbCB2aXNvciBkZSBtZWRpb3MgYSBwYW50YWxsYSBjb21wbGV0YS4gKi9cbiAgcHJvdGVjdGVkIHZpZXdBdHRhY2htZW50KGF0dDogeyB1cmw6IHN0cmluZzsgbmFtZT86IHN0cmluZzsgbWltZVR5cGU/OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbC5vcGVuKHtcbiAgICAgIGNvbXBvbmVudDogTWVkaWFWaWV3ZXJNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7IHVybDogYXR0LnVybCwgbmFtZTogYXR0Lm5hbWUsIG1pbWVUeXBlOiBhdHQubWltZVR5cGUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBEaWFnbsOzc3RpY286IGVsIG5hdmVnYWRvciBubyBwdWRvIHJlcHJvZHVjaXIgZWwgYXVkaW8gcmVjaWJpZG8uICovXG4gIHByb3RlY3RlZCBvbkF1ZGlvRXJyb3IoYXR0OiB7IHVybDogc3RyaW5nOyBtaW1lVHlwZT86IHN0cmluZyB9LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQXVkaW9FbGVtZW50O1xuICAgIGNvbnN0IGNvZGVzOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0geyAxOiAnQUJPUlRFRCcsIDI6ICdORVRXT1JLJywgMzogJ0RFQ09ERScsIDQ6ICdTUkNfTk9UX1NVUFBPUlRFRCcgfTtcbiAgICBjb25zdCBjYW5QbGF5ID0gYXR0Lm1pbWVUeXBlID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXVkaW8nKS5jYW5QbGF5VHlwZShhdHQubWltZVR5cGUpIDogJyc7XG4gICAgY29uc29sZS5lcnJvcignW01lc3NhZ2VCdWJibGVdIGF1ZGlvIHBsYXkgZXJyb3InLCB7XG4gICAgICBtaW1lVHlwZTogYXR0Lm1pbWVUeXBlLFxuICAgICAgdXJsOiBhdHQudXJsLnNsaWNlKDAsIDgwKSxcbiAgICAgIGNvZGU6IGVsLmVycm9yPy5jb2RlLFxuICAgICAgcmVhc29uOiBlbC5lcnJvciA/IGNvZGVzW2VsLmVycm9yLmNvZGVdIDogJ3Vua25vd24nLFxuICAgICAgY2FuUGxheVRoaXNUeXBlOiBjYW5QbGF5LFxuICAgIH0pO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01lc3NhZ2VCdWJibGUnKTtcbiAgfVxufVxuIl19
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.1037';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xMDM3JztcbiJdfQ==
5
+ export const VERSION = '4.0.1038';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xMDM4JztcbiJdfQ==