valtech-components 4.0.229 → 4.0.231
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.
- package/esm2022/lib/components/molecules/chat-composer/chat-composer.component.mjs +104 -276
- package/esm2022/lib/components/molecules/message-bubble/message-bubble.component.mjs +4 -19
- package/esm2022/lib/components/organisms/chat-window/chat-window.component.mjs +2 -2
- package/esm2022/lib/services/chat/conversation.service.mjs +4 -15
- package/esm2022/lib/services/pdf/pdf.service.mjs +44 -4
- package/esm2022/lib/services/pdf/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +150 -310
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/chat-composer/chat-composer.component.d.ts +13 -36
- package/lib/components/molecules/message-bubble/message-bubble.component.d.ts +0 -1
- package/lib/services/chat/conversation.service.d.ts +3 -5
- package/lib/services/pdf/pdf.service.d.ts +25 -3
- package/lib/services/pdf/types.d.ts +25 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -65,8 +65,7 @@ export class MessageBubbleComponent {
|
|
|
65
65
|
return (parts[0][0] + (parts[1]?.[0] ?? '')).toUpperCase();
|
|
66
66
|
});
|
|
67
67
|
this.imageAttachments = computed(() => (this.msg().attachments ?? []).filter(a => a.mimeType?.startsWith('image/')));
|
|
68
|
-
this.
|
|
69
|
-
this.fileAttachments = computed(() => (this.msg().attachments ?? []).filter(a => !a.mimeType?.startsWith('image/') && !a.mimeType?.startsWith('audio/')));
|
|
68
|
+
this.fileAttachments = computed(() => (this.msg().attachments ?? []).filter(a => !a.mimeType?.startsWith('image/')));
|
|
70
69
|
this.statusIcon = computed(() => {
|
|
71
70
|
switch (this.msg().status) {
|
|
72
71
|
case 'sending':
|
|
@@ -137,13 +136,6 @@ export class MessageBubbleComponent {
|
|
|
137
136
|
}
|
|
138
137
|
</div>
|
|
139
138
|
}
|
|
140
|
-
@if (audioAttachments().length > 0) {
|
|
141
|
-
<div class="audios">
|
|
142
|
-
@for (att of audioAttachments(); track att.url) {
|
|
143
|
-
<audio class="att-audio" controls preload="metadata" [src]="att.url"></audio>
|
|
144
|
-
}
|
|
145
|
-
</div>
|
|
146
|
-
}
|
|
147
139
|
@if (fileAttachments().length > 0) {
|
|
148
140
|
<div class="files">
|
|
149
141
|
@for (att of fileAttachments(); track att.url) {
|
|
@@ -207,7 +199,7 @@ export class MessageBubbleComponent {
|
|
|
207
199
|
}
|
|
208
200
|
</div>
|
|
209
201
|
</div>
|
|
210
|
-
`, isInline: true, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 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(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.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}.
|
|
202
|
+
`, isInline: true, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 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(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.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}.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:.7}.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-medium, #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"] }] }); }
|
|
211
203
|
}
|
|
212
204
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessageBubbleComponent, decorators: [{
|
|
213
205
|
type: Component,
|
|
@@ -252,13 +244,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
252
244
|
}
|
|
253
245
|
</div>
|
|
254
246
|
}
|
|
255
|
-
@if (audioAttachments().length > 0) {
|
|
256
|
-
<div class="audios">
|
|
257
|
-
@for (att of audioAttachments(); track att.url) {
|
|
258
|
-
<audio class="att-audio" controls preload="metadata" [src]="att.url"></audio>
|
|
259
|
-
}
|
|
260
|
-
</div>
|
|
261
|
-
}
|
|
262
247
|
@if (fileAttachments().length > 0) {
|
|
263
248
|
<div class="files">
|
|
264
249
|
@for (att of fileAttachments(); track att.url) {
|
|
@@ -322,6 +307,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
322
307
|
}
|
|
323
308
|
</div>
|
|
324
309
|
</div>
|
|
325
|
-
`, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 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(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.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}.
|
|
310
|
+
`, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 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(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.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}.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:.7}.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-medium, #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"] }]
|
|
326
311
|
}], ctorParameters: () => [] });
|
|
327
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idWJibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS9tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUdqRSxRQUFRLENBQUM7SUFDUCxXQUFXO0lBQ1gsU0FBUztJQUNULGFBQWE7SUFDYixhQUFhO0lBQ2IsZUFBZTtJQUNmLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFlBQVk7Q0FDYixDQUFDLENBQUM7QUFFSCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxXQUFXO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFLFlBQVk7UUFDbkIsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixN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QW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStHVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhbGVydENpcmNsZSxcbiAgY2hlY2ttYXJrLFxuICBjaGVja21hcmtEb25lLFxuICBjcmVhdGVPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIGhhcHB5T3V0bGluZSxcbiAgYXJyb3dVbmRvT3V0bGluZSxcbiAgdGltZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgZm9ybWF0Q2xvY2tUaW1lIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2RhdGV0aW1lJztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgaGFwcHlPdXRsaW5lLFxuICBhcnJvd1VuZG9PdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSk7XG5cbmNvbnN0IE1FU1NBR0VfQlVCQkxFX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcmVwbHk6ICdSZXNwb25kZXInLFxuICAgIGVkaXQ6ICdFZGl0YXInLFxuICAgIGRlbGV0ZTogJ0VsaW1pbmFyJyxcbiAgICByZWFjdDogJ1JlYWNjaW9uYXInLFxuICAgIGRlbGV0ZWQ6ICdNZW5zYWplIGVsaW1pbmFkbycsXG4gICAgZWRpdGVkOiAnZWRpdGFkbycsXG4gIH0sXG4gIGVuOiB7XG4gICAgcmVwbHk6ICdSZXBseScsXG4gICAgZWRpdDogJ0VkaXQnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgcmVhY3Q6ICdSZWFjdCcsXG4gICAgZGVsZXRlZDogJ01lc3NhZ2UgZGVsZXRlZCcsXG4gICAgZWRpdGVkOiAnZWRpdGVkJyxcbiAgfSxcbn07XG5cbi8qKiBBY2Npw7NuIGRpc3BhcmFkYSBkZXNkZSB1bmEgYnVyYnVqYS4gVW4gc29sbyBvdXRwdXQgdGlwYWRvIGVuIHZleiBkZSA0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQnViYmxlQWN0aW9uIHtcbiAgdHlwZTogJ3JlcGx5JyB8ICdlZGl0JyB8ICdkZWxldGUnIHwgJ3JlYWN0JztcbiAgbXNnSWQ6IHN0cmluZztcbiAgLyoqIFRva2VuIGRlbCBlbW9qaSwgc29sbyBwYXJhIHR5cGUgJ3JlYWN0Jy4gKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogdmFsLW1lc3NhZ2UtYnViYmxlIOKAlCBidXJidWphIGRlIG1lbnNhamUgcHJlc2VudGFjaW9uYWwgKHNpZ25hbCBpbnB1dHMpLlxuICpcbiAqIFNpbiBsw7NnaWNhIGRlIG5lZ29jaW86IGVsIGNvbnRlbmVkb3IgKGB2YWwtY2hhdC13aW5kb3dgKSBkZWNpZGUgYWdydXBhY2nDs24geVxuICogcGFzYSBmbGFncyAoc2hvd0F2YXRhci9zaG93TmFtZS90YWlsKS4gTGFzIGFjY2lvbmVzIChyZXNwb25kZXIvZWRpdGFyL2JvcnJhci9cbiAqIHJlYWNjaW9uYXIpIE5PIGVzdMOhbiBzaWVtcHJlIHZpc2libGVzOiBzZSByZXZlbGFuIGVuIGhvdmVyIChkZXNrdG9wKSBvIGFsIHRvY2FyXG4gKiBsYSBidXJidWphIChtw7N2aWwpLCB5IHNlIGVtaXRlbiBwb3IgdW4gw7puaWNvIGAoYWN0aW9uKWAgdGlwYWRvLlxuICpcbiAqIFJlYWQgcmVjZWlwdHMgZXN0aWxvIFdoYXRzQXBwOiBzZW5kaW5nIOKGkiByZWxvaiwgc2VudCDihpIg4pyTLCBkZWxpdmVyZWQvcmVhZCDihpIg4pyT4pyTXG4gKiAocmVhZCBlbiBjb2xvciksIGZhaWxlZCDihpIgYWxlcnRhLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVzc2FnZS1idWJibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2NsYXNzLm1pbmVdPVwibXNnKCkuaXNNaW5lXCIgW2NsYXNzLnRhaWxdPVwidGFpbCgpXCIgW2NsYXNzLndpdGgtYXZhdGFyXT1cInNob3dBdmF0YXIoKVwiPlxuICAgICAgQGlmIChzaG93QXZhdGFyKCkgJiYgIW1zZygpLmlzTWluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgW2NsYXNzLmhpZGRlbl09XCIhdGFpbCgpXCI+XG4gICAgICAgICAgQGlmIChtc2coKS5zZW5kZXJBdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtc2coKS5zZW5kZXJBdmF0YXJcIiBbYWx0XT1cIm1zZygpLnNlbmRlck5hbWVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnViYmxlLXdyYXBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYnViYmxlXCJcbiAgICAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJtc2coKS5pc0RlbGV0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHNob3dOYW1lKCkgJiYgIW1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBtc2coKS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobXNnKCkucmVwbHlUbyAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktcHJldmlld1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyBtc2coKS5yZXBseVRvIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyBtc2coKS5yZXBseVRvIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keSBkZWxldGVkLXRleHRcIj57eyB0KCdkZWxldGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGltYWdlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBpbWFnZUF0dGFjaG1lbnRzKCk7IHRyYWNrIGF0dC51cmwpIHtcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdHQtaW1hZ2VcIiBbc3JjXT1cImF0dC51cmxcIiBbYWx0XT1cImF0dC5uYW1lXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChhdWRpb0F0dGFjaG1lbnRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXVkaW9zXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYXR0IG9mIGF1ZGlvQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGF1ZGlvIGNsYXNzPVwiYXR0LWF1ZGlvXCIgY29udHJvbHMgcHJlbG9hZD1cIm1ldGFkYXRhXCIgW3NyY109XCJhdHQudXJsXCI+PC9hdWRpbz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChmaWxlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBmaWxlQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmaWxlLWNoaXBcIiBbaHJlZl09XCJhdHQudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYXR0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobXNnKCkuYm9keSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHlcIj57eyBtc2coKS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YVwiPlxuICAgICAgICAgICAgQGlmIChtc2coKS5pc0VkaXRlZCAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWRpdGVkXCI+e3sgdCgnZWRpdGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj57eyB0aW1lKCkgfX08L3NwYW4+XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucmVhZF09XCJtc2coKS5zdGF0dXMgPT09ICdyZWFkJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZhaWxlZF09XCJtc2coKS5zdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzdGF0dXNJY29uKClcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKG1zZygpLnJlYWN0aW9ucyAmJiBtc2coKS5yZWFjdGlvbnMhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhY3Rpb25zXCI+XG4gICAgICAgICAgICBAZm9yIChyIG9mIG1zZygpLnJlYWN0aW9ucyE7IHRyYWNrIHIudG9rZW4pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlYWN0aW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJyLmFjdGl2ZVwiIChjbGljayk9XCJlbWl0KCdyZWFjdCcsIHIudG9rZW4pXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgci50b2tlbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCI+e3sgci5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiIFtjbGFzcy5vcGVuXT1cImFjdGlvbnNPcGVuKClcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlYWN0JylcIiAoY2xpY2spPVwiZW1pdCgncmVhY3QnLCAn8J+RjScpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaGFwcHktb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlcGx5JylcIiAoY2xpY2spPVwiZW1pdCgncmVwbHknKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LXVuZG8tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAobXNnKCkuaXNNaW5lKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2VkaXQnKVwiIChjbGljayk9XCJlbWl0KCdlZGl0JylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3QgZGFuZ2VyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdkZWxldGUnKVwiIChjbGljayk9XCJlbWl0KCdkZWxldGUnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW46IDFweCAwO1xuICAgICAgfVxuICAgICAgLnJvdy5taW5lIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgfVxuICAgICAgLnJvdy50YWlsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgICAgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXIuaGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oNzglLCA1MjBweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmJ1YmJsZS13cmFwIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgICAgLmJ1YmJsZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogN3B4IDExcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKS50YWlsIC5idWJibGUge1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAubWluZSAuYnViYmxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5taW5lLnRhaWwgLmJ1YmJsZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAuYnViYmxlLmRlbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIC5uYW1lIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgICAgLnJlcGx5LXByZXZpZXcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDFweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgICB9XG4gICAgICAuYm9keSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgIH1cbiAgICAgIC5kZWxldGVkLXRleHQge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgIH1cbiAgICAgIC5hdHRhY2htZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXR0LWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5hdWRpb3Mge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmF0dC1hdWRpbyB7XG4gICAgICAgIHdpZHRoOiAyNDBweDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICB9XG4gICAgICAuZmlsZXMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmZpbGUtY2hpcCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICB9XG4gICAgICAubWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW46IDJweCAwIC0ycHggOHB4O1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgfVxuICAgICAgLmVkaXRlZCB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cbiAgICAgIC5zdGF0dXMge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgfVxuICAgICAgLnN0YXR1cy5yZWFkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnksICM0ZmMzZjcpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgICAgLnN0YXR1cy5mYWlsZWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogM3B4O1xuICAgICAgfVxuICAgICAgLnJlYWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogM3B4O1xuICAgICAgICBwYWRkaW5nOiAxcHggN3B4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24uYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24gLmNvdW50IHtcbiAgICAgICAgb3BhY2l0eTogMC43NTtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgcGFkZGluZzogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTJzIGVhc2U7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmFjdGlvbnMge1xuICAgICAgICByaWdodDogMDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKSAuYWN0aW9ucyB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICB9XG4gICAgICAuYnViYmxlLXdyYXA6aG92ZXIgLmFjdGlvbnMsXG4gICAgICAuYWN0aW9ucy5vcGVuIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICB9XG4gICAgICAuYWN0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgICAuYWN0OmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5hY3QuZGFuZ2VyOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdWJibGVDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IG1zZyA9IGlucHV0LnJlcXVpcmVkPE1lc3NhZ2VCdWJibGVNZXRhZGF0YT4oKTtcbiAgcmVhZG9ubHkgc2hvd0F2YXRhciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd05hbWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHRhaWwgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgbG9jYWxlID0gaW5wdXQ8c3RyaW5nPignZXMtQ0wnKTtcblxuICByZWFkb25seSBhY3Rpb24gPSBvdXRwdXQ8TWVzc2FnZUJ1YmJsZUFjdGlvbj4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aW9uc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNZXNzYWdlQnViYmxlJywgTUVTU0FHRV9CVUJCTEVfSTE4Tik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZSA9IGNvbXB1dGVkKCgpID0+IGZvcm1hdENsb2NrVGltZSh0aGlzLm1zZygpLmNyZWF0ZWRBdCwgdGhpcy5sb2NhbGUoKSkpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbml0aWFscyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5tc2coKS5zZW5kZXJOYW1lPy50cmltKCkgPz8gJyc7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJz8nO1xuICAgIGNvbnN0IHBhcnRzID0gbmFtZS5zcGxpdCgvXFxzKy8pO1xuICAgIHJldHVybiAocGFydHNbMF1bMF0gKyAocGFydHNbMV0/LlswXSA/PyAnJykpLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbWFnZUF0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnaW1hZ2UvJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGF1ZGlvQXR0YWNobWVudHMgPSBjb21wdXRlZCgoKSA9PlxuICAgICh0aGlzLm1zZygpLmF0dGFjaG1lbnRzID8/IFtdKS5maWx0ZXIoYSA9PiBhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdhdWRpby8nKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsZUF0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gIWEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpICYmICFhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdhdWRpby8nKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhdHVzSWNvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKHRoaXMubXNnKCkuc3RhdHVzKSB7XG4gICAgICBjYXNlICdzZW5kaW5nJzpcbiAgICAgICAgcmV0dXJuICd0aW1lLW91dGxpbmUnO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuICdhbGVydC1jaXJjbGUnO1xuICAgICAgY2FzZSAnZGVsaXZlcmVkJzpcbiAgICAgIGNhc2UgJ3JlYWQnOlxuICAgICAgICByZXR1cm4gJ2NoZWNrbWFyay1kb25lJztcbiAgICAgIGNhc2UgJ3NlbnQnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdjaGVja21hcmsnO1xuICAgIH1cbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUFjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXNnKCkuaXNEZWxldGVkKSByZXR1cm47XG4gICAgdGhpcy5hY3Rpb25zT3Blbi51cGRhdGUodiA9PiAhdik7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdCh0eXBlOiBNZXNzYWdlQnViYmxlQWN0aW9uWyd0eXBlJ10sIHRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25zT3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aW9uLmVtaXQoeyB0eXBlLCBtc2dJZDogdGhpcy5tc2coKS5tc2dJZCwgdG9rZW4gfSk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWVzc2FnZUJ1YmJsZScpO1xuICB9XG59XG4iXX0=
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idWJibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS9tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUdqRSxRQUFRLENBQUM7SUFDUCxXQUFXO0lBQ1gsU0FBUztJQUNULGFBQWE7SUFDYixhQUFhO0lBQ2IsZUFBZTtJQUNmLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFlBQVk7Q0FDYixDQUFDLENBQUM7QUFFSCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxXQUFXO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFLFlBQVk7UUFDbkIsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixN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UyxhQUFhO1FBQ3JCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRVMsSUFBSSxDQUFDLElBQWlDLEVBQUUsS0FBYztRQUM5RCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxDQUFDLENBQUMsR0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBN0RVLHNCQUFzQjttR0FBdEIsc0JBQXNCLGt1QkF2VnZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdHVCxpMEhBekdTLFlBQVksK0JBQUUsT0FBTzs7NEZBd1ZwQixzQkFBc0I7a0JBM1ZsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdHVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhbGVydENpcmNsZSxcbiAgY2hlY2ttYXJrLFxuICBjaGVja21hcmtEb25lLFxuICBjcmVhdGVPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIGhhcHB5T3V0bGluZSxcbiAgYXJyb3dVbmRvT3V0bGluZSxcbiAgdGltZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgZm9ybWF0Q2xvY2tUaW1lIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2RhdGV0aW1lJztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgaGFwcHlPdXRsaW5lLFxuICBhcnJvd1VuZG9PdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSk7XG5cbmNvbnN0IE1FU1NBR0VfQlVCQkxFX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcmVwbHk6ICdSZXNwb25kZXInLFxuICAgIGVkaXQ6ICdFZGl0YXInLFxuICAgIGRlbGV0ZTogJ0VsaW1pbmFyJyxcbiAgICByZWFjdDogJ1JlYWNjaW9uYXInLFxuICAgIGRlbGV0ZWQ6ICdNZW5zYWplIGVsaW1pbmFkbycsXG4gICAgZWRpdGVkOiAnZWRpdGFkbycsXG4gIH0sXG4gIGVuOiB7XG4gICAgcmVwbHk6ICdSZXBseScsXG4gICAgZWRpdDogJ0VkaXQnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgcmVhY3Q6ICdSZWFjdCcsXG4gICAgZGVsZXRlZDogJ01lc3NhZ2UgZGVsZXRlZCcsXG4gICAgZWRpdGVkOiAnZWRpdGVkJyxcbiAgfSxcbn07XG5cbi8qKiBBY2Npw7NuIGRpc3BhcmFkYSBkZXNkZSB1bmEgYnVyYnVqYS4gVW4gc29sbyBvdXRwdXQgdGlwYWRvIGVuIHZleiBkZSA0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQnViYmxlQWN0aW9uIHtcbiAgdHlwZTogJ3JlcGx5JyB8ICdlZGl0JyB8ICdkZWxldGUnIHwgJ3JlYWN0JztcbiAgbXNnSWQ6IHN0cmluZztcbiAgLyoqIFRva2VuIGRlbCBlbW9qaSwgc29sbyBwYXJhIHR5cGUgJ3JlYWN0Jy4gKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogdmFsLW1lc3NhZ2UtYnViYmxlIOKAlCBidXJidWphIGRlIG1lbnNhamUgcHJlc2VudGFjaW9uYWwgKHNpZ25hbCBpbnB1dHMpLlxuICpcbiAqIFNpbiBsw7NnaWNhIGRlIG5lZ29jaW86IGVsIGNvbnRlbmVkb3IgKGB2YWwtY2hhdC13aW5kb3dgKSBkZWNpZGUgYWdydXBhY2nDs24geVxuICogcGFzYSBmbGFncyAoc2hvd0F2YXRhci9zaG93TmFtZS90YWlsKS4gTGFzIGFjY2lvbmVzIChyZXNwb25kZXIvZWRpdGFyL2JvcnJhci9cbiAqIHJlYWNjaW9uYXIpIE5PIGVzdMOhbiBzaWVtcHJlIHZpc2libGVzOiBzZSByZXZlbGFuIGVuIGhvdmVyIChkZXNrdG9wKSBvIGFsIHRvY2FyXG4gKiBsYSBidXJidWphIChtw7N2aWwpLCB5IHNlIGVtaXRlbiBwb3IgdW4gw7puaWNvIGAoYWN0aW9uKWAgdGlwYWRvLlxuICpcbiAqIFJlYWQgcmVjZWlwdHMgZXN0aWxvIFdoYXRzQXBwOiBzZW5kaW5nIOKGkiByZWxvaiwgc2VudCDihpIg4pyTLCBkZWxpdmVyZWQvcmVhZCDihpIg4pyT4pyTXG4gKiAocmVhZCBlbiBjb2xvciksIGZhaWxlZCDihpIgYWxlcnRhLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVzc2FnZS1idWJibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2NsYXNzLm1pbmVdPVwibXNnKCkuaXNNaW5lXCIgW2NsYXNzLnRhaWxdPVwidGFpbCgpXCIgW2NsYXNzLndpdGgtYXZhdGFyXT1cInNob3dBdmF0YXIoKVwiPlxuICAgICAgQGlmIChzaG93QXZhdGFyKCkgJiYgIW1zZygpLmlzTWluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgW2NsYXNzLmhpZGRlbl09XCIhdGFpbCgpXCI+XG4gICAgICAgICAgQGlmIChtc2coKS5zZW5kZXJBdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtc2coKS5zZW5kZXJBdmF0YXJcIiBbYWx0XT1cIm1zZygpLnNlbmRlck5hbWVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnViYmxlLXdyYXBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYnViYmxlXCJcbiAgICAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJtc2coKS5pc0RlbGV0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHNob3dOYW1lKCkgJiYgIW1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBtc2coKS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobXNnKCkucmVwbHlUbyAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktcHJldmlld1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyBtc2coKS5yZXBseVRvIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyBtc2coKS5yZXBseVRvIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keSBkZWxldGVkLXRleHRcIj57eyB0KCdkZWxldGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGltYWdlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBpbWFnZUF0dGFjaG1lbnRzKCk7IHRyYWNrIGF0dC51cmwpIHtcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdHQtaW1hZ2VcIiBbc3JjXT1cImF0dC51cmxcIiBbYWx0XT1cImF0dC5uYW1lXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChmaWxlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBmaWxlQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmaWxlLWNoaXBcIiBbaHJlZl09XCJhdHQudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYXR0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobXNnKCkuYm9keSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHlcIj57eyBtc2coKS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YVwiPlxuICAgICAgICAgICAgQGlmIChtc2coKS5pc0VkaXRlZCAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWRpdGVkXCI+e3sgdCgnZWRpdGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj57eyB0aW1lKCkgfX08L3NwYW4+XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucmVhZF09XCJtc2coKS5zdGF0dXMgPT09ICdyZWFkJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZhaWxlZF09XCJtc2coKS5zdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzdGF0dXNJY29uKClcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKG1zZygpLnJlYWN0aW9ucyAmJiBtc2coKS5yZWFjdGlvbnMhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhY3Rpb25zXCI+XG4gICAgICAgICAgICBAZm9yIChyIG9mIG1zZygpLnJlYWN0aW9ucyE7IHRyYWNrIHIudG9rZW4pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlYWN0aW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJyLmFjdGl2ZVwiIChjbGljayk9XCJlbWl0KCdyZWFjdCcsIHIudG9rZW4pXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgci50b2tlbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCI+e3sgci5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiIFtjbGFzcy5vcGVuXT1cImFjdGlvbnNPcGVuKClcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlYWN0JylcIiAoY2xpY2spPVwiZW1pdCgncmVhY3QnLCAn8J+RjScpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaGFwcHktb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlcGx5JylcIiAoY2xpY2spPVwiZW1pdCgncmVwbHknKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LXVuZG8tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAobXNnKCkuaXNNaW5lKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2VkaXQnKVwiIChjbGljayk9XCJlbWl0KCdlZGl0JylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3QgZGFuZ2VyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdkZWxldGUnKVwiIChjbGljayk9XCJlbWl0KCdkZWxldGUnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW46IDFweCAwO1xuICAgICAgfVxuICAgICAgLnJvdy5taW5lIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgfVxuICAgICAgLnJvdy50YWlsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgICAgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXIuaGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oNzglLCA1MjBweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmJ1YmJsZS13cmFwIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgICAgLmJ1YmJsZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogN3B4IDExcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKS50YWlsIC5idWJibGUge1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAubWluZSAuYnViYmxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5taW5lLnRhaWwgLmJ1YmJsZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAuYnViYmxlLmRlbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIC5uYW1lIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgICAgLnJlcGx5LXByZXZpZXcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDFweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgICB9XG4gICAgICAuYm9keSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgIH1cbiAgICAgIC5kZWxldGVkLXRleHQge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgIH1cbiAgICAgIC5hdHRhY2htZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXR0LWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5maWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuZmlsZS1jaGlwIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIH1cbiAgICAgIC5tZXRhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIG1hcmdpbjogMnB4IDAgLTJweCA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG4gICAgICAuZWRpdGVkIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgfVxuICAgICAgLnN0YXR1cyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgICAuc3RhdHVzLnJlYWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeSwgIzRmYzNmNyk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICAuc3RhdHVzLmZhaWxlZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAzcHg7XG4gICAgICAgIHBhZGRpbmc6IDFweCA3cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbi5hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktdGludCwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbiAuY291bnQge1xuICAgICAgICBvcGFjaXR5OiAwLjc1O1xuICAgICAgfVxuICAgICAgLmFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTE0cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiAycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xMnMgZWFzZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cbiAgICAgIC5yb3cubWluZSAuYWN0aW9ucyB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgfVxuICAgICAgLnJvdzpub3QoLm1pbmUpIC5hY3Rpb25zIHtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcDpob3ZlciAuYWN0aW9ucyxcbiAgICAgIC5hY3Rpb25zLm9wZW4ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgIH1cbiAgICAgIC5hY3Qge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgIH1cbiAgICAgIC5hY3Q6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgfVxuICAgICAgLmFjdC5kYW5nZXI6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUJ1YmJsZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgbXNnID0gaW5wdXQucmVxdWlyZWQ8TWVzc2FnZUJ1YmJsZU1ldGFkYXRhPigpO1xuICByZWFkb25seSBzaG93QXZhdGFyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93TmFtZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgdGFpbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBsb2NhbGUgPSBpbnB1dDxzdHJpbmc+KCdlcy1DTCcpO1xuXG4gIHJlYWRvbmx5IGFjdGlvbiA9IG91dHB1dDxNZXNzYWdlQnViYmxlQWN0aW9uPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zT3BlbiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01lc3NhZ2VCdWJibGUnLCBNRVNTQUdFX0JVQkJMRV9JMThOKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSB0aW1lID0gY29tcHV0ZWQoKCkgPT4gZm9ybWF0Q2xvY2tUaW1lKHRoaXMubXNnKCkuY3JlYXRlZEF0LCB0aGlzLmxvY2FsZSgpKSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGluaXRpYWxzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLm1zZygpLnNlbmRlck5hbWU/LnRyaW0oKSA/PyAnJztcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnPyc7XG4gICAgY29uc3QgcGFydHMgPSBuYW1lLnNwbGl0KC9cXHMrLyk7XG4gICAgcmV0dXJuIChwYXJ0c1swXVswXSArIChwYXJ0c1sxXT8uWzBdID8/ICcnKSkudG9VcHBlckNhc2UoKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGltYWdlQXR0YWNobWVudHMgPSBjb21wdXRlZCgoKSA9PlxuICAgICh0aGlzLm1zZygpLmF0dGFjaG1lbnRzID8/IFtdKS5maWx0ZXIoYSA9PiBhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdpbWFnZS8nKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsZUF0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gIWEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpKVxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdGF0dXNJY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy5tc2coKS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgJ3NlbmRpbmcnOlxuICAgICAgICByZXR1cm4gJ3RpbWUtb3V0bGluZSc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gJ2FsZXJ0LWNpcmNsZSc7XG4gICAgICBjYXNlICdkZWxpdmVyZWQnOlxuICAgICAgY2FzZSAncmVhZCc6XG4gICAgICAgIHJldHVybiAnY2hlY2ttYXJrLWRvbmUnO1xuICAgICAgY2FzZSAnc2VudCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2NoZWNrbWFyayc7XG4gICAgfVxuICB9KTtcblxuICBwcm90ZWN0ZWQgdG9nZ2xlQWN0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tc2coKS5pc0RlbGV0ZWQpIHJldHVybjtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnVwZGF0ZSh2ID0+ICF2KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0KHR5cGU6IE1lc3NhZ2VCdWJibGVBY3Rpb25bJ3R5cGUnXSwgdG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IHR5cGUsIG1zZ0lkOiB0aGlzLm1zZygpLm1zZ0lkLCB0b2tlbiB9KTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNZXNzYWdlQnViYmxlJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -220,7 +220,7 @@ export class ChatWindowComponent {
|
|
|
220
220
|
<div class="closed-banner">{{ t('conversationClosed') }}</div>
|
|
221
221
|
}
|
|
222
222
|
</div>
|
|
223
|
-
`, isInline: true, styles: [":host{display:block;height:100%}.chat{position:relative;display:flex;flex-direction:column;height:100%;min-height:0}.messages{flex:1;min-height:0;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:0}.state{margin:auto;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--ion-color-medium, #92949c);font-size:.9375rem;text-align:center;padding:24px}.state.empty ion-icon{font-size:2.5rem;opacity:.5}.date-sep{position:sticky;top:4px;z-index:1;display:flex;justify-content:center;margin:8px 0}.date-sep span{font-size:.75rem;color:var(--ion-color-medium, #92949c);background:var(--ion-color-step-100, rgba(127, 127, 127, .14));padding:3px 12px;border-radius:999px;backdrop-filter:blur(4px)}.scroll-down{position:absolute;right:14px;bottom:84px;width:40px;height:40px;border-radius:50%;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));color:var(--ion-color-medium, #92949c);box-shadow:0 2px 10px #00000026;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1.25rem;z-index:3}.scroll-down .dot{position:absolute;top:0;right:0;width:12px;height:12px;border-radius:50%;background:var(--ion-color-primary);border:2px solid var(--ion-card-background, #fff)}.closed-banner{text-align:center;padding:14px;color:var(--ion-color-medium, #92949c);font-size:.875rem;border-top:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}\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: MessageBubbleComponent, selector: "val-message-bubble", inputs: ["msg", "showAvatar", "showName", "tail", "locale"], outputs: ["action"] }, { kind: "component", type: ChatComposerComponent, selector: "val-chat-composer", inputs: ["placeholder", "disabled", "maxLength", "replyingTo", "showAttach", "showMic"], outputs: ["send", "typing", "attach", "voice", "cancelReply"] }, { kind: "component", type: TypingIndicatorComponent, selector: "val-typing-indicator", inputs: ["typingUsers"] }] }); }
|
|
223
|
+
`, isInline: true, styles: [":host{display:block;height:100%}.chat{position:relative;display:flex;flex-direction:column;height:100%;min-height:0}.messages{flex:1;min-height:0;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:0}.state{margin:auto;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--ion-color-medium, #92949c);font-size:.9375rem;text-align:center;padding:24px}.state.empty ion-icon{font-size:2.5rem;opacity:.5}.date-sep{position:sticky;top:4px;z-index:1;display:flex;justify-content:center;margin:8px 0}.date-sep span{font-size:.75rem;color:var(--ion-color-medium, #92949c);background:var(--ion-color-step-100, rgba(127, 127, 127, .14));padding:3px 12px;border-radius:999px;backdrop-filter:blur(4px)}.scroll-down{position:absolute;right:14px;bottom:84px;width:40px;height:40px;border-radius:50%;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));color:var(--ion-color-medium, #92949c);box-shadow:0 2px 10px #00000026;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1.25rem;z-index:3}.scroll-down .dot{position:absolute;top:0;right:0;width:12px;height:12px;border-radius:50%;background:var(--ion-color-primary);border:2px solid var(--ion-card-background, #fff)}.closed-banner{text-align:center;padding:14px;color:var(--ion-color-medium, #92949c);font-size:.875rem;border-top:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}\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: MessageBubbleComponent, selector: "val-message-bubble", inputs: ["msg", "showAvatar", "showName", "tail", "locale"], outputs: ["action"] }, { kind: "component", type: ChatComposerComponent, selector: "val-chat-composer", inputs: ["placeholder", "disabled", "maxLength", "replyingTo", "showAttach", "showEmoji", "showMic"], outputs: ["send", "typing", "attach", "voice", "cancelReply"] }, { kind: "component", type: TypingIndicatorComponent, selector: "val-typing-indicator", inputs: ["typingUsers"] }] }); }
|
|
224
224
|
}
|
|
225
225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatWindowComponent, decorators: [{
|
|
226
226
|
type: Component,
|
|
@@ -281,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
281
281
|
</div>
|
|
282
282
|
`, styles: [":host{display:block;height:100%}.chat{position:relative;display:flex;flex-direction:column;height:100%;min-height:0}.messages{flex:1;min-height:0;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:0}.state{margin:auto;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--ion-color-medium, #92949c);font-size:.9375rem;text-align:center;padding:24px}.state.empty ion-icon{font-size:2.5rem;opacity:.5}.date-sep{position:sticky;top:4px;z-index:1;display:flex;justify-content:center;margin:8px 0}.date-sep span{font-size:.75rem;color:var(--ion-color-medium, #92949c);background:var(--ion-color-step-100, rgba(127, 127, 127, .14));padding:3px 12px;border-radius:999px;backdrop-filter:blur(4px)}.scroll-down{position:absolute;right:14px;bottom:84px;width:40px;height:40px;border-radius:50%;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));color:var(--ion-color-medium, #92949c);box-shadow:0 2px 10px #00000026;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1.25rem;z-index:3}.scroll-down .dot{position:absolute;top:0;right:0;width:12px;height:12px;border-radius:50%;background:var(--ion-color-primary);border:2px solid var(--ion-card-background, #fff)}.closed-banner{text-align:center;padding:14px;color:var(--ion-color-medium, #92949c);font-size:.875rem;border-top:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}\n"] }]
|
|
283
283
|
}], ctorParameters: () => [] });
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aW5kb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jaGF0LXdpbmRvdy9jaGF0LXdpbmRvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQXVCLE1BQU0seURBQXlELENBQUM7QUFFdEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkRBQTZELENBQUM7O0FBRXZHLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztBQUVuRCxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLEVBQUUsRUFBRTtRQUNGLGtCQUFrQixFQUFFLGdDQUFnQztRQUNwRCxPQUFPLEVBQUUsc0JBQXNCO1FBQy9CLFVBQVUsRUFBRSwwQ0FBMEM7UUFDdEQsV0FBVyxFQUFFLGlCQUFpQjtLQUMvQjtJ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Q0FBQztJQUN4QyxDQUFDOytHQXJJVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwrckNBbkpwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVEVCw4Z0RBeERTLFlBQVksK0JBQUUsT0FBTywySkFBRSxzQkFBc0IsaUpBQUUscUJBQXFCLHNOQUFFLHdCQUF3Qjs7NEZBb0o3RixtQkFBbUI7a0JBdkovQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLENBQUMsWUFDL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1RFQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFycm93RG93bk91dGxpbmUsIGNoYXRidWJibGVzT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IGZvcm1hdERhdGVTZXBhcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgTWVzc2FnZVJlcGx5VG8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGF0L3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVDb21wb25lbnQsIE1lc3NhZ2VCdWJibGVBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbWVzc2FnZS1idWJibGUvbWVzc2FnZS1idWJibGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS90eXBlcyc7XG5pbXBvcnQgeyBDaGF0Q29tcG9zZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY2hhdC1jb21wb3Nlci9jaGF0LWNvbXBvc2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUeXBpbmdJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvdHlwaW5nLWluZGljYXRvci90eXBpbmctaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5cbmFkZEljb25zKHsgYXJyb3dEb3duT3V0bGluZSwgY2hhdGJ1YmJsZXNPdXRsaW5lIH0pO1xuXG5jb25zdCBDSEFUX1dJTkRPV19JMThOID0ge1xuICBlczoge1xuICAgIGNvbnZlcnNhdGlvbkNsb3NlZDogJ0VzdGEgY29udmVyc2FjaW9uIGVzdGEgY2VycmFkYScsXG4gICAgbG9hZGluZzogJ0NhcmdhbmRvIG1lbnNhamVzLi4uJyxcbiAgICBub01lc3NhZ2VzOiAnQXVuIG5vIGhheSBtZW5zYWplcy4gRXNjcmliZSBlbCBwcmltZXJvLicsXG4gICAgbmV3TWVzc2FnZXM6ICdNZW5zYWplcyBudWV2b3MnLFxuICB9LFxuICBlbjoge1xuICAgIGNvbnZlcnNhdGlvbkNsb3NlZDogJ1RoaXMgY29udmVyc2F0aW9uIGlzIGNsb3NlZCcsXG4gICAgbG9hZGluZzogJ0xvYWRpbmcgbWVzc2FnZXMuLi4nLFxuICAgIG5vTWVzc2FnZXM6ICdObyBtZXNzYWdlcyB5ZXQuIFNlbmQgdGhlIGZpcnN0IG9uZS4nLFxuICAgIG5ld01lc3NhZ2VzOiAnTmV3IG1lc3NhZ2VzJyxcbiAgfSxcbn07XG5cbnR5cGUgQ2hhdFJvdyA9XG4gIHwgeyBraW5kOiAnZGF0ZSc7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVxuICB8IHtcbiAgICAgIGtpbmQ6ICdtc2cnO1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIG1zZzogTWVzc2FnZUJ1YmJsZU1ldGFkYXRhO1xuICAgICAgc2hvd05hbWU6IGJvb2xlYW47XG4gICAgICBzaG93QXZhdGFyOiBib29sZWFuO1xuICAgICAgdGFpbDogYm9vbGVhbjtcbiAgICB9O1xuXG4vKipcbiAqIHZhbC1jaGF0LXdpbmRvdyDigJQgdmVudGFuYSBkZSBjaGF0IGNvbXBsZXRhIChzaWduYWwgaW5wdXRzKS5cbiAqXG4gKiBBZ3J1cGEgbWVuc2FqZXMgY29uc2VjdXRpdm9zIGRlbCBtaXNtbyBlbWlzb3IgeSBwb3IgZMOtYSAoc2VwYXJhZG9yZXMgc3RpY2t5KSxcbiAqIG11ZXN0cmEgYXZhdGFyL25vbWJyZSBzb2xvIGVuIGxvcyBib3JkZXMgZGVsIGdydXBvLCBzY3JvbGwtdG8tYm90dG9tIGludGVsaWdlbnRlXG4gKiAoYXV0by1zY3JvbGwgc2kgZXN0w6FzIGFiYWpvLCBwaWxsIFwibWVuc2FqZXMgbnVldm9zXCIgc2kgZXN0w6FzIGxleWVuZG8gYXJyaWJhKSxcbiAqIGNvbXBvc2VyIG1vZGVybm8gY29uIGNvbnRleHRvIGRlIHJlc3B1ZXN0YSwgeSB0eXBpbmcgaW5kaWNhdG9yLlxuICpcbiAqIEFQSSBww7pibGljYSBlc3RhYmxlIChjb25zdW1pZGEgcG9yIHRocmVhZC1wYW5lbCB5IHNob3djYXNlKTogaW5wdXRzIGNvbnZJZCxcbiAqIG1lc3NhZ2VzLCBjdXJyZW50VXNlcklkLCBpc09wZW4sIHR5cGluZ1VzZXJzLCBpc0xvYWRpbmc7IG91dHB1dHMgc2VuZE1lc3NhZ2UsXG4gKiBsb2FkTW9yZSwgcmVhY3Rpb25DbGljaywgZGVsZXRlTWVzc2FnZSwgcmVwbHlUbyAoKyBlZGl0TWVzc2FnZS9hdHRhY2gvdm9pY2UgbnVldm9zKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYXQtd2luZG93JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbiwgTWVzc2FnZUJ1YmJsZUNvbXBvbmVudCwgQ2hhdENvbXBvc2VyQ29tcG9uZW50LCBUeXBpbmdJbmRpY2F0b3JDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjaGF0XCI+XG4gICAgICA8ZGl2ICNtc2dzIGNsYXNzPVwibWVzc2FnZXNcIiAoc2Nyb2xsKT1cIm9uU2Nyb2xsKClcIj5cbiAgICAgICAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0ZVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgdCgnbG9hZGluZycpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChyb3dzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXRlIGVtcHR5XCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoYXRidWJibGVzLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgPHNwYW4+e3sgdCgnbm9NZXNzYWdlcycpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICBAZm9yIChyb3cgb2Ygcm93cygpOyB0cmFjayByb3cuaWQpIHtcbiAgICAgICAgICAgIEBpZiAocm93LmtpbmQgPT09ICdkYXRlJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1zZXBcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByb3cubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDx2YWwtbWVzc2FnZS1idWJibGVcbiAgICAgICAgICAgICAgICBbbXNnXT1cInJvdy5tc2dcIlxuICAgICAgICAgICAgICAgIFtzaG93TmFtZV09XCJyb3cuc2hvd05hbWVcIlxuICAgICAgICAgICAgICAgIFtzaG93QXZhdGFyXT1cInJvdy5zaG93QXZhdGFyXCJcbiAgICAgICAgICAgICAgICBbdGFpbF09XCJyb3cudGFpbFwiXG4gICAgICAgICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGUoKVwiXG4gICAgICAgICAgICAgICAgKGFjdGlvbik9XCJvbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPHZhbC10eXBpbmctaW5kaWNhdG9yIFt0eXBpbmdVc2Vyc109XCJ0eXBpbmdVc2VycygpXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKCFhdEJvdHRvbSgpKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJzY3JvbGwtZG93blwiIChjbGljayk9XCJzY3JvbGxUb0JvdHRvbSh0cnVlKVwiIGFyaWEtbGFiZWw9XCJzY3JvbGxcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LWRvd24tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgQGlmIChoYXNOZXcoKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChpc09wZW4oKSkge1xuICAgICAgICA8dmFsLWNoYXQtY29tcG9zZXJcbiAgICAgICAgICBbcmVwbHlpbmdUb109XCJyZXBseWluZ1RvKClcIlxuICAgICAgICAgIChzZW5kKT1cIm9uU2VuZCgkZXZlbnQpXCJcbiAgICAgICAgICAodHlwaW5nKT1cInR5cGluZy5lbWl0KClcIlxuICAgICAgICAgIChhdHRhY2gpPVwiYXR0YWNoLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgKHZvaWNlKT1cInZvaWNlLmVtaXQoKVwiXG4gICAgICAgICAgKGNhbmNlbFJlcGx5KT1cInJlcGx5aW5nVG8uc2V0KG51bGwpXCJcbiAgICAgICAgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2VkLWJhbm5lclwiPnt7IHQoJ2NvbnZlcnNhdGlvbkNsb3NlZCcpIH19PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAgIC5jaGF0IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICB9XG4gICAgICAubWVzc2FnZXMge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDA7XG4gICAgICB9XG4gICAgICAuc3RhdGUge1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDI0cHg7XG4gICAgICB9XG4gICAgICAuc3RhdGUuZW1wdHkgaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDIuNXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgfVxuICAgICAgLmRhdGUtc2VwIHtcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgdG9wOiA0cHg7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDhweCAwO1xuICAgICAgfVxuICAgICAgLmRhdGUtc2VwIHNwYW4ge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTQpKTtcbiAgICAgICAgcGFkZGluZzogM3B4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgICAgIH1cbiAgICAgIC5zY3JvbGwtZG93biB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDE0cHg7XG4gICAgICAgIGJvdHRvbTogODRweDtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgIH1cbiAgICAgIC5zY3JvbGwtZG93biAuZG90IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZik7XG4gICAgICB9XG4gICAgICAuY2xvc2VkLWJhbm5lciB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdFdpbmRvd0NvbXBvbmVudCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgY29udklkID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IG1lc3NhZ2VzID0gaW5wdXQ8TWVzc2FnZUJ1YmJsZU1ldGFkYXRhW10+KFtdKTtcbiAgcmVhZG9ubHkgY3VycmVudFVzZXJJZCA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBpc09wZW4gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgdHlwaW5nVXNlcnMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgc2VuZE1lc3NhZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBsb2FkTW9yZSA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSByZWFjdGlvbkNsaWNrID0gb3V0cHV0PHsgbXNnSWQ6IHN0cmluZzsgdG9rZW46IHN0cmluZyB9PigpO1xuICByZWFkb25seSBkZWxldGVNZXNzYWdlID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgcmVwbHlUbyA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGVkaXRNZXNzYWdlID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdHlwaW5nID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGF0dGFjaCA9IG91dHB1dDxGaWxlPigpO1xuICByZWFkb25seSB2b2ljZSA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbXNnc0VsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PignbXNncycpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSByZXBseWluZ1RvID0gc2lnbmFsPE1lc3NhZ2VSZXBseVRvIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBhdEJvdHRvbSA9IHNpZ25hbCh0cnVlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc05ldyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvY2FsZSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmkxOG4ubGFuZygpID09PSAnZW4nID8gJ2VuLVVTJyA6ICdlcy1DTCcpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnQ2hhdFdpbmRvdycsIENIQVRfV0lORE9XX0kxOE4pO1xuXG4gICAgLy8gQXV0by1zY3JvbGwgYWwgZm9uZG8gY3VhbmRvIGxsZWdhbiBtZW5zYWplcyB5IGVsIHVzdWFyaW8geWEgZXN0YWJhIGFiYWpvXG4gICAgLy8gKG8gZWwgw7psdGltbyBtZW5zYWplIGVzIHByb3BpbykuIFNpIGVzdMOhIGxleWVuZG8gYXJyaWJhLCBtYXJjYSBcIm51ZXZvc1wiLlxuICAgIGxldCBwcmV2Q291bnQgPSAwO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7XG4gICAgICBjb25zdCBjb3VudCA9IHJvd3MubGVuZ3RoO1xuICAgICAgaWYgKGNvdW50ID09PSBwcmV2Q291bnQpIHJldHVybjtcbiAgICAgIGNvbnN0IGdyZXcgPSBjb3VudCA+IHByZXZDb3VudDtcbiAgICAgIHByZXZDb3VudCA9IGNvdW50O1xuICAgICAgY29uc3QgbGFzdCA9IHRoaXMubWVzc2FnZXMoKVt0aGlzLm1lc3NhZ2VzKCkubGVuZ3RoIC0gMV07XG4gICAgICBjb25zdCBtaW5lID0gbGFzdD8uaXNNaW5lID8/IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuYXRCb3R0b20oKSB8fCBtaW5lKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb0JvdHRvbShmYWxzZSksIDApO1xuICAgICAgfSBlbHNlIGlmIChncmV3KSB7XG4gICAgICAgIHRoaXMuaGFzTmV3LnNldCh0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSByb3dzID0gY29tcHV0ZWQ8Q2hhdFJvd1tdPigoKSA9PiB7XG4gICAgY29uc3QgbXNncyA9IHRoaXMubWVzc2FnZXMoKTtcbiAgICBpZiAobXNncy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB7XG4gICAgICB0b2RheTogdGhpcy5pMThuLnQoJ3RvZGF5JywgJ19nbG9iYWwnKSxcbiAgICAgIHllc3RlcmRheTogdGhpcy5pMThuLnQoJ3llc3RlcmRheScsICdfZ2xvYmFsJyksXG4gICAgfTtcbiAgICBjb25zdCBvdXQ6IENoYXRSb3dbXSA9IFtdO1xuICAgIGxldCBwcmV2RGF5ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtc2dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBtID0gbXNnc1tpXTtcbiAgICAgIGNvbnN0IGQgPSBtLmNyZWF0ZWRBdCBpbnN0YW5jZW9mIERhdGUgPyBtLmNyZWF0ZWRBdCA6IG5ldyBEYXRlKG0uY3JlYXRlZEF0KTtcbiAgICAgIGNvbnN0IGRheSA9IGAke2QuZ2V0RnVsbFllYXIoKX0tJHtkLmdldE1vbnRoKCl9LSR7ZC5nZXREYXRlKCl9YDtcbiAgICAgIGNvbnN0IG5ld0RheSA9IGRheSAhPT0gcHJldkRheTtcbiAgICAgIGlmIChuZXdEYXkpIHtcbiAgICAgICAgb3V0LnB1c2goeyBraW5kOiAnZGF0ZScsIGlkOiAnZGF0ZS0nICsgZGF5LCBsYWJlbDogZm9ybWF0RGF0ZVNlcGFyYXRvcihkLCB0aGlzLmxvY2FsZSgpLCBsYWJlbHMpIH0pO1xuICAgICAgICBwcmV2RGF5ID0gZGF5O1xuICAgICAgfVxuICAgICAgY29uc3QgcHJldiA9IG1zZ3NbaSAtIDFdO1xuICAgICAgY29uc3QgbmV4dCA9IG1zZ3NbaSArIDFdO1xuICAgICAgY29uc3QgZmlyc3RJbkdyb3VwID0gbmV3RGF5IHx8ICFwcmV2IHx8IHByZXYuc2VuZGVySWQgIT09IG0uc2VuZGVySWQ7XG4gICAgICBjb25zdCBuZXh0RGF5ID0gbmV4dFxuICAgICAgICA/IGAke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXRGdWxsWWVhcigpfS0ke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXRNb250aCgpfS0ke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXREYXRlKCl9YFxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3QgbGFzdEluR3JvdXAgPSAhbmV4dCB8fCBuZXh0LnNlbmRlcklkICE9PSBtLnNlbmRlcklkIHx8IG5leHREYXkgIT09IGRheTtcbiAgICAgIG91dC5wdXNoKHtcbiAgICAgICAga2luZDogJ21zZycsXG4gICAgICAgIGlkOiBtLm1zZ0lkLFxuICAgICAgICBtc2c6IG0sXG4gICAgICAgIHNob3dOYW1lOiBmaXJzdEluR3JvdXAgJiYgIW0uaXNNaW5lLFxuICAgICAgICBzaG93QXZhdGFyOiBsYXN0SW5Hcm91cCAmJiAhbS5pc01pbmUsXG4gICAgICAgIHRhaWw6IGxhc3RJbkdyb3VwLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBvblNjcm9sbCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMubXNnc0VsKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGNvbnN0IG5lYXJCb3R0b20gPSBlbC5zY3JvbGxIZWlnaHQgLSBlbC5zY3JvbGxUb3AgLSBlbC5jbGllbnRIZWlnaHQgPCA4MDtcbiAgICB0aGlzLmF0Qm90dG9tLnNldChuZWFyQm90dG9tKTtcbiAgICBpZiAobmVhckJvdHRvbSkgdGhpcy5oYXNOZXcuc2V0KGZhbHNlKTtcbiAgICBpZiAoZWwuc2Nyb2xsVG9wIDwgNDApIHRoaXMubG9hZE1vcmUuZW1pdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNjcm9sbFRvQm90dG9tKHNtb290aDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5tc2dzRWwoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgZWwuc2Nyb2xsVG8oeyB0b3A6IGVsLnNjcm9sbEhlaWdodCwgYmVoYXZpb3I6IHNtb290aCA/ICdzbW9vdGgnIDogJ2F1dG8nIH0pO1xuICAgIHRoaXMuYXRCb3R0b20uc2V0KHRydWUpO1xuICAgIHRoaXMuaGFzTmV3LnNldChmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25TZW5kKGJvZHk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE1lc3NhZ2UuZW1pdChib2R5KTtcbiAgICB0aGlzLnJlcGx5aW5nVG8uc2V0KG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQWN0aW9uKGV2ZW50OiBNZXNzYWdlQnViYmxlQWN0aW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdyZXBseSc6IHtcbiAgICAgICAgY29uc3QgbSA9IHRoaXMubWVzc2FnZXMoKS5maW5kKHggPT4geC5tc2dJZCA9PT0gZXZlbnQubXNnSWQpO1xuICAgICAgICBpZiAobSkge1xuICAgICAgICAgIHRoaXMucmVwbHlpbmdUby5zZXQoeyBtc2dJZDogbS5tc2dJZCwgc2VuZGVyTmFtZTogbS5zZW5kZXJOYW1lLCBib2R5OiBtLmJvZHkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXBseVRvLmVtaXQoZXZlbnQubXNnSWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2VkaXQnOlxuICAgICAgICB0aGlzLmVkaXRNZXNzYWdlLmVtaXQoZXZlbnQubXNnSWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIHRoaXMuZGVsZXRlTWVzc2FnZS5lbWl0KGV2ZW50Lm1zZ0lkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZWFjdCc6XG4gICAgICAgIHRoaXMucmVhY3Rpb25DbGljay5lbWl0KHsgbXNnSWQ6IGV2ZW50Lm1zZ0lkLCB0b2tlbjogZXZlbnQudG9rZW4gPz8gJ/CfkY0nIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnQ2hhdFdpbmRvdycpO1xuICB9XG59XG4iXX0=
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aW5kb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jaGF0LXdpbmRvdy9jaGF0LXdpbmRvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQXVCLE1BQU0seURBQXlELENBQUM7QUFFdEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkRBQTZELENBQUM7O0FBRXZHLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztBQUVuRCxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLEVBQUUsRUFBRTtRQUNGLGtCQUFrQixFQUFFLGdDQUFnQztRQUNwRCxPQUFPLEVBQUUsc0JBQXNCO1FBQy9CLFVBQVUsRUFBRSwwQ0FBMEM7UUFDdEQsV0FBVyxFQUFFLGlCQUFpQjtLQUMvQjtJ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Q0FBQztJQUN4QyxDQUFDOytHQXJJVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwrckNBbkpwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVEVCw4Z0RBeERTLFlBQVksK0JBQUUsT0FBTywySkFBRSxzQkFBc0IsaUpBQUUscUJBQXFCLG1PQUFFLHdCQUF3Qjs7NEZBb0o3RixtQkFBbUI7a0JBdkovQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLENBQUMsWUFDL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1RFQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFycm93RG93bk91dGxpbmUsIGNoYXRidWJibGVzT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IGZvcm1hdERhdGVTZXBhcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgTWVzc2FnZVJlcGx5VG8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGF0L3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVDb21wb25lbnQsIE1lc3NhZ2VCdWJibGVBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbWVzc2FnZS1idWJibGUvbWVzc2FnZS1idWJibGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS90eXBlcyc7XG5pbXBvcnQgeyBDaGF0Q29tcG9zZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY2hhdC1jb21wb3Nlci9jaGF0LWNvbXBvc2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUeXBpbmdJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvdHlwaW5nLWluZGljYXRvci90eXBpbmctaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5cbmFkZEljb25zKHsgYXJyb3dEb3duT3V0bGluZSwgY2hhdGJ1YmJsZXNPdXRsaW5lIH0pO1xuXG5jb25zdCBDSEFUX1dJTkRPV19JMThOID0ge1xuICBlczoge1xuICAgIGNvbnZlcnNhdGlvbkNsb3NlZDogJ0VzdGEgY29udmVyc2FjaW9uIGVzdGEgY2VycmFkYScsXG4gICAgbG9hZGluZzogJ0NhcmdhbmRvIG1lbnNhamVzLi4uJyxcbiAgICBub01lc3NhZ2VzOiAnQXVuIG5vIGhheSBtZW5zYWplcy4gRXNjcmliZSBlbCBwcmltZXJvLicsXG4gICAgbmV3TWVzc2FnZXM6ICdNZW5zYWplcyBudWV2b3MnLFxuICB9LFxuICBlbjoge1xuICAgIGNvbnZlcnNhdGlvbkNsb3NlZDogJ1RoaXMgY29udmVyc2F0aW9uIGlzIGNsb3NlZCcsXG4gICAgbG9hZGluZzogJ0xvYWRpbmcgbWVzc2FnZXMuLi4nLFxuICAgIG5vTWVzc2FnZXM6ICdObyBtZXNzYWdlcyB5ZXQuIFNlbmQgdGhlIGZpcnN0IG9uZS4nLFxuICAgIG5ld01lc3NhZ2VzOiAnTmV3IG1lc3NhZ2VzJyxcbiAgfSxcbn07XG5cbnR5cGUgQ2hhdFJvdyA9XG4gIHwgeyBraW5kOiAnZGF0ZSc7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVxuICB8IHtcbiAgICAgIGtpbmQ6ICdtc2cnO1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIG1zZzogTWVzc2FnZUJ1YmJsZU1ldGFkYXRhO1xuICAgICAgc2hvd05hbWU6IGJvb2xlYW47XG4gICAgICBzaG93QXZhdGFyOiBib29sZWFuO1xuICAgICAgdGFpbDogYm9vbGVhbjtcbiAgICB9O1xuXG4vKipcbiAqIHZhbC1jaGF0LXdpbmRvdyDigJQgdmVudGFuYSBkZSBjaGF0IGNvbXBsZXRhIChzaWduYWwgaW5wdXRzKS5cbiAqXG4gKiBBZ3J1cGEgbWVuc2FqZXMgY29uc2VjdXRpdm9zIGRlbCBtaXNtbyBlbWlzb3IgeSBwb3IgZMOtYSAoc2VwYXJhZG9yZXMgc3RpY2t5KSxcbiAqIG11ZXN0cmEgYXZhdGFyL25vbWJyZSBzb2xvIGVuIGxvcyBib3JkZXMgZGVsIGdydXBvLCBzY3JvbGwtdG8tYm90dG9tIGludGVsaWdlbnRlXG4gKiAoYXV0by1zY3JvbGwgc2kgZXN0w6FzIGFiYWpvLCBwaWxsIFwibWVuc2FqZXMgbnVldm9zXCIgc2kgZXN0w6FzIGxleWVuZG8gYXJyaWJhKSxcbiAqIGNvbXBvc2VyIG1vZGVybm8gY29uIGNvbnRleHRvIGRlIHJlc3B1ZXN0YSwgeSB0eXBpbmcgaW5kaWNhdG9yLlxuICpcbiAqIEFQSSBww7pibGljYSBlc3RhYmxlIChjb25zdW1pZGEgcG9yIHRocmVhZC1wYW5lbCB5IHNob3djYXNlKTogaW5wdXRzIGNvbnZJZCxcbiAqIG1lc3NhZ2VzLCBjdXJyZW50VXNlcklkLCBpc09wZW4sIHR5cGluZ1VzZXJzLCBpc0xvYWRpbmc7IG91dHB1dHMgc2VuZE1lc3NhZ2UsXG4gKiBsb2FkTW9yZSwgcmVhY3Rpb25DbGljaywgZGVsZXRlTWVzc2FnZSwgcmVwbHlUbyAoKyBlZGl0TWVzc2FnZS9hdHRhY2gvdm9pY2UgbnVldm9zKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYXQtd2luZG93JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbiwgTWVzc2FnZUJ1YmJsZUNvbXBvbmVudCwgQ2hhdENvbXBvc2VyQ29tcG9uZW50LCBUeXBpbmdJbmRpY2F0b3JDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjaGF0XCI+XG4gICAgICA8ZGl2ICNtc2dzIGNsYXNzPVwibWVzc2FnZXNcIiAoc2Nyb2xsKT1cIm9uU2Nyb2xsKClcIj5cbiAgICAgICAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0ZVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgdCgnbG9hZGluZycpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChyb3dzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXRlIGVtcHR5XCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoYXRidWJibGVzLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgPHNwYW4+e3sgdCgnbm9NZXNzYWdlcycpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICBAZm9yIChyb3cgb2Ygcm93cygpOyB0cmFjayByb3cuaWQpIHtcbiAgICAgICAgICAgIEBpZiAocm93LmtpbmQgPT09ICdkYXRlJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1zZXBcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByb3cubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDx2YWwtbWVzc2FnZS1idWJibGVcbiAgICAgICAgICAgICAgICBbbXNnXT1cInJvdy5tc2dcIlxuICAgICAgICAgICAgICAgIFtzaG93TmFtZV09XCJyb3cuc2hvd05hbWVcIlxuICAgICAgICAgICAgICAgIFtzaG93QXZhdGFyXT1cInJvdy5zaG93QXZhdGFyXCJcbiAgICAgICAgICAgICAgICBbdGFpbF09XCJyb3cudGFpbFwiXG4gICAgICAgICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGUoKVwiXG4gICAgICAgICAgICAgICAgKGFjdGlvbik9XCJvbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPHZhbC10eXBpbmctaW5kaWNhdG9yIFt0eXBpbmdVc2Vyc109XCJ0eXBpbmdVc2VycygpXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKCFhdEJvdHRvbSgpKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJzY3JvbGwtZG93blwiIChjbGljayk9XCJzY3JvbGxUb0JvdHRvbSh0cnVlKVwiIGFyaWEtbGFiZWw9XCJzY3JvbGxcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LWRvd24tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgQGlmIChoYXNOZXcoKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChpc09wZW4oKSkge1xuICAgICAgICA8dmFsLWNoYXQtY29tcG9zZXJcbiAgICAgICAgICBbcmVwbHlpbmdUb109XCJyZXBseWluZ1RvKClcIlxuICAgICAgICAgIChzZW5kKT1cIm9uU2VuZCgkZXZlbnQpXCJcbiAgICAgICAgICAodHlwaW5nKT1cInR5cGluZy5lbWl0KClcIlxuICAgICAgICAgIChhdHRhY2gpPVwiYXR0YWNoLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgKHZvaWNlKT1cInZvaWNlLmVtaXQoKVwiXG4gICAgICAgICAgKGNhbmNlbFJlcGx5KT1cInJlcGx5aW5nVG8uc2V0KG51bGwpXCJcbiAgICAgICAgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2VkLWJhbm5lclwiPnt7IHQoJ2NvbnZlcnNhdGlvbkNsb3NlZCcpIH19PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAgIC5jaGF0IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICB9XG4gICAgICAubWVzc2FnZXMge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDA7XG4gICAgICB9XG4gICAgICAuc3RhdGUge1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDI0cHg7XG4gICAgICB9XG4gICAgICAuc3RhdGUuZW1wdHkgaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDIuNXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgfVxuICAgICAgLmRhdGUtc2VwIHtcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgdG9wOiA0cHg7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDhweCAwO1xuICAgICAgfVxuICAgICAgLmRhdGUtc2VwIHNwYW4ge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTQpKTtcbiAgICAgICAgcGFkZGluZzogM3B4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgICAgIH1cbiAgICAgIC5zY3JvbGwtZG93biB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDE0cHg7XG4gICAgICAgIGJvdHRvbTogODRweDtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgIH1cbiAgICAgIC5zY3JvbGwtZG93biAuZG90IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZik7XG4gICAgICB9XG4gICAgICAuY2xvc2VkLWJhbm5lciB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdFdpbmRvd0NvbXBvbmVudCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgY29udklkID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IG1lc3NhZ2VzID0gaW5wdXQ8TWVzc2FnZUJ1YmJsZU1ldGFkYXRhW10+KFtdKTtcbiAgcmVhZG9ubHkgY3VycmVudFVzZXJJZCA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBpc09wZW4gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgdHlwaW5nVXNlcnMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgc2VuZE1lc3NhZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBsb2FkTW9yZSA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSByZWFjdGlvbkNsaWNrID0gb3V0cHV0PHsgbXNnSWQ6IHN0cmluZzsgdG9rZW46IHN0cmluZyB9PigpO1xuICByZWFkb25seSBkZWxldGVNZXNzYWdlID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgcmVwbHlUbyA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGVkaXRNZXNzYWdlID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdHlwaW5nID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGF0dGFjaCA9IG91dHB1dDxGaWxlPigpO1xuICByZWFkb25seSB2b2ljZSA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbXNnc0VsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PignbXNncycpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSByZXBseWluZ1RvID0gc2lnbmFsPE1lc3NhZ2VSZXBseVRvIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBhdEJvdHRvbSA9IHNpZ25hbCh0cnVlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc05ldyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvY2FsZSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmkxOG4ubGFuZygpID09PSAnZW4nID8gJ2VuLVVTJyA6ICdlcy1DTCcpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnQ2hhdFdpbmRvdycsIENIQVRfV0lORE9XX0kxOE4pO1xuXG4gICAgLy8gQXV0by1zY3JvbGwgYWwgZm9uZG8gY3VhbmRvIGxsZWdhbiBtZW5zYWplcyB5IGVsIHVzdWFyaW8geWEgZXN0YWJhIGFiYWpvXG4gICAgLy8gKG8gZWwgw7psdGltbyBtZW5zYWplIGVzIHByb3BpbykuIFNpIGVzdMOhIGxleWVuZG8gYXJyaWJhLCBtYXJjYSBcIm51ZXZvc1wiLlxuICAgIGxldCBwcmV2Q291bnQgPSAwO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7XG4gICAgICBjb25zdCBjb3VudCA9IHJvd3MubGVuZ3RoO1xuICAgICAgaWYgKGNvdW50ID09PSBwcmV2Q291bnQpIHJldHVybjtcbiAgICAgIGNvbnN0IGdyZXcgPSBjb3VudCA+IHByZXZDb3VudDtcbiAgICAgIHByZXZDb3VudCA9IGNvdW50O1xuICAgICAgY29uc3QgbGFzdCA9IHRoaXMubWVzc2FnZXMoKVt0aGlzLm1lc3NhZ2VzKCkubGVuZ3RoIC0gMV07XG4gICAgICBjb25zdCBtaW5lID0gbGFzdD8uaXNNaW5lID8/IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuYXRCb3R0b20oKSB8fCBtaW5lKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb0JvdHRvbShmYWxzZSksIDApO1xuICAgICAgfSBlbHNlIGlmIChncmV3KSB7XG4gICAgICAgIHRoaXMuaGFzTmV3LnNldCh0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSByb3dzID0gY29tcHV0ZWQ8Q2hhdFJvd1tdPigoKSA9PiB7XG4gICAgY29uc3QgbXNncyA9IHRoaXMubWVzc2FnZXMoKTtcbiAgICBpZiAobXNncy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB7XG4gICAgICB0b2RheTogdGhpcy5pMThuLnQoJ3RvZGF5JywgJ19nbG9iYWwnKSxcbiAgICAgIHllc3RlcmRheTogdGhpcy5pMThuLnQoJ3llc3RlcmRheScsICdfZ2xvYmFsJyksXG4gICAgfTtcbiAgICBjb25zdCBvdXQ6IENoYXRSb3dbXSA9IFtdO1xuICAgIGxldCBwcmV2RGF5ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtc2dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBtID0gbXNnc1tpXTtcbiAgICAgIGNvbnN0IGQgPSBtLmNyZWF0ZWRBdCBpbnN0YW5jZW9mIERhdGUgPyBtLmNyZWF0ZWRBdCA6IG5ldyBEYXRlKG0uY3JlYXRlZEF0KTtcbiAgICAgIGNvbnN0IGRheSA9IGAke2QuZ2V0RnVsbFllYXIoKX0tJHtkLmdldE1vbnRoKCl9LSR7ZC5nZXREYXRlKCl9YDtcbiAgICAgIGNvbnN0IG5ld0RheSA9IGRheSAhPT0gcHJldkRheTtcbiAgICAgIGlmIChuZXdEYXkpIHtcbiAgICAgICAgb3V0LnB1c2goeyBraW5kOiAnZGF0ZScsIGlkOiAnZGF0ZS0nICsgZGF5LCBsYWJlbDogZm9ybWF0RGF0ZVNlcGFyYXRvcihkLCB0aGlzLmxvY2FsZSgpLCBsYWJlbHMpIH0pO1xuICAgICAgICBwcmV2RGF5ID0gZGF5O1xuICAgICAgfVxuICAgICAgY29uc3QgcHJldiA9IG1zZ3NbaSAtIDFdO1xuICAgICAgY29uc3QgbmV4dCA9IG1zZ3NbaSArIDFdO1xuICAgICAgY29uc3QgZmlyc3RJbkdyb3VwID0gbmV3RGF5IHx8ICFwcmV2IHx8IHByZXYuc2VuZGVySWQgIT09IG0uc2VuZGVySWQ7XG4gICAgICBjb25zdCBuZXh0RGF5ID0gbmV4dFxuICAgICAgICA/IGAke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXRGdWxsWWVhcigpfS0ke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXRNb250aCgpfS0ke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXREYXRlKCl9YFxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3QgbGFzdEluR3JvdXAgPSAhbmV4dCB8fCBuZXh0LnNlbmRlcklkICE9PSBtLnNlbmRlcklkIHx8IG5leHREYXkgIT09IGRheTtcbiAgICAgIG91dC5wdXNoKHtcbiAgICAgICAga2luZDogJ21zZycsXG4gICAgICAgIGlkOiBtLm1zZ0lkLFxuICAgICAgICBtc2c6IG0sXG4gICAgICAgIHNob3dOYW1lOiBmaXJzdEluR3JvdXAgJiYgIW0uaXNNaW5lLFxuICAgICAgICBzaG93QXZhdGFyOiBsYXN0SW5Hcm91cCAmJiAhbS5pc01pbmUsXG4gICAgICAgIHRhaWw6IGxhc3RJbkdyb3VwLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBvblNjcm9sbCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMubXNnc0VsKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGNvbnN0IG5lYXJCb3R0b20gPSBlbC5zY3JvbGxIZWlnaHQgLSBlbC5zY3JvbGxUb3AgLSBlbC5jbGllbnRIZWlnaHQgPCA4MDtcbiAgICB0aGlzLmF0Qm90dG9tLnNldChuZWFyQm90dG9tKTtcbiAgICBpZiAobmVhckJvdHRvbSkgdGhpcy5oYXNOZXcuc2V0KGZhbHNlKTtcbiAgICBpZiAoZWwuc2Nyb2xsVG9wIDwgNDApIHRoaXMubG9hZE1vcmUuZW1pdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNjcm9sbFRvQm90dG9tKHNtb290aDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5tc2dzRWwoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgZWwuc2Nyb2xsVG8oeyB0b3A6IGVsLnNjcm9sbEhlaWdodCwgYmVoYXZpb3I6IHNtb290aCA/ICdzbW9vdGgnIDogJ2F1dG8nIH0pO1xuICAgIHRoaXMuYXRCb3R0b20uc2V0KHRydWUpO1xuICAgIHRoaXMuaGFzTmV3LnNldChmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25TZW5kKGJvZHk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE1lc3NhZ2UuZW1pdChib2R5KTtcbiAgICB0aGlzLnJlcGx5aW5nVG8uc2V0KG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQWN0aW9uKGV2ZW50OiBNZXNzYWdlQnViYmxlQWN0aW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdyZXBseSc6IHtcbiAgICAgICAgY29uc3QgbSA9IHRoaXMubWVzc2FnZXMoKS5maW5kKHggPT4geC5tc2dJZCA9PT0gZXZlbnQubXNnSWQpO1xuICAgICAgICBpZiAobSkge1xuICAgICAgICAgIHRoaXMucmVwbHlpbmdUby5zZXQoeyBtc2dJZDogbS5tc2dJZCwgc2VuZGVyTmFtZTogbS5zZW5kZXJOYW1lLCBib2R5OiBtLmJvZHkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXBseVRvLmVtaXQoZXZlbnQubXNnSWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2VkaXQnOlxuICAgICAgICB0aGlzLmVkaXRNZXNzYWdlLmVtaXQoZXZlbnQubXNnSWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIHRoaXMuZGVsZXRlTWVzc2FnZS5lbWl0KGV2ZW50Lm1zZ0lkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZWFjdCc6XG4gICAgICAgIHRoaXMucmVhY3Rpb25DbGljay5lbWl0KHsgbXNnSWQ6IGV2ZW50Lm1zZ0lkLCB0b2tlbjogZXZlbnQudG9rZW4gPz8gJ/CfkY0nIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnQ2hhdFdpbmRvdycpO1xuICB9XG59XG4iXX0=
|
|
@@ -122,21 +122,10 @@ export class ConversationService {
|
|
|
122
122
|
return this.http.delete(`${this.baseUrl}/conversations/${convId}/participants/${userId}`);
|
|
123
123
|
}
|
|
124
124
|
/**
|
|
125
|
-
* Envia un mensaje a una conversacion
|
|
126
|
-
* El backend espera `attachments: { url, type, name, size }[]` (key `type` = MIME),
|
|
127
|
-
* mientras que el front usa `mimeType` — se mapea aqui.
|
|
125
|
+
* Envia un mensaje a una conversacion.
|
|
128
126
|
*/
|
|
129
|
-
sendMessage(convId, body
|
|
130
|
-
|
|
131
|
-
if (attachments?.length) {
|
|
132
|
-
payload['attachments'] = attachments.map(a => ({
|
|
133
|
-
url: a.url,
|
|
134
|
-
type: a.mimeType,
|
|
135
|
-
name: a.name,
|
|
136
|
-
size: a.size ?? 0,
|
|
137
|
-
}));
|
|
138
|
-
}
|
|
139
|
-
return this.http.post(`${this.baseUrl}/conversations/${convId}/messages`, payload);
|
|
127
|
+
sendMessage(convId, body) {
|
|
128
|
+
return this.http.post(`${this.baseUrl}/conversations/${convId}/messages`, { body });
|
|
140
129
|
}
|
|
141
130
|
/**
|
|
142
131
|
* Elimina (marca como eliminado) un mensaje.
|
|
@@ -294,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
294
283
|
type: Injectable,
|
|
295
284
|
args: [{ providedIn: 'root' }]
|
|
296
285
|
}], ctorParameters: () => [] });
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2NoYXQvY29udmVyc2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVkvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFakU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCO1FBTFEsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUd4RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lB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QUN0Qix5RUFBeUU7UUFDekUsSUFBSSxPQUFPLGNBQWMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUUsSUFBSSxHQUFHO2dCQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBblRVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2VydmVyVGltZXN0YW1wLCBkZWxldGVEb2MsIGRvYywgc2V0RG9jLCB1cGRhdGVEb2MgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5cbmltcG9ydCB7IFZBTFRFQ0hfQ0hBVF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge1xuICBDb252ZXJzYXRpb24sXG4gIENvbnZlcnNhdGlvblJlc3BvbnNlLFxuICBDb252ZXJzYXRpb25UeXBlLFxuICBDcmVhdGVDb252ZXJzYXRpb25SZXF1ZXN0LFxuICBMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlLFxuICBNZXNzYWdlLFxuICBNZXNzYWdlQXR0YWNobWVudCxcbiAgVXBkYXRlQ29udmVyc2F0aW9uUmVxdWVzdCxcbiAgVHlwaW5nRG9jdW1lbnQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRmlyZXN0b3JlU2VydmljZSB9IGZyb20gJy4uL2ZpcmViYXNlL2ZpcmVzdG9yZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBDb252ZXJzYXRpb25TZXJ2aWNlXG4gKlxuICogR2VzdGlvbmEgY29udmVyc2FjaW9uZXMgeSBtZW5zYWplcyBkZWwgY2hhdC5cbiAqXG4gKiBEb3MgY2FwYXM6XG4gKiAgIC0gSFRUUCAodmlhIGJhY2tlbmQgL3YyL2NoYXQvKik6IG9wZXJhY2lvbmVzIGRlIGVzY3JpdHVyYSB5IGNvbnN1bHRhLlxuICogICAtIEZpcmVzdG9yZSByZWFsLXRpbWUgKGRpcmVjdGEpOiBlc2N1Y2hhIG1lbnNhamVzIHkgZXN0YWRvIGRlIGVzY3JpdHVyYS5cbiAqXG4gKiBQYXRocyBGaXJlc3RvcmU6XG4gKiAgIC9hcHBzL3thcHBJZH0vb3Jncy97b3JnSWR9L2NvbnZlcnNhdGlvbnMve2NvbnZJZH0vbWVzc2FnZXMve21zZ0lkfVxuICogICAvYXBwcy97YXBwSWR9L29yZ3Mve29yZ0lkfS9jb252ZXJzYXRpb25zL3tjb252SWR9L3R5cGluZy97dXNlcklkfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFbnZpYXIgeSBlc2N1Y2hhciBtZW5zYWplc1xuICogY29uc3Qgc3ZjID0gaW5qZWN0KENvbnZlcnNhdGlvblNlcnZpY2UpO1xuICpcbiAqIC8vIEVudmlhciAoSFRUUClcbiAqIHN2Yy5zZW5kTWVzc2FnZShjb252SWQsICdIb2xhIScpLnN1YnNjcmliZSgpO1xuICpcbiAqIC8vIEVzY3VjaGFyIGVuIHRpZW1wbyByZWFsIChGaXJlc3RvcmUpXG4gKiBzdmMud2F0Y2hNZXNzYWdlcyhjb252SWQsIG9yZ0lkLCBhcHBJZCkuc3Vic2NyaWJlKG1zZ3MgPT4gdGhpcy5tZXNzYWdlcy5zZXQobXNncykpO1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChWQUxURUNIX0NIQVRfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgZmlyZXN0b3JlU2VydmljZSA9IGluamVjdChGaXJlc3RvcmVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGZpcmVzdG9yZSA9IGluamVjdChGaXJlc3RvcmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnW3ZhbHRlY2gtY29tcG9uZW50c10gQ29udmVyc2F0aW9uU2VydmljZTogcHJvdmlkZVZhbHRlY2hDaGF0KCkgbm8gZXN0YSBlbiBtYWluLnRzLiAnICtcbiAgICAgICAgICAnRWwgY2hhdCBubyBmdW5jaW9uYXJhLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEhUVFAg4oCUIG9wZXJhY2lvbmVzIGRlIGVzY3JpdHVyYSB5IGNvbnN1bHRhIGFsIGJhY2tlbmRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSBnZXQgYmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZz8uYXBpVXJsfSR7dGhpcy5jb25maWc/LmNoYXRQcmVmaXggPz8gJy92Mi9jaGF0J31gO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWEgdW5hIG51ZXZhIGNvbnZlcnNhY2lvbi5cbiAgICogRWwgYmFja2VuZCByZXNwb25kZSBjb24gdW4gZW52ZWxvcGUgeyBvcGVyYXRpb25JZCwgY29udmVyc2F0aW9uIH0g4oCUIGxvXG4gICAqIGRlc2Vudm9sdmVtb3MgcGFyYSBkZXZvbHZlciBsYSBDb252ZXJzYXRpb24gZGlyZWN0YS5cbiAgICovXG4gIGNyZWF0ZUNvbnZlcnNhdGlvbihyZXE6IENyZWF0ZUNvbnZlcnNhdGlvblJlcXVlc3QpOiBPYnNlcnZhYmxlPENvbnZlcnNhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PENvbnZlcnNhdGlvblJlc3BvbnNlPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnNgLCByZXEpXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbyBjcmVhIHVuYSBjb252ZXJzYWNpb24gYXNvY2lhZGEgYSB1bmEgZW50aWRhZCAocG9zdCwgcmVxdWVzdCwgb3JnLCBldGMuKS5cbiAgICogVXNhIGVsIHBhdHJvbiB1cHNlcnQgZGVsIGJhY2tlbmQ6IHNpIHlhIGV4aXN0ZSB1bmEgY29udmVyc2FjaW9uIHBhcmEgZXNhIGVudGlkYWQsXG4gICAqIGxhIGRldnVlbHZlOyBzaSBubywgbGEgY3JlYS5cbiAgICpcbiAgICogRWwgYmFja2VuZCBlc3BlcmEgeyBlbnRpdHlSZWY6IHsgdHlwZSwgaWQgfSwgdHlwZSB9IHkgcmVzcG9uZGUgY29uIHVuIGVudmVsb3BlXG4gICAqIHsgb3BlcmF0aW9uSWQsIGNvbnZlcnNhdGlvbiwgY3JlYXRlZCB9LlxuICAgKi9cbiAgZ2V0T3JDcmVhdGVGb3JFbnRpdHkoXG4gICAgZW50aXR5VHlwZTogc3RyaW5nLFxuICAgIGVudGl0eUlkOiBzdHJpbmcsXG4gICAgdHlwZTogQ29udmVyc2F0aW9uVHlwZSA9ICd0aHJlYWQnXG4gICk6IE9ic2VydmFibGU8Q29udmVyc2F0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8Q29udmVyc2F0aW9uUmVzcG9uc2U+KGAke3RoaXMuYmFzZVVybH0vZW50aXR5LWNvbnZlcnNhdGlvbnNgLCB7XG4gICAgICAgIGVudGl0eVJlZjogeyB0eXBlOiBlbnRpdHlUeXBlLCBpZDogZW50aXR5SWQgfSxcbiAgICAgICAgdHlwZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RhIGxhcyBjb252ZXJzYWNpb25lcyBkZWwgdXN1YXJpbyBhdXRlbnRpY2Fkby5cbiAgICovXG4gIGxpc3RDb252ZXJzYXRpb25zKGN1cnNvcj86IHN0cmluZyk6IE9ic2VydmFibGU8TGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGlmIChjdXJzb3IpIHBhcmFtc1snY3Vyc29yJ10gPSBjdXJzb3I7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zYCwgeyBwYXJhbXMgfSk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSB1bmEgY29udmVyc2FjaW9uIHBvciBJRC5cbiAgICovXG4gIGdldENvbnZlcnNhdGlvbihjb252SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29udmVyc2F0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxDb252ZXJzYXRpb25SZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zLyR7Y29udklkfWApXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdHVhbGl6YSBlbCBub21icmUgbyBzZXR0aW5ncyBkZSB1bmEgY29udmVyc2FjaW9uLlxuICAgKi9cbiAgdXBkYXRlQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nLCByZXE6IFVwZGF0ZUNvbnZlcnNhdGlvblJlcXVlc3QpOiBPYnNlcnZhYmxlPENvbnZlcnNhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wYXRjaDxDb252ZXJzYXRpb25SZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zLyR7Y29udklkfWAsIHJlcSlcbiAgICAgIC5waXBlKG1hcChyID0+IHIuY29udmVyc2F0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQWJyZSB1bmEgY29udmVyc2FjaW9uIGNlcnJhZGEuXG4gICAqL1xuICBvcGVuQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vb3BlbmAsIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaWVycmEgdW5hIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIGNsb3NlQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vY2xvc2VgLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIHVuIHBhcnRpY2lwYW50ZSBhIGxhIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIGFkZFBhcnRpY2lwYW50KGNvbnZJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx2b2lkPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnMvJHtjb252SWR9L3BhcnRpY2lwYW50c2AsIHsgdXNlcklkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdW4gcGFydGljaXBhbnRlIGRlIGxhIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIHJlbW92ZVBhcnRpY2lwYW50KGNvbnZJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vcGFydGljaXBhbnRzLyR7dXNlcklkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudmlhIHVuIG1lbnNhamUgYSB1bmEgY29udmVyc2FjaW9uLCBvcGNpb25hbG1lbnRlIGNvbiBhZGp1bnRvcy5cbiAgICogRWwgYmFja2VuZCBlc3BlcmEgYGF0dGFjaG1lbnRzOiB7IHVybCwgdHlwZSwgbmFtZSwgc2l6ZSB9W11gIChrZXkgYHR5cGVgID0gTUlNRSksXG4gICAqIG1pZW50cmFzIHF1ZSBlbCBmcm9udCB1c2EgYG1pbWVUeXBlYCDigJQgc2UgbWFwZWEgYXF1aS5cbiAgICovXG4gIHNlbmRNZXNzYWdlKFxuICAgIGNvbnZJZDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IE1lc3NhZ2VBdHRhY2htZW50W11cbiAgKTogT2JzZXJ2YWJsZTxNZXNzYWdlPiB7XG4gICAgY29uc3QgcGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IGJvZHkgfTtcbiAgICBpZiAoYXR0YWNobWVudHM/Lmxlbmd0aCkge1xuICAgICAgcGF5bG9hZFsnYXR0YWNobWVudHMnXSA9IGF0dGFjaG1lbnRzLm1hcChhID0+ICh7XG4gICAgICAgIHVybDogYS51cmwsXG4gICAgICAgIHR5cGU6IGEubWltZVR5cGUsXG4gICAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgICAgc2l6ZTogYS5zaXplID8/IDAsXG4gICAgICB9KSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxNZXNzYWdlPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnMvJHtjb252SWR9L21lc3NhZ2VzYCwgcGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogRWxpbWluYSAobWFyY2EgY29tbyBlbGltaW5hZG8pIHVuIG1lbnNhamUuXG4gICAqL1xuICBkZWxldGVNZXNzYWdlKGNvbnZJZDogc3RyaW5nLCBtc2dJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dm9pZD4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zLyR7Y29udklkfS9tZXNzYWdlcy8ke21zZ0lkfWApO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEZpcmVzdG9yZSDigJQgZXNjdWNoYSBlbiB0aWVtcG8gcmVhbCAoc2luIHBhc2FyIHBvciBlbCBiYWNrZW5kKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQ29uc3RydXllIGVsIHBhdGggYmFzZSBwYXJhIGxvcyBkYXRvcyBkZSB1bmEgY29udmVyc2FjaW9uLlxuICAgKiBOb3RhOiB1c2Ftb3MgZWwgcGF0aCBjb21wbGV0byBjb24gc2tpcFByZWZpeCBwb3JxdWUgZWwgcGF0aCB5YSBpbmNsdXllXG4gICAqIGFwcHMve2FwcElkfS9vcmdzL3tvcmdJZH0gcXVlIGVsIEZpcmVzdG9yZVNlcnZpY2UgcHJlZmlqYXJpYSBkZSBudWV2by5cbiAgICogRW4gY2FtYmlvIGFybWFtb3MgZWwgcGF0aCBjb21vIHN1Yi1jb2xlY2Npb24gZGlyZWN0YW1lbnRlLlxuICAgKi9cbiAgcHJpdmF0ZSBjb252TWVzc2FnZXNQYXRoKGNvbnZJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nLCBhcHBJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGFwcHMvJHthcHBJZH0vb3Jncy8ke29yZ0lkfS9jb252ZXJzYXRpb25zLyR7Y29udklkfS9tZXNzYWdlc2A7XG4gIH1cblxuICBwcml2YXRlIGNvbnZUeXBpbmdQYXRoKGNvbnZJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nLCBhcHBJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGFwcHMvJHthcHBJZH0vb3Jncy8ke29yZ0lkfS9jb252ZXJzYXRpb25zLyR7Y29udklkfS90eXBpbmdgO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzY3VjaGEgbG9zIG1lbnNhamVzIGRlIHVuYSBjb252ZXJzYWNpb24gZW4gdGllbXBvIHJlYWwuXG4gICAqXG4gICAqIEBwYXJhbSBjb252SWQgLSBJRCBkZSBsYSBjb252ZXJzYWNpb25cbiAgICogQHBhcmFtIG9yZ0lkIC0gSUQgZGUgbGEgb3JnYW5pemFjaW9uXG4gICAqIEBwYXJhbSBhcHBJZCAtIElEIGRlIGxhIGFwbGljYWNpb25cbiAgICogQHBhcmFtIGxpbWl0IC0gQ2FudGlkYWQgbWF4aW1hIGRlIG1lbnNhamVzIGEgY2FyZ2FyIChkZWZhdWx0IDUwKVxuICAgKi9cbiAgd2F0Y2hNZXNzYWdlcyhcbiAgICBjb252SWQ6IHN0cmluZyxcbiAgICBvcmdJZDogc3RyaW5nLFxuICAgIGFwcElkOiBzdHJpbmcsXG4gICAgbGltaXQ6IG51bWJlciA9IDUwXG4gICk6IE9ic2VydmFibGU8TWVzc2FnZVtdPiB7XG4gICAgaWYgKCF0aGlzLmZpcmVzdG9yZVNlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1tDb252ZXJzYXRpb25TZXJ2aWNlXSBGaXJlc3RvcmVTZXJ2aWNlIG5vIGRpc3BvbmlibGUuIEFzZWd1cmF0ZSBkZSBwcm92aWRlVmFsdGVjaEZpcmViYXNlKCkuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBVc2Ftb3MgQUJTX1BBVEhfU0VOVElORUwgcGFyYSBldml0YXIgcXVlIEZpcmVzdG9yZVNlcnZpY2UgYW50ZXBvbmdhIGVsIHByZWZpam9cbiAgICAvLyBwb3JxdWUgZWwgcGF0aCB5YSBjb250aWVuZSBsYSBydXRhIGNvbXBsZXRhIGNvbiBhcHBJZC9vcmdJZC5cbiAgICBjb25zdCB7IEFCU19QQVRIX1NFTlRJTkVMIH0gPSB0aGlzLmdldEFic1BhdGhTZW50aW5lbCgpO1xuICAgIGNvbnN0IGNvbGxlY3Rpb25QYXRoID0gYCR7QUJTX1BBVEhfU0VOVElORUx9JHt0aGlzLmNvbnZNZXNzYWdlc1BhdGgoY29udklkLCBvcmdJZCwgYXBwSWQpfWA7XG5cbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmVTZXJ2aWNlLmNvbGxlY3Rpb25DaGFuZ2VzPE1lc3NhZ2U+KGNvbGxlY3Rpb25QYXRoLCB7XG4gICAgICBvcmRlckJ5OiBbeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGRpcmVjdGlvbjogJ2FzYycgfV0sXG4gICAgICBsaW1pdCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFc2N1Y2hhIGxvcyB1c3VhcmlvcyBxdWUgZXN0YW4gZXNjcmliaWVuZG8gZW4gdW5hIGNvbnZlcnNhY2lvbi5cbiAgICogRGV2dWVsdmUgdW4gYXJyYXkgZGUgZGlzcGxheU5hbWVzLlxuICAgKlxuICAgKiBAcGFyYW0gY29udklkIC0gSUQgZGUgbGEgY29udmVyc2FjaW9uXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2lvblxuICAgKiBAcGFyYW0gYXBwSWQgLSBJRCBkZSBsYSBhcGxpY2FjaW9uXG4gICAqL1xuICB3YXRjaFR5cGluZyhjb252SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICBpZiAoIXRoaXMuZmlyZXN0b3JlU2VydmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnW0NvbnZlcnNhdGlvblNlcnZpY2VdIEZpcmVzdG9yZVNlcnZpY2Ugbm8gZGlzcG9uaWJsZS4gQXNlZ3VyYXRlIGRlIHByb3ZpZGVWYWx0ZWNoRmlyZWJhc2UoKS4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgQUJTX1BBVEhfU0VOVElORUwgfSA9IHRoaXMuZ2V0QWJzUGF0aFNlbnRpbmVsKCk7XG4gICAgY29uc3QgY29sbGVjdGlvblBhdGggPSBgJHtBQlNfUEFUSF9TRU5USU5FTH0ke3RoaXMuY29udlR5cGluZ1BhdGgoY29udklkLCBvcmdJZCwgYXBwSWQpfWA7XG5cbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmVTZXJ2aWNlXG4gICAgICAuY29sbGVjdGlvbkNoYW5nZXM8VHlwaW5nRG9jdW1lbnQ+KGNvbGxlY3Rpb25QYXRoKVxuICAgICAgLnBpcGUobWFwKGRvY3MgPT4gZG9jcy5tYXAoZCA9PiBkLmRpc3BsYXlOYW1lKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHF1ZSBlbCB1c3VhcmlvIGFjdHVhbCBlc3RhIGVzY3JpYmllbmRvLlxuICAgKiBFbCBkb2N1bWVudG8gc2Ugc29icmVlc2NyaWJlIHBhcmEgYWN0dWFsaXphciBlbCB0aW1lc3RhbXAuXG4gICAqIERlYmUgbGxhbWFyc2UgY29uIHVuIFRUTC9jbGVhbnVwICh2ZXIgc3RvcFR5cGluZykuXG4gICAqXG4gICAqIEBwYXJhbSBjb252SWQgLSBJRCBkZSBsYSBjb252ZXJzYWNpb25cbiAgICogQHBhcmFtIG9yZ0lkIC0gSUQgZGUgbGEgb3JnYW5pemFjaW9uXG4gICAqIEBwYXJhbSBhcHBJZCAtIElEIGRlIGxhIGFwbGljYWNpb25cbiAgICogQHBhcmFtIGRpc3BsYXlOYW1lIC0gTm9tYnJlIHZpc2libGUgZGVsIHVzdWFyaW9cbiAgICovXG4gIHN0YXJ0VHlwaW5nKGNvbnZJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nLCBhcHBJZDogc3RyaW5nLCBkaXNwbGF5TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpcmVzdG9yZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcklkKCk7XG4gICAgaWYgKCF1c2VySWQpIHJldHVybjtcblxuICAgIGNvbnN0IHBhdGggPSBgJHt0aGlzLmNvbnZUeXBpbmdQYXRoKGNvbnZJZCwgb3JnSWQsIGFwcElkKX0vJHt1c2VySWR9YDtcbiAgICBjb25zdCBkb2NSZWYgPSBkb2ModGhpcy5maXJlc3RvcmUsIHBhdGgpO1xuXG4gICAgdm9pZCBzZXREb2MoZG9jUmVmLCB7XG4gICAgICBkaXNwbGF5TmFtZSxcbiAgICAgIHVwZGF0ZWRBdDogc2VydmVyVGltZXN0YW1wKCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRWxpbWluYSBlbCBkb2N1bWVudG8gZGUgXCJlc2NyaWJpZW5kb1wiIGRlbCB1c3VhcmlvIGFjdHVhbC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnZJZCAtIElEIGRlIGxhIGNvbnZlcnNhY2lvblxuICAgKiBAcGFyYW0gb3JnSWQgLSBJRCBkZSBsYSBvcmdhbml6YWNpb25cbiAgICogQHBhcmFtIGFwcElkIC0gSUQgZGUgbGEgYXBsaWNhY2lvblxuICAgKi9cbiAgc3RvcFR5cGluZyhjb252SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5maXJlc3RvcmUpIHJldHVybjtcblxuICAgIGNvbnN0IHVzZXJJZCA9IHRoaXMuZ2V0Q3VycmVudFVzZXJJZCgpO1xuICAgIGlmICghdXNlcklkKSByZXR1cm47XG5cbiAgICBjb25zdCBwYXRoID0gYCR7dGhpcy5jb252VHlwaW5nUGF0aChjb252SWQsIG9yZ0lkLCBhcHBJZCl9LyR7dXNlcklkfWA7XG4gICAgY29uc3QgZG9jUmVmID0gZG9jKHRoaXMuZmlyZXN0b3JlLCBwYXRoKTtcblxuICAgIHZvaWQgZGVsZXRlRG9jKGRvY1JlZik7XG4gIH1cblxuICAvKipcbiAgICogTWFyY2EgdW4gbWVuc2FqZSBjb21vIGxlaWRvIHBvciBlbCB1c3VhcmlvIGFjdHVhbC5cbiAgICogRXNjcmliZSBkaXJlY3RhbWVudGUgZW4gRmlyZXN0b3JlIHNpbiBwYXNhciBwb3IgZWwgYmFja2VuZC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnZJZCAtIElEIGRlIGxhIGNvbnZlcnNhY2lvblxuICAgKiBAcGFyYW0gbXNnSWQgLSBJRCBkZWwgdWx0aW1vIG1lbnNhamUgbGVpZG9cbiAgICogQHBhcmFtIG9yZ0lkIC0gSUQgZGUgbGEgb3JnYW5pemFjaW9uXG4gICAqIEBwYXJhbSBhcHBJZCAtIElEIGRlIGxhIGFwbGljYWNpb25cbiAgICovXG4gIG1hcmtSZWFkKGNvbnZJZDogc3RyaW5nLCBtc2dJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nLCBhcHBJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpcmVzdG9yZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcklkKCk7XG4gICAgaWYgKCF1c2VySWQpIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnZQYXRoID0gYGFwcHMvJHthcHBJZH0vb3Jncy8ke29yZ0lkfS9jb252ZXJzYXRpb25zLyR7Y29udklkfWA7XG4gICAgY29uc3QgY29udlJlZiA9IGRvYyh0aGlzLmZpcmVzdG9yZSwgY29udlBhdGgpO1xuXG4gICAgLy8gVXNhIGRvdC1ub3RhdGlvbiBkZSBGaXJlc3RvcmUgcGFyYSBhY3R1YWxpemFyIHNvbG8gZWwgY2FtcG8gZGVsIHVzdWFyaW9cbiAgICBjb25zdCB1cGRhdGVEYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIFtgcGFydGljaXBhbnRzX3JlYWRNYXAuJHt1c2VySWR9YF06IG1zZ0lkLFxuICAgICAgdXBkYXRlZEF0OiBzZXJ2ZXJUaW1lc3RhbXAoKSxcbiAgICB9O1xuXG4gICAgdm9pZCB1cGRhdGVEb2MoY29udlJlZiwgdXBkYXRlRGF0YSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gSGVscGVycyBwcml2YWRvc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogSW1wb3J0YSBBQlNfUEFUSF9TRU5USU5FTCBkZSBmb3JtYSBsYXp5IHBhcmEgZXZpdGFyIGRlcGVuZGVuY2lhcyBjaXJjdWxhcmVzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBYnNQYXRoU2VudGluZWwoKTogeyBBQlNfUEFUSF9TRU5USU5FTDogc3RyaW5nIH0ge1xuICAgIC8vIExhIHNlbnRpbmVsIHNlIGRlZmluZSBlbiBmaXJlc3RvcmUuc2VydmljZS50cyDigJQgcmVwbGljYW1vcyBlbCB2YWxvciBhcXVpXG4gICAgLy8gcGFyYSBubyBjcmVhciB1bmEgZGVwZW5kZW5jaWEgY2lyY3VsYXIgZW4gZWwgaW1wb3J0IGVzdGF0aWNvLlxuICAgIHJldHVybiB7IEFCU19QQVRIX1NFTlRJTkVMOiAnX19hYnNfXzonIH07XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBlbCB1c2VySWQgZGVsIHVzdWFyaW8gYWN0dWFsIGRlc2RlIHNlc3Npb25TdG9yYWdlIC8gbG9jYWxTdG9yYWdlXG4gICAqIGNvbW8gZmFsbGJhY2sgbm8tREkgcGFyYSBlbCBjb250ZXh0byBkZSBlc2NyaXR1cmEgZGUgRmlyZXN0b3JlLlxuICAgKiBFbiBwcm9kLCBlbCBBdXRoU2VydmljZSBhY3R1YWxpemEgZWwgdXNlcklkIGVuIGVsIGNvbnRleHRvIGRlIGxhIGFwcC5cbiAgICovXG4gIHByaXZhdGUgZ2V0Q3VycmVudFVzZXJJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAvLyBJbnRlbnRhciBvYnRlbmVybG8gZGVzZGUgc2Vzc2lvblN0b3JhZ2UgKGVsIEF1dGhTZXJ2aWNlIGxvIGd1YXJkYSBhaGkpXG4gICAgaWYgKHR5cGVvZiBzZXNzaW9uU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IHVpZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3VpZCcpID8/IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3VzZXJJZCcpO1xuICAgICAgaWYgKHVpZCkgcmV0dXJuIHVpZDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2NoYXQvY29udmVyc2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVcvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFakU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCO1FBTFEsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUd4RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNlcnZlclRpbWVzdGFtcCwgZGVsZXRlRG9jLCBkb2MsIHNldERvYywgdXBkYXRlRG9jIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuaW1wb3J0IHsgRmlyZXN0b3JlIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0NIQVRfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtcbiAgQ29udmVyc2F0aW9uLFxuICBDb252ZXJzYXRpb25SZXNwb25zZSxcbiAgQ29udmVyc2F0aW9uVHlwZSxcbiAgQ3JlYXRlQ29udmVyc2F0aW9uUmVxdWVzdCxcbiAgTGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZSxcbiAgTWVzc2FnZSxcbiAgVXBkYXRlQ29udmVyc2F0aW9uUmVxdWVzdCxcbiAgVHlwaW5nRG9jdW1lbnQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRmlyZXN0b3JlU2VydmljZSB9IGZyb20gJy4uL2ZpcmViYXNlL2ZpcmVzdG9yZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBDb252ZXJzYXRpb25TZXJ2aWNlXG4gKlxuICogR2VzdGlvbmEgY29udmVyc2FjaW9uZXMgeSBtZW5zYWplcyBkZWwgY2hhdC5cbiAqXG4gKiBEb3MgY2FwYXM6XG4gKiAgIC0gSFRUUCAodmlhIGJhY2tlbmQgL3YyL2NoYXQvKik6IG9wZXJhY2lvbmVzIGRlIGVzY3JpdHVyYSB5IGNvbnN1bHRhLlxuICogICAtIEZpcmVzdG9yZSByZWFsLXRpbWUgKGRpcmVjdGEpOiBlc2N1Y2hhIG1lbnNhamVzIHkgZXN0YWRvIGRlIGVzY3JpdHVyYS5cbiAqXG4gKiBQYXRocyBGaXJlc3RvcmU6XG4gKiAgIC9hcHBzL3thcHBJZH0vb3Jncy97b3JnSWR9L2NvbnZlcnNhdGlvbnMve2NvbnZJZH0vbWVzc2FnZXMve21zZ0lkfVxuICogICAvYXBwcy97YXBwSWR9L29yZ3Mve29yZ0lkfS9jb252ZXJzYXRpb25zL3tjb252SWR9L3R5cGluZy97dXNlcklkfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFbnZpYXIgeSBlc2N1Y2hhciBtZW5zYWplc1xuICogY29uc3Qgc3ZjID0gaW5qZWN0KENvbnZlcnNhdGlvblNlcnZpY2UpO1xuICpcbiAqIC8vIEVudmlhciAoSFRUUClcbiAqIHN2Yy5zZW5kTWVzc2FnZShjb252SWQsICdIb2xhIScpLnN1YnNjcmliZSgpO1xuICpcbiAqIC8vIEVzY3VjaGFyIGVuIHRpZW1wbyByZWFsIChGaXJlc3RvcmUpXG4gKiBzdmMud2F0Y2hNZXNzYWdlcyhjb252SWQsIG9yZ0lkLCBhcHBJZCkuc3Vic2NyaWJlKG1zZ3MgPT4gdGhpcy5tZXNzYWdlcy5zZXQobXNncykpO1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChWQUxURUNIX0NIQVRfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgZmlyZXN0b3JlU2VydmljZSA9IGluamVjdChGaXJlc3RvcmVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGZpcmVzdG9yZSA9IGluamVjdChGaXJlc3RvcmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnW3ZhbHRlY2gtY29tcG9uZW50c10gQ29udmVyc2F0aW9uU2VydmljZTogcHJvdmlkZVZhbHRlY2hDaGF0KCkgbm8gZXN0YSBlbiBtYWluLnRzLiAnICtcbiAgICAgICAgICAnRWwgY2hhdCBubyBmdW5jaW9uYXJhLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEhUVFAg4oCUIG9wZXJhY2lvbmVzIGRlIGVzY3JpdHVyYSB5IGNvbnN1bHRhIGFsIGJhY2tlbmRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSBnZXQgYmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZz8uYXBpVXJsfSR7dGhpcy5jb25maWc/LmNoYXRQcmVmaXggPz8gJy92Mi9jaGF0J31gO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWEgdW5hIG51ZXZhIGNvbnZlcnNhY2lvbi5cbiAgICogRWwgYmFja2VuZCByZXNwb25kZSBjb24gdW4gZW52ZWxvcGUgeyBvcGVyYXRpb25JZCwgY29udmVyc2F0aW9uIH0g4oCUIGxvXG4gICAqIGRlc2Vudm9sdmVtb3MgcGFyYSBkZXZvbHZlciBsYSBDb252ZXJzYXRpb24gZGlyZWN0YS5cbiAgICovXG4gIGNyZWF0ZUNvbnZlcnNhdGlvbihyZXE6IENyZWF0ZUNvbnZlcnNhdGlvblJlcXVlc3QpOiBPYnNlcnZhYmxlPENvbnZlcnNhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PENvbnZlcnNhdGlvblJlc3BvbnNlPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnNgLCByZXEpXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbyBjcmVhIHVuYSBjb252ZXJzYWNpb24gYXNvY2lhZGEgYSB1bmEgZW50aWRhZCAocG9zdCwgcmVxdWVzdCwgb3JnLCBldGMuKS5cbiAgICogVXNhIGVsIHBhdHJvbiB1cHNlcnQgZGVsIGJhY2tlbmQ6IHNpIHlhIGV4aXN0ZSB1bmEgY29udmVyc2FjaW9uIHBhcmEgZXNhIGVudGlkYWQsXG4gICAqIGxhIGRldnVlbHZlOyBzaSBubywgbGEgY3JlYS5cbiAgICpcbiAgICogRWwgYmFja2VuZCBlc3BlcmEgeyBlbnRpdHlSZWY6IHsgdHlwZSwgaWQgfSwgdHlwZSB9IHkgcmVzcG9uZGUgY29uIHVuIGVudmVsb3BlXG4gICAqIHsgb3BlcmF0aW9uSWQsIGNvbnZlcnNhdGlvbiwgY3JlYXRlZCB9LlxuICAgKi9cbiAgZ2V0T3JDcmVhdGVGb3JFbnRpdHkoXG4gICAgZW50aXR5VHlwZTogc3RyaW5nLFxuICAgIGVudGl0eUlkOiBzdHJpbmcsXG4gICAgdHlwZTogQ29udmVyc2F0aW9uVHlwZSA9ICd0aHJlYWQnXG4gICk6IE9ic2VydmFibGU8Q29udmVyc2F0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8Q29udmVyc2F0aW9uUmVzcG9uc2U+KGAke3RoaXMuYmFzZVVybH0vZW50aXR5LWNvbnZlcnNhdGlvbnNgLCB7XG4gICAgICAgIGVudGl0eVJlZjogeyB0eXBlOiBlbnRpdHlUeXBlLCBpZDogZW50aXR5SWQgfSxcbiAgICAgICAgdHlwZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RhIGxhcyBjb252ZXJzYWNpb25lcyBkZWwgdXN1YXJpbyBhdXRlbnRpY2Fkby5cbiAgICovXG4gIGxpc3RDb252ZXJzYXRpb25zKGN1cnNvcj86IHN0cmluZyk6IE9ic2VydmFibGU8TGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGlmIChjdXJzb3IpIHBhcmFtc1snY3Vyc29yJ10gPSBjdXJzb3I7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zYCwgeyBwYXJhbXMgfSk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSB1bmEgY29udmVyc2FjaW9uIHBvciBJRC5cbiAgICovXG4gIGdldENvbnZlcnNhdGlvbihjb252SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29udmVyc2F0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxDb252ZXJzYXRpb25SZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zLyR7Y29udklkfWApXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdHVhbGl6YSBlbCBub21icmUgbyBzZXR0aW5ncyBkZSB1bmEgY29udmVyc2FjaW9uLlxuICAgKi9cbiAgdXBkYXRlQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nLCByZXE6IFVwZGF0ZUNvbnZlcnNhdGlvblJlcXVlc3QpOiBPYnNlcnZhYmxlPENvbnZlcnNhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wYXRjaDxDb252ZXJzYXRpb25SZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zLyR7Y29udklkfWAsIHJlcSlcbiAgICAgIC5waXBlKG1hcChyID0+IHIuY29udmVyc2F0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQWJyZSB1bmEgY29udmVyc2FjaW9uIGNlcnJhZGEuXG4gICAqL1xuICBvcGVuQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vb3BlbmAsIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaWVycmEgdW5hIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIGNsb3NlQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vY2xvc2VgLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIHVuIHBhcnRpY2lwYW50ZSBhIGxhIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIGFkZFBhcnRpY2lwYW50KGNvbnZJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx2b2lkPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnMvJHtjb252SWR9L3BhcnRpY2lwYW50c2AsIHsgdXNlcklkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdW4gcGFydGljaXBhbnRlIGRlIGxhIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIHJlbW92ZVBhcnRpY2lwYW50KGNvbnZJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vcGFydGljaXBhbnRzLyR7dXNlcklkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudmlhIHVuIG1lbnNhamUgYSB1bmEgY29udmVyc2FjaW9uLlxuICAgKi9cbiAgc2VuZE1lc3NhZ2UoY29udklkOiBzdHJpbmcsIGJvZHk6IHN0cmluZyk6IE9ic2VydmFibGU8TWVzc2FnZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxNZXNzYWdlPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnMvJHtjb252SWR9L21lc3NhZ2VzYCwgeyBib2R5IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgKG1hcmNhIGNvbW8gZWxpbWluYWRvKSB1biBtZW5zYWplLlxuICAgKi9cbiAgZGVsZXRlTWVzc2FnZShjb252SWQ6IHN0cmluZywgbXNnSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vbWVzc2FnZXMvJHttc2dJZH1gKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBGaXJlc3RvcmUg4oCUIGVzY3VjaGEgZW4gdGllbXBvIHJlYWwgKHNpbiBwYXNhciBwb3IgZWwgYmFja2VuZClcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIENvbnN0cnV5ZSBlbCBwYXRoIGJhc2UgcGFyYSBsb3MgZGF0b3MgZGUgdW5hIGNvbnZlcnNhY2lvbi5cbiAgICogTm90YTogdXNhbW9zIGVsIHBhdGggY29tcGxldG8gY29uIHNraXBQcmVmaXggcG9ycXVlIGVsIHBhdGggeWEgaW5jbHV5ZVxuICAgKiBhcHBzL3thcHBJZH0vb3Jncy97b3JnSWR9IHF1ZSBlbCBGaXJlc3RvcmVTZXJ2aWNlIHByZWZpamFyaWEgZGUgbnVldm8uXG4gICAqIEVuIGNhbWJpbyBhcm1hbW9zIGVsIHBhdGggY29tbyBzdWItY29sZWNjaW9uIGRpcmVjdGFtZW50ZS5cbiAgICovXG4gIHByaXZhdGUgY29udk1lc3NhZ2VzUGF0aChjb252SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhcHBzLyR7YXBwSWR9L29yZ3MvJHtvcmdJZH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vbWVzc2FnZXNgO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252VHlwaW5nUGF0aChjb252SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhcHBzLyR7YXBwSWR9L29yZ3MvJHtvcmdJZH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vdHlwaW5nYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFc2N1Y2hhIGxvcyBtZW5zYWplcyBkZSB1bmEgY29udmVyc2FjaW9uIGVuIHRpZW1wbyByZWFsLlxuICAgKlxuICAgKiBAcGFyYW0gY29udklkIC0gSUQgZGUgbGEgY29udmVyc2FjaW9uXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2lvblxuICAgKiBAcGFyYW0gYXBwSWQgLSBJRCBkZSBsYSBhcGxpY2FjaW9uXG4gICAqIEBwYXJhbSBsaW1pdCAtIENhbnRpZGFkIG1heGltYSBkZSBtZW5zYWplcyBhIGNhcmdhciAoZGVmYXVsdCA1MClcbiAgICovXG4gIHdhdGNoTWVzc2FnZXMoXG4gICAgY29udklkOiBzdHJpbmcsXG4gICAgb3JnSWQ6IHN0cmluZyxcbiAgICBhcHBJZDogc3RyaW5nLFxuICAgIGxpbWl0OiBudW1iZXIgPSA1MFxuICApOiBPYnNlcnZhYmxlPE1lc3NhZ2VbXT4ge1xuICAgIGlmICghdGhpcy5maXJlc3RvcmVTZXJ2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdbQ29udmVyc2F0aW9uU2VydmljZV0gRmlyZXN0b3JlU2VydmljZSBubyBkaXNwb25pYmxlLiBBc2VndXJhdGUgZGUgcHJvdmlkZVZhbHRlY2hGaXJlYmFzZSgpLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVXNhbW9zIEFCU19QQVRIX1NFTlRJTkVMIHBhcmEgZXZpdGFyIHF1ZSBGaXJlc3RvcmVTZXJ2aWNlIGFudGVwb25nYSBlbCBwcmVmaWpvXG4gICAgLy8gcG9ycXVlIGVsIHBhdGggeWEgY29udGllbmUgbGEgcnV0YSBjb21wbGV0YSBjb24gYXBwSWQvb3JnSWQuXG4gICAgY29uc3QgeyBBQlNfUEFUSF9TRU5USU5FTCB9ID0gdGhpcy5nZXRBYnNQYXRoU2VudGluZWwoKTtcbiAgICBjb25zdCBjb2xsZWN0aW9uUGF0aCA9IGAke0FCU19QQVRIX1NFTlRJTkVMfSR7dGhpcy5jb252TWVzc2FnZXNQYXRoKGNvbnZJZCwgb3JnSWQsIGFwcElkKX1gO1xuXG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlU2VydmljZS5jb2xsZWN0aW9uQ2hhbmdlczxNZXNzYWdlPihjb2xsZWN0aW9uUGF0aCwge1xuICAgICAgb3JkZXJCeTogW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXJlY3Rpb246ICdhc2MnIH1dLFxuICAgICAgbGltaXQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRXNjdWNoYSBsb3MgdXN1YXJpb3MgcXVlIGVzdGFuIGVzY3JpYmllbmRvIGVuIHVuYSBjb252ZXJzYWNpb24uXG4gICAqIERldnVlbHZlIHVuIGFycmF5IGRlIGRpc3BsYXlOYW1lcy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnZJZCAtIElEIGRlIGxhIGNvbnZlcnNhY2lvblxuICAgKiBAcGFyYW0gb3JnSWQgLSBJRCBkZSBsYSBvcmdhbml6YWNpb25cbiAgICogQHBhcmFtIGFwcElkIC0gSUQgZGUgbGEgYXBsaWNhY2lvblxuICAgKi9cbiAgd2F0Y2hUeXBpbmcoY29udklkOiBzdHJpbmcsIG9yZ0lkOiBzdHJpbmcsIGFwcElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgaWYgKCF0aGlzLmZpcmVzdG9yZVNlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1tDb252ZXJzYXRpb25TZXJ2aWNlXSBGaXJlc3RvcmVTZXJ2aWNlIG5vIGRpc3BvbmlibGUuIEFzZWd1cmF0ZSBkZSBwcm92aWRlVmFsdGVjaEZpcmViYXNlKCkuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IEFCU19QQVRIX1NFTlRJTkVMIH0gPSB0aGlzLmdldEFic1BhdGhTZW50aW5lbCgpO1xuICAgIGNvbnN0IGNvbGxlY3Rpb25QYXRoID0gYCR7QUJTX1BBVEhfU0VOVElORUx9JHt0aGlzLmNvbnZUeXBpbmdQYXRoKGNvbnZJZCwgb3JnSWQsIGFwcElkKX1gO1xuXG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlU2VydmljZVxuICAgICAgLmNvbGxlY3Rpb25DaGFuZ2VzPFR5cGluZ0RvY3VtZW50Pihjb2xsZWN0aW9uUGF0aClcbiAgICAgIC5waXBlKG1hcChkb2NzID0+IGRvY3MubWFwKGQgPT4gZC5kaXNwbGF5TmFtZSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSBxdWUgZWwgdXN1YXJpbyBhY3R1YWwgZXN0YSBlc2NyaWJpZW5kby5cbiAgICogRWwgZG9jdW1lbnRvIHNlIHNvYnJlZXNjcmliZSBwYXJhIGFjdHVhbGl6YXIgZWwgdGltZXN0YW1wLlxuICAgKiBEZWJlIGxsYW1hcnNlIGNvbiB1biBUVEwvY2xlYW51cCAodmVyIHN0b3BUeXBpbmcpLlxuICAgKlxuICAgKiBAcGFyYW0gY29udklkIC0gSUQgZGUgbGEgY29udmVyc2FjaW9uXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2lvblxuICAgKiBAcGFyYW0gYXBwSWQgLSBJRCBkZSBsYSBhcGxpY2FjaW9uXG4gICAqIEBwYXJhbSBkaXNwbGF5TmFtZSAtIE5vbWJyZSB2aXNpYmxlIGRlbCB1c3VhcmlvXG4gICAqL1xuICBzdGFydFR5cGluZyhjb252SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZywgZGlzcGxheU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5maXJlc3RvcmUpIHJldHVybjtcblxuICAgIGNvbnN0IHVzZXJJZCA9IHRoaXMuZ2V0Q3VycmVudFVzZXJJZCgpO1xuICAgIGlmICghdXNlcklkKSByZXR1cm47XG5cbiAgICBjb25zdCBwYXRoID0gYCR7dGhpcy5jb252VHlwaW5nUGF0aChjb252SWQsIG9yZ0lkLCBhcHBJZCl9LyR7dXNlcklkfWA7XG4gICAgY29uc3QgZG9jUmVmID0gZG9jKHRoaXMuZmlyZXN0b3JlLCBwYXRoKTtcblxuICAgIHZvaWQgc2V0RG9jKGRvY1JlZiwge1xuICAgICAgZGlzcGxheU5hbWUsXG4gICAgICB1cGRhdGVkQXQ6IHNlcnZlclRpbWVzdGFtcCgpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgZWwgZG9jdW1lbnRvIGRlIFwiZXNjcmliaWVuZG9cIiBkZWwgdXN1YXJpbyBhY3R1YWwuXG4gICAqXG4gICAqIEBwYXJhbSBjb252SWQgLSBJRCBkZSBsYSBjb252ZXJzYWNpb25cbiAgICogQHBhcmFtIG9yZ0lkIC0gSUQgZGUgbGEgb3JnYW5pemFjaW9uXG4gICAqIEBwYXJhbSBhcHBJZCAtIElEIGRlIGxhIGFwbGljYWNpb25cbiAgICovXG4gIHN0b3BUeXBpbmcoY29udklkOiBzdHJpbmcsIG9yZ0lkOiBzdHJpbmcsIGFwcElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmlyZXN0b3JlKSByZXR1cm47XG5cbiAgICBjb25zdCB1c2VySWQgPSB0aGlzLmdldEN1cnJlbnRVc2VySWQoKTtcbiAgICBpZiAoIXVzZXJJZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcGF0aCA9IGAke3RoaXMuY29udlR5cGluZ1BhdGgoY29udklkLCBvcmdJZCwgYXBwSWQpfS8ke3VzZXJJZH1gO1xuICAgIGNvbnN0IGRvY1JlZiA9IGRvYyh0aGlzLmZpcmVzdG9yZSwgcGF0aCk7XG5cbiAgICB2b2lkIGRlbGV0ZURvYyhkb2NSZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmNhIHVuIG1lbnNhamUgY29tbyBsZWlkbyBwb3IgZWwgdXN1YXJpbyBhY3R1YWwuXG4gICAqIEVzY3JpYmUgZGlyZWN0YW1lbnRlIGVuIEZpcmVzdG9yZSBzaW4gcGFzYXIgcG9yIGVsIGJhY2tlbmQuXG4gICAqXG4gICAqIEBwYXJhbSBjb252SWQgLSBJRCBkZSBsYSBjb252ZXJzYWNpb25cbiAgICogQHBhcmFtIG1zZ0lkIC0gSUQgZGVsIHVsdGltbyBtZW5zYWplIGxlaWRvXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2lvblxuICAgKiBAcGFyYW0gYXBwSWQgLSBJRCBkZSBsYSBhcGxpY2FjaW9uXG4gICAqL1xuICBtYXJrUmVhZChjb252SWQ6IHN0cmluZywgbXNnSWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5maXJlc3RvcmUpIHJldHVybjtcblxuICAgIGNvbnN0IHVzZXJJZCA9IHRoaXMuZ2V0Q3VycmVudFVzZXJJZCgpO1xuICAgIGlmICghdXNlcklkKSByZXR1cm47XG5cbiAgICBjb25zdCBjb252UGF0aCA9IGBhcHBzLyR7YXBwSWR9L29yZ3MvJHtvcmdJZH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH1gO1xuICAgIGNvbnN0IGNvbnZSZWYgPSBkb2ModGhpcy5maXJlc3RvcmUsIGNvbnZQYXRoKTtcblxuICAgIC8vIFVzYSBkb3Qtbm90YXRpb24gZGUgRmlyZXN0b3JlIHBhcmEgYWN0dWFsaXphciBzb2xvIGVsIGNhbXBvIGRlbCB1c3VhcmlvXG4gICAgY29uc3QgdXBkYXRlRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBbYHBhcnRpY2lwYW50c19yZWFkTWFwLiR7dXNlcklkfWBdOiBtc2dJZCxcbiAgICAgIHVwZGF0ZWRBdDogc2VydmVyVGltZXN0YW1wKCksXG4gICAgfTtcblxuICAgIHZvaWQgdXBkYXRlRG9jKGNvbnZSZWYsIHVwZGF0ZURhdGEpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEhlbHBlcnMgcHJpdmFkb3NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEltcG9ydGEgQUJTX1BBVEhfU0VOVElORUwgZGUgZm9ybWEgbGF6eSBwYXJhIGV2aXRhciBkZXBlbmRlbmNpYXMgY2lyY3VsYXJlcy5cbiAgICovXG4gIHByaXZhdGUgZ2V0QWJzUGF0aFNlbnRpbmVsKCk6IHsgQUJTX1BBVEhfU0VOVElORUw6IHN0cmluZyB9IHtcbiAgICAvLyBMYSBzZW50aW5lbCBzZSBkZWZpbmUgZW4gZmlyZXN0b3JlLnNlcnZpY2UudHMg4oCUIHJlcGxpY2Ftb3MgZWwgdmFsb3IgYXF1aVxuICAgIC8vIHBhcmEgbm8gY3JlYXIgdW5hIGRlcGVuZGVuY2lhIGNpcmN1bGFyIGVuIGVsIGltcG9ydCBlc3RhdGljby5cbiAgICByZXR1cm4geyBBQlNfUEFUSF9TRU5USU5FTDogJ19fYWJzX186JyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgdXNlcklkIGRlbCB1c3VhcmlvIGFjdHVhbCBkZXNkZSBzZXNzaW9uU3RvcmFnZSAvIGxvY2FsU3RvcmFnZVxuICAgKiBjb21vIGZhbGxiYWNrIG5vLURJIHBhcmEgZWwgY29udGV4dG8gZGUgZXNjcml0dXJhIGRlIEZpcmVzdG9yZS5cbiAgICogRW4gcHJvZCwgZWwgQXV0aFNlcnZpY2UgYWN0dWFsaXphIGVsIHVzZXJJZCBlbiBlbCBjb250ZXh0byBkZSBsYSBhcHAuXG4gICAqL1xuICBwcml2YXRlIGdldEN1cnJlbnRVc2VySWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgLy8gSW50ZW50YXIgb2J0ZW5lcmxvIGRlc2RlIHNlc3Npb25TdG9yYWdlIChlbCBBdXRoU2VydmljZSBsbyBndWFyZGEgYWhpKVxuICAgIGlmICh0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCB1aWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd1aWQnKSA/PyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd1c2VySWQnKTtcbiAgICAgIGlmICh1aWQpIHJldHVybiB1aWQ7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
import { inject, Injectable, Optional, Inject } from '@angular/core';
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
|
-
import { switchMap, from } from 'rxjs';
|
|
3
|
+
import { switchMap, from, of } from 'rxjs';
|
|
4
4
|
import { VALTECH_AUTH_CONFIG } from '../auth/config';
|
|
5
|
+
import { AuthService } from '../auth/auth.service';
|
|
6
|
+
import { FirestoreCollectionFactory } from '../firebase/firestore-collection';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
/**
|
|
7
|
-
* Servicio
|
|
9
|
+
* Servicio de PDF de plataforma (ADR-042). Reutilizable por cualquier app.
|
|
8
10
|
*
|
|
9
11
|
* El JWT del usuario se inyecta automáticamente por el authInterceptor
|
|
10
12
|
* (configurado vía provideValtechAuth). El app-id se toma de ValtechAuthConfig.
|
|
11
13
|
*
|
|
12
|
-
*
|
|
14
|
+
* Tres modos:
|
|
15
|
+
* - generate() → HTTP sync: genera y devuelve la URL presignada.
|
|
16
|
+
* - createJob() → async: encola un job (delivery.mode='async') y devuelve
|
|
17
|
+
* { jobId, status:'queued' }. El PDF se genera fuera de banda.
|
|
18
|
+
* - watchJob() → observa el estado del job en tiempo real (Firestore),
|
|
19
|
+
* proyectado por el backend al completarse.
|
|
20
|
+
*
|
|
21
|
+
* Fuentes (en los 3 modos):
|
|
13
22
|
* - source.template → renderiza una plantilla desde DynamoDB
|
|
14
23
|
* - source.html → HTML arbitrario provisto por el caller
|
|
15
24
|
* - source.url → URL pública (Puppeteer la carga)
|
|
@@ -18,6 +27,8 @@ export class PdfService {
|
|
|
18
27
|
constructor(config) {
|
|
19
28
|
this.config = config;
|
|
20
29
|
this.http = inject(HttpClient);
|
|
30
|
+
this.auth = inject(AuthService);
|
|
31
|
+
this.collections = inject(FirestoreCollectionFactory);
|
|
21
32
|
}
|
|
22
33
|
get baseUrl() {
|
|
23
34
|
return `${this.config?.apiUrl ?? ''}/v2/pdf`;
|
|
@@ -34,6 +45,35 @@ export class PdfService {
|
|
|
34
45
|
generateAndDownload(req, filename = 'documento.pdf') {
|
|
35
46
|
return this.generate(req).pipe(switchMap(result => from(this._download(result.url, filename))));
|
|
36
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Encola un job PDF async. El backend publica `pdf.generate.requested`; el PDF
|
|
50
|
+
* Lambda lo genera fuera de banda y, al completar, proyecta el estado a
|
|
51
|
+
* Firestore. Usar watchJob(jobId) para observar el resultado en tiempo real.
|
|
52
|
+
*/
|
|
53
|
+
createJob(req) {
|
|
54
|
+
const body = {
|
|
55
|
+
...req,
|
|
56
|
+
delivery: { ...(req.delivery ?? {}), mode: 'async' },
|
|
57
|
+
};
|
|
58
|
+
return this.http.post(`${this.baseUrl}/generate`, body, {
|
|
59
|
+
headers: this.appIdHeader,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Observa el estado de un job PDF async en tiempo real (onSnapshot del doc
|
|
64
|
+
* `apps/{appId}/orgs/{orgId}/pdf-jobs/{jobId}`). Emite null si no hay org
|
|
65
|
+
* activa o hasta que el doc exista. Cuando el job completa/falla, el doc trae
|
|
66
|
+
* status + url. Cierra la suscripción al completar tu propia lógica.
|
|
67
|
+
*/
|
|
68
|
+
watchJob(jobId) {
|
|
69
|
+
const orgId = this.auth.user()?.activeOrg ?? '';
|
|
70
|
+
if (!orgId || !jobId)
|
|
71
|
+
return of(null);
|
|
72
|
+
const coll = this.collections.create(`orgs/${orgId}/pdf-jobs`, {
|
|
73
|
+
timestamps: false,
|
|
74
|
+
});
|
|
75
|
+
return coll.watch(jobId);
|
|
76
|
+
}
|
|
37
77
|
async _download(url, _filename) {
|
|
38
78
|
window.open(url, '_blank', 'noopener');
|
|
39
79
|
}
|
|
@@ -49,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
49
89
|
type: Inject,
|
|
50
90
|
args: [VALTECH_AUTH_CONFIG]
|
|
51
91
|
}] }] });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3BkZi9wZGYuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUc5RTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFFSCxNQUFNLE9BQU8sVUFBVTtJQUtyQixZQUE2RCxNQUFnQztRQUFoQyxXQUFNLEdBQU4sTUFBTSxDQUEwQjtRQUpyRixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsZ0JBQVcsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUV1QyxDQUFDO0lBRWpHLElBQVksT0FBTztRQUNqQixPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRSxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQVksV0FBVztRQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztRQUNqQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQXVCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxXQUFXLEVBQUUsR0FBRyxFQUFFO1lBQ2hFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVztTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsR0FBdUIsRUFBRSxRQUFRLEdBQUcsZUFBZTtRQUNyRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsR0FBdUI7UUFDL0IsTUFBTSxJQUFJLEdBQXVCO1lBQy9CLEdBQUcsR0FBRztZQUNOLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7U0FDckQsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sV0FBVyxFQUFFLElBQUksRUFBRTtZQUN0RSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsUUFBUSxDQUFDLEtBQWE7UUFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQVMsUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUNyRSxVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVPLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBVyxFQUFFLFNBQWlCO1FBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDOytHQTFEVSxVQUFVLGtCQUtXLG1CQUFtQjttSEFMeEMsVUFBVSxjQURHLE1BQU07OzRGQUNuQixVQUFVO2tCQUR0QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBTW5CLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVkFMVEVDSF9BVVRIX0NPTkZJRyB9IGZyb20gJy4uL2F1dGgvY29uZmlnJztcbmltcG9ydCB7IFZhbHRlY2hBdXRoQ29uZmlnIH0gZnJvbSAnLi4vYXV0aC90eXBlcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5IH0gZnJvbSAnLi4vZmlyZWJhc2UvZmlyZXN0b3JlLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBQZGZHZW5lcmF0ZVJlcXVlc3QsIFBkZlJlc3VsdCwgUGRmSm9iLCBQZGZKb2JFbnF1ZXVlZCB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2lvIGRlIFBERiBkZSBwbGF0YWZvcm1hIChBRFItMDQyKS4gUmV1dGlsaXphYmxlIHBvciBjdWFscXVpZXIgYXBwLlxuICpcbiAqIEVsIEpXVCBkZWwgdXN1YXJpbyBzZSBpbnllY3RhIGF1dG9tw6F0aWNhbWVudGUgcG9yIGVsIGF1dGhJbnRlcmNlcHRvclxuICogKGNvbmZpZ3VyYWRvIHbDrWEgcHJvdmlkZVZhbHRlY2hBdXRoKS4gRWwgYXBwLWlkIHNlIHRvbWEgZGUgVmFsdGVjaEF1dGhDb25maWcuXG4gKlxuICogVHJlcyBtb2RvczpcbiAqICAgLSBnZW5lcmF0ZSgpICAg4oaSIEhUVFAgc3luYzogZ2VuZXJhIHkgZGV2dWVsdmUgbGEgVVJMIHByZXNpZ25hZGEuXG4gKiAgIC0gY3JlYXRlSm9iKCkgIOKGkiBhc3luYzogZW5jb2xhIHVuIGpvYiAoZGVsaXZlcnkubW9kZT0nYXN5bmMnKSB5IGRldnVlbHZlXG4gKiAgICAgICAgICAgICAgICAgICAgeyBqb2JJZCwgc3RhdHVzOidxdWV1ZWQnIH0uIEVsIFBERiBzZSBnZW5lcmEgZnVlcmEgZGUgYmFuZGEuXG4gKiAgIC0gd2F0Y2hKb2IoKSAgIOKGkiBvYnNlcnZhIGVsIGVzdGFkbyBkZWwgam9iIGVuIHRpZW1wbyByZWFsIChGaXJlc3RvcmUpLFxuICogICAgICAgICAgICAgICAgICAgIHByb3llY3RhZG8gcG9yIGVsIGJhY2tlbmQgYWwgY29tcGxldGFyc2UuXG4gKlxuICogRnVlbnRlcyAoZW4gbG9zIDMgbW9kb3MpOlxuICogICAtIHNvdXJjZS50ZW1wbGF0ZSDihpIgcmVuZGVyaXphIHVuYSBwbGFudGlsbGEgZGVzZGUgRHluYW1vREJcbiAqICAgLSBzb3VyY2UuaHRtbCAgICAg4oaSIEhUTUwgYXJiaXRyYXJpbyBwcm92aXN0byBwb3IgZWwgY2FsbGVyXG4gKiAgIC0gc291cmNlLnVybCAgICAgIOKGkiBVUkwgcMO6YmxpY2EgKFB1cHBldGVlciBsYSBjYXJnYSlcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQZGZTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIGNvbGxlY3Rpb25zID0gaW5qZWN0KEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5KTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQXV0aENvbmZpZyB8IG51bGwpIHt9XG5cbiAgcHJpdmF0ZSBnZXQgYmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZz8uYXBpVXJsID8/ICcnfS92Mi9wZGZgO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYXBwSWRIZWFkZXIoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgYXBwSWQgPSB0aGlzLmNvbmZpZz8uYXBwSWQ7XG4gICAgcmV0dXJuIGFwcElkID8geyAneC1hcHAtaWQnOiBhcHBJZCB9IDoge307XG4gIH1cblxuICBnZW5lcmF0ZShyZXE6IFBkZkdlbmVyYXRlUmVxdWVzdCk6IE9ic2VydmFibGU8UGRmUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFBkZlJlc3VsdD4oYCR7dGhpcy5iYXNlVXJsfS9nZW5lcmF0ZWAsIHJlcSwge1xuICAgICAgaGVhZGVyczogdGhpcy5hcHBJZEhlYWRlcixcbiAgICB9KTtcbiAgfVxuXG4gIGdlbmVyYXRlQW5kRG93bmxvYWQocmVxOiBQZGZHZW5lcmF0ZVJlcXVlc3QsIGZpbGVuYW1lID0gJ2RvY3VtZW50by5wZGYnKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGUocmVxKS5waXBlKHN3aXRjaE1hcChyZXN1bHQgPT4gZnJvbSh0aGlzLl9kb3dubG9hZChyZXN1bHQudXJsLCBmaWxlbmFtZSkpKSk7XG4gIH1cblxuICAvKipcbiAgICogRW5jb2xhIHVuIGpvYiBQREYgYXN5bmMuIEVsIGJhY2tlbmQgcHVibGljYSBgcGRmLmdlbmVyYXRlLnJlcXVlc3RlZGA7IGVsIFBERlxuICAgKiBMYW1iZGEgbG8gZ2VuZXJhIGZ1ZXJhIGRlIGJhbmRhIHksIGFsIGNvbXBsZXRhciwgcHJveWVjdGEgZWwgZXN0YWRvIGFcbiAgICogRmlyZXN0b3JlLiBVc2FyIHdhdGNoSm9iKGpvYklkKSBwYXJhIG9ic2VydmFyIGVsIHJlc3VsdGFkbyBlbiB0aWVtcG8gcmVhbC5cbiAgICovXG4gIGNyZWF0ZUpvYihyZXE6IFBkZkdlbmVyYXRlUmVxdWVzdCk6IE9ic2VydmFibGU8UGRmSm9iRW5xdWV1ZWQ+IHtcbiAgICBjb25zdCBib2R5OiBQZGZHZW5lcmF0ZVJlcXVlc3QgPSB7XG4gICAgICAuLi5yZXEsXG4gICAgICBkZWxpdmVyeTogeyAuLi4ocmVxLmRlbGl2ZXJ5ID8/IHt9KSwgbW9kZTogJ2FzeW5jJyB9LFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFBkZkpvYkVucXVldWVkPihgJHt0aGlzLmJhc2VVcmx9L2dlbmVyYXRlYCwgYm9keSwge1xuICAgICAgaGVhZGVyczogdGhpcy5hcHBJZEhlYWRlcixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnNlcnZhIGVsIGVzdGFkbyBkZSB1biBqb2IgUERGIGFzeW5jIGVuIHRpZW1wbyByZWFsIChvblNuYXBzaG90IGRlbCBkb2NcbiAgICogYGFwcHMve2FwcElkfS9vcmdzL3tvcmdJZH0vcGRmLWpvYnMve2pvYklkfWApLiBFbWl0ZSBudWxsIHNpIG5vIGhheSBvcmdcbiAgICogYWN0aXZhIG8gaGFzdGEgcXVlIGVsIGRvYyBleGlzdGEuIEN1YW5kbyBlbCBqb2IgY29tcGxldGEvZmFsbGEsIGVsIGRvYyB0cmFlXG4gICAqIHN0YXR1cyArIHVybC4gQ2llcnJhIGxhIHN1c2NyaXBjacOzbiBhbCBjb21wbGV0YXIgdHUgcHJvcGlhIGzDs2dpY2EuXG4gICAqL1xuICB3YXRjaEpvYihqb2JJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxQZGZKb2IgfCBudWxsPiB7XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLmF1dGgudXNlcigpPy5hY3RpdmVPcmcgPz8gJyc7XG4gICAgaWYgKCFvcmdJZCB8fCAham9iSWQpIHJldHVybiBvZihudWxsKTtcbiAgICBjb25zdCBjb2xsID0gdGhpcy5jb2xsZWN0aW9ucy5jcmVhdGU8UGRmSm9iPihgb3Jncy8ke29yZ0lkfS9wZGYtam9ic2AsIHtcbiAgICAgIHRpbWVzdGFtcHM6IGZhbHNlLFxuICAgIH0pO1xuICAgIHJldHVybiBjb2xsLndhdGNoKGpvYklkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2Rvd25sb2FkKHVybDogc3RyaW5nLCBfZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycsICdub29wZW5lcicpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3BkZi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGaXJlc3RvcmVEb2N1bWVudCB9IGZyb20gJy4uL2ZpcmViYXNlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQZGZUZW1wbGF0ZVNvdXJjZSB7XG4gIHRlbXBsYXRlOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBsYW5ndWFnZTogc3RyaW5nO1xuICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRmSHRtbFNvdXJjZSB7XG4gIGh0bWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZGZVcmxTb3VyY2Uge1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUGRmU291cmNlID0gUGRmVGVtcGxhdGVTb3VyY2UgfCBQZGZIdG1sU291cmNlIHwgUGRmVXJsU291cmNlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBkZkdlbmVyYXRlT3B0aW9ucyB7XG4gIGZvcm1hdD86ICdBNCcgfCAnTGV0dGVyJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZGZEZWxpdmVyeU9wdGlvbnMge1xuICBleHBpcmVzSW4/OiBudW1iZXI7XG4gIGZpbGVuYW1lPzogc3RyaW5nO1xuICAvKiogJ3N5bmMnIChkZWZhdWx0KSBnZW5lcmEgeSBkZXZ1ZWx2ZSBsYSBVUkw7ICdhc3luYycgZW5jb2xhIHVuIGpvYiAoQURSLTA0MikuICovXG4gIG1vZGU/OiAnc3luYycgfCAnYXN5bmMnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBkZkdlbmVyYXRlUmVxdWVzdCB7XG4gIHNvdXJjZTogUGRmU291cmNlO1xuICBvdXRwdXQ/OiBQZGZHZW5lcmF0ZU9wdGlvbnM7XG4gIGRlbGl2ZXJ5PzogUGRmRGVsaXZlcnlPcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBkZlJlc3VsdCB7XG4gIGpvYklkOiBzdHJpbmc7XG4gIHN0YXR1czogJ2NvbXBsZXRlZCc7XG4gIHVybDogc3RyaW5nO1xuICBleHBpcmVzQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUGRmSm9iU3RhdHVzID0gJ3F1ZXVlZCcgfCAncHJvY2Vzc2luZycgfCAnY29tcGxldGVkJyB8ICdmYWlsZWQnO1xuXG4vKiogUmVzcHVlc3RhIGFsIGVuY29sYXIgdW4gam9iIGFzeW5jIChBRFItMDQyKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGRmSm9iRW5xdWV1ZWQge1xuICBqb2JJZDogc3RyaW5nO1xuICBzdGF0dXM6ICdxdWV1ZWQnO1xufVxuXG4vKipcbiAqIEVzdGFkbyBkZSB1biBqb2IgUERGIGFzeW5jIHByb3llY3RhZG8gYSBGaXJlc3RvcmUgcG9yIGVsIGFkbWluIExhbWJkYVxuICogKGFwcHMve2FwcElkfS9vcmdzL3tvcmdJZH0vcGRmLWpvYnMve2pvYklkfSkuIExvIG9ic2VydmEgUGRmU2VydmljZS53YXRjaEpvYigpLlxuICogRXh0aWVuZGUgRmlyZXN0b3JlRG9jdW1lbnQgKGlkL2NyZWF0ZWRBdC91cGRhdGVkQXQgbG9zIG1hbmVqYSBGaXJlc3RvcmUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBkZkpvYiBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50IHtcbiAgam9iSWQ6IHN0cmluZztcbiAgYXBwSWQ6IHN0cmluZztcbiAgb3JnSWQ6IHN0cmluZztcbiAgc3RhdHVzOiBQZGZKb2JTdGF0dXM7XG4gIHVybD86IHN0cmluZztcbiAgczNLZXk/OiBzdHJpbmc7XG4gIGV4cGlyZXNBdD86IHN0cmluZztcbiAgZWxhcHNlZE1zPzogbnVtYmVyO1xuICBjYWxsZXI/OiBzdHJpbmc7XG59XG4iXX0=
|