valtech-components 4.0.256 → 4.0.259

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.
@@ -0,0 +1,137 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Input, Output, computed, inject, signal, } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * `val-picker-v2`
6
+ *
7
+ * Dropdown propio para pickers simples. Evita el trigger de `ion-select`, que en
8
+ * popovers de settings podía deformar el borde activo del botón.
9
+ */
10
+ export class PickerV2Component {
11
+ constructor() {
12
+ this.props = { options: [] };
13
+ this.selectionChange = new EventEmitter();
14
+ this.host = inject(ElementRef);
15
+ this.open = signal(false);
16
+ this.selectedOption = computed(() => this.props.options.find(option => option.value === this.props.selectedValue));
17
+ this.displayText = computed(() => this.selectedOption()?.label || this.props.placeholder || '');
18
+ }
19
+ toggle() {
20
+ if (this.props.disabled)
21
+ return;
22
+ this.open.update(open => !open);
23
+ }
24
+ select(option) {
25
+ if (option.disabled)
26
+ return;
27
+ this.open.set(false);
28
+ if (option.value === this.props.selectedValue)
29
+ return;
30
+ this.selectionChange.emit(option.value);
31
+ }
32
+ onDocumentClick(event) {
33
+ if (!this.open())
34
+ return;
35
+ if (!this.host.nativeElement.contains(event.target)) {
36
+ this.open.set(false);
37
+ }
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PickerV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PickerV2Component, isStandalone: true, selector: "val-picker-v2", inputs: { props: "props" }, outputs: { selectionChange: "selectionChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: `
41
+ <div class="pkv2">
42
+ <button
43
+ type="button"
44
+ class="pkv2__trigger"
45
+ [class.is-open]="open()"
46
+ [disabled]="props.disabled"
47
+ (click)="toggle()"
48
+ [attr.aria-haspopup]="'listbox'"
49
+ [attr.aria-expanded]="open()"
50
+ [attr.aria-label]="props.ariaLabel || displayText()"
51
+ >
52
+ @if (selectedOption()?.prefix; as prefix) {
53
+ <span class="pkv2__prefix">{{ prefix }}</span>
54
+ }
55
+ <span class="pkv2__name">{{ displayText() }}</span>
56
+ </button>
57
+
58
+ @if (open()) {
59
+ <ul class="pkv2__menu" role="listbox">
60
+ @for (option of props.options; track option.value) {
61
+ <li
62
+ class="pkv2__option"
63
+ [class.is-active]="option.value === props.selectedValue"
64
+ [class.is-disabled]="option.disabled"
65
+ role="option"
66
+ [attr.aria-selected]="option.value === props.selectedValue"
67
+ [attr.aria-disabled]="option.disabled"
68
+ (click)="select(option)"
69
+ >
70
+ @if (option.prefix; as prefix) {
71
+ <span class="pkv2__prefix">{{ prefix }}</span>
72
+ }
73
+ <span class="pkv2__name">{{ option.label }}</span>
74
+ @if (option.value === props.selectedValue) {
75
+ <span class="pkv2__check" aria-hidden="true">✓</span>
76
+ }
77
+ </li>
78
+ }
79
+ </ul>
80
+ }
81
+ </div>
82
+ `, isInline: true, styles: [":host{display:inline-block;max-width:100%}.pkv2{position:relative;display:inline-block;max-width:100%}.pkv2__trigger{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:40px;padding:8px 14px;margin:0;border:1.5px solid var(--ion-color-dark, #1a1a1a);border-radius:10px;background:var(--ion-card-background, var(--ion-background-color, #ffffff));color:var(--ion-text-color, #1a1a1a);cursor:pointer;font:inherit;font-size:.9375rem;font-weight:600;line-height:1.2;transition:border-color .15s ease,box-shadow .15s ease,opacity .15s ease}.pkv2__trigger.is-open,.pkv2__trigger:focus-visible{border-color:var(--ion-color-primary);outline:none;box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 112, 38, 223),.15)}.pkv2__trigger:disabled{cursor:default;opacity:.55}.pkv2__prefix{flex:0 0 auto;font-size:1.05em;line-height:1}.pkv2__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pkv2__menu{position:absolute;top:calc(100% + 6px);left:0;z-index:50;min-width:100%;margin:0;padding:6px;list-style:none;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px;background:var(--ion-card-background, var(--ion-background-color, #ffffff));box-shadow:0 8px 24px #00000029}.pkv2__option{display:flex;align-items:center;gap:10px;min-height:36px;padding:9px 12px;border-radius:8px;color:var(--ion-text-color, #1a1a1a);cursor:pointer;white-space:nowrap;transition:background .12s ease}.pkv2__option:hover{background:var(--ion-color-light, rgba(0, 0, 0, .05))}.pkv2__option.is-active{font-weight:700}.pkv2__option.is-disabled{pointer-events:none;opacity:.55}.pkv2__check{margin-left:auto;color:var(--ion-color-primary);font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PickerV2Component, decorators: [{
85
+ type: Component,
86
+ args: [{ selector: 'val-picker-v2', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
87
+ <div class="pkv2">
88
+ <button
89
+ type="button"
90
+ class="pkv2__trigger"
91
+ [class.is-open]="open()"
92
+ [disabled]="props.disabled"
93
+ (click)="toggle()"
94
+ [attr.aria-haspopup]="'listbox'"
95
+ [attr.aria-expanded]="open()"
96
+ [attr.aria-label]="props.ariaLabel || displayText()"
97
+ >
98
+ @if (selectedOption()?.prefix; as prefix) {
99
+ <span class="pkv2__prefix">{{ prefix }}</span>
100
+ }
101
+ <span class="pkv2__name">{{ displayText() }}</span>
102
+ </button>
103
+
104
+ @if (open()) {
105
+ <ul class="pkv2__menu" role="listbox">
106
+ @for (option of props.options; track option.value) {
107
+ <li
108
+ class="pkv2__option"
109
+ [class.is-active]="option.value === props.selectedValue"
110
+ [class.is-disabled]="option.disabled"
111
+ role="option"
112
+ [attr.aria-selected]="option.value === props.selectedValue"
113
+ [attr.aria-disabled]="option.disabled"
114
+ (click)="select(option)"
115
+ >
116
+ @if (option.prefix; as prefix) {
117
+ <span class="pkv2__prefix">{{ prefix }}</span>
118
+ }
119
+ <span class="pkv2__name">{{ option.label }}</span>
120
+ @if (option.value === props.selectedValue) {
121
+ <span class="pkv2__check" aria-hidden="true">✓</span>
122
+ }
123
+ </li>
124
+ }
125
+ </ul>
126
+ }
127
+ </div>
128
+ `, styles: [":host{display:inline-block;max-width:100%}.pkv2{position:relative;display:inline-block;max-width:100%}.pkv2__trigger{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:40px;padding:8px 14px;margin:0;border:1.5px solid var(--ion-color-dark, #1a1a1a);border-radius:10px;background:var(--ion-card-background, var(--ion-background-color, #ffffff));color:var(--ion-text-color, #1a1a1a);cursor:pointer;font:inherit;font-size:.9375rem;font-weight:600;line-height:1.2;transition:border-color .15s ease,box-shadow .15s ease,opacity .15s ease}.pkv2__trigger.is-open,.pkv2__trigger:focus-visible{border-color:var(--ion-color-primary);outline:none;box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 112, 38, 223),.15)}.pkv2__trigger:disabled{cursor:default;opacity:.55}.pkv2__prefix{flex:0 0 auto;font-size:1.05em;line-height:1}.pkv2__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pkv2__menu{position:absolute;top:calc(100% + 6px);left:0;z-index:50;min-width:100%;margin:0;padding:6px;list-style:none;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px;background:var(--ion-card-background, var(--ion-background-color, #ffffff));box-shadow:0 8px 24px #00000029}.pkv2__option{display:flex;align-items:center;gap:10px;min-height:36px;padding:9px 12px;border-radius:8px;color:var(--ion-text-color, #1a1a1a);cursor:pointer;white-space:nowrap;transition:background .12s ease}.pkv2__option:hover{background:var(--ion-color-light, rgba(0, 0, 0, .05))}.pkv2__option.is-active{font-weight:700}.pkv2__option.is-disabled{pointer-events:none;opacity:.55}.pkv2__check{margin-left:auto;color:var(--ion-color-primary);font-weight:700}\n"] }]
129
+ }], propDecorators: { props: [{
130
+ type: Input
131
+ }], selectionChange: [{
132
+ type: Output
133
+ }], onDocumentClick: [{
134
+ type: HostListener,
135
+ args: ['document:click', ['$event']]
136
+ }] } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcGlja2VyLXYyL3BpY2tlci12Mi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7O0FBaUJ2Qjs7Ozs7R0FLRztBQStKSCxNQUFNLE9BQU8saUJBQWlCO0lBOUo5QjtRQStKVyxVQUFLLEdBQXFCLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3pDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUvQyxTQUFJLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUVsRCxTQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzlHLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7S0FxQnJHO0lBbkJDLE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBc0I7UUFDM0IsSUFBSSxNQUFNLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFHRCxlQUFlLENBQUMsS0FBaUI7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFPO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQWMsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7K0dBNUJVLGlCQUFpQjttR0FBakIsaUJBQWlCLDROQXpKbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVCxzdURBNUNTLFlBQVk7OzRGQTJKWCxpQkFBaUI7a0JBOUo3QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBQ04sdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENUOzhCQWdIUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFxQlAsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpY2tlclYyT3B0aW9uIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcHJlZml4Pzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlja2VyVjJNZXRhZGF0YSB7XG4gIG9wdGlvbnM6IFBpY2tlclYyT3B0aW9uW107XG4gIHNlbGVjdGVkVmFsdWU/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGFyaWFMYWJlbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBgdmFsLXBpY2tlci12MmBcbiAqXG4gKiBEcm9wZG93biBwcm9waW8gcGFyYSBwaWNrZXJzIHNpbXBsZXMuIEV2aXRhIGVsIHRyaWdnZXIgZGUgYGlvbi1zZWxlY3RgLCBxdWUgZW5cbiAqIHBvcG92ZXJzIGRlIHNldHRpbmdzIHBvZMOtYSBkZWZvcm1hciBlbCBib3JkZSBhY3Rpdm8gZGVsIGJvdMOzbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBpY2tlci12MicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicGt2MlwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJwa3YyX190cmlnZ2VyXCJcbiAgICAgICAgW2NsYXNzLmlzLW9wZW5dPVwib3BlbigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCInbGlzdGJveCdcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW4oKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvcHMuYXJpYUxhYmVsIHx8IGRpc3BsYXlUZXh0KClcIlxuICAgICAgPlxuICAgICAgICBAaWYgKHNlbGVjdGVkT3B0aW9uKCk/LnByZWZpeDsgYXMgcHJlZml4KSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwa3YyX19wcmVmaXhcIj57eyBwcmVmaXggfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwa3YyX19uYW1lXCI+e3sgZGlzcGxheVRleHQoKSB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICBAaWYgKG9wZW4oKSkge1xuICAgICAgICA8dWwgY2xhc3M9XCJwa3YyX19tZW51XCIgcm9sZT1cImxpc3Rib3hcIj5cbiAgICAgICAgICBAZm9yIChvcHRpb24gb2YgcHJvcHMub3B0aW9uczsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJwa3YyX19vcHRpb25cIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cIm9wdGlvbi52YWx1ZSA9PT0gcHJvcHMuc2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1kaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJvcHRpb24udmFsdWUgPT09IHByb3BzLnNlbGVjdGVkVmFsdWVcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3Qob3B0aW9uKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAob3B0aW9uLnByZWZpeDsgYXMgcHJlZml4KSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwa3YyX19wcmVmaXhcIj57eyBwcmVmaXggfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwa3YyX19uYW1lXCI+e3sgb3B0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKG9wdGlvbi52YWx1ZSA9PT0gcHJvcHMuc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGt2Ml9fY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj7inJM8L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICA8L3VsPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAucGt2MiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5wa3YyX190cmlnZ2VyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgICAgIHBhZGRpbmc6IDhweCAxNHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW9uLWNvbG9yLWRhcmssICMxYTFhMWEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZmZmZikpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMxYTFhMWEpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMC4xNXMgZWFzZSxcbiAgICAgICAgICBvcGFjaXR5IDAuMTVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5wa3YyX190cmlnZ2VyLmlzLW9wZW4sXG4gICAgICAucGt2Ml9fdHJpZ2dlcjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMTEyLCAzOCwgMjIzKSwgMC4xNSk7XG4gICAgICB9XG5cbiAgICAgIC5wa3YyX190cmlnZ2VyOmRpc2FibGVkIHtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICBvcGFjaXR5OiAwLjU1O1xuICAgICAgfVxuXG4gICAgICAucGt2Ml9fcHJlZml4IHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wNWVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLnBrdjJfX25hbWUge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAucGt2Ml9fbWVudSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgKyA2cHgpO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB6LWluZGV4OiA1MDtcbiAgICAgICAgbWluLXdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDZweDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEyKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmZmZmKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLCAwLCAwLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLnBrdjJfX29wdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWluLWhlaWdodDogMzZweDtcbiAgICAgICAgcGFkZGluZzogOXB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMWExYTFhKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTJzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5wa3YyX19vcHRpb246aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4wNSkpO1xuICAgICAgfVxuXG4gICAgICAucGt2Ml9fb3B0aW9uLmlzLWFjdGl2ZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG5cbiAgICAgIC5wa3YyX19vcHRpb24uaXMtZGlzYWJsZWQge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgb3BhY2l0eTogMC41NTtcbiAgICAgIH1cblxuICAgICAgLnBrdjJfX2NoZWNrIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGlja2VyVjJDb21wb25lbnQge1xuICBASW5wdXQoKSBwcm9wczogUGlja2VyVjJNZXRhZGF0YSA9IHsgb3B0aW9uczogW10gfTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgcmVhZG9ubHkgb3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy5wcm9wcy5zZWxlY3RlZFZhbHVlKSk7XG4gIHJlYWRvbmx5IGRpc3BsYXlUZXh0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZE9wdGlvbigpPy5sYWJlbCB8fCB0aGlzLnByb3BzLnBsYWNlaG9sZGVyIHx8ICcnKTtcblxuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLm9wZW4udXBkYXRlKG9wZW4gPT4gIW9wZW4pO1xuICB9XG5cbiAgc2VsZWN0KG9wdGlvbjogUGlja2VyVjJPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAob3B0aW9uLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5vcGVuLnNldChmYWxzZSk7XG4gICAgaWYgKG9wdGlvbi52YWx1ZSA9PT0gdGhpcy5wcm9wcy5zZWxlY3RlZFZhbHVlKSByZXR1cm47XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChvcHRpb24udmFsdWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3BlbigpKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIHRoaXMub3Blbi5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -183,7 +183,7 @@ export class TicketCardComponent {
183
183
  const url = URL.createObjectURL(blob);
184
184
  const a = document.createElement('a');
185
185
  a.href = url;
186
- a.download = `entrada-${p.folio ?? 'bingo'}.png`;
186
+ a.download = `carton-${p.folio ?? 'bingo'}.png`;
187
187
  document.body.appendChild(a);
188
188
  a.click();
189
189
  document.body.removeChild(a);
@@ -206,102 +206,126 @@ export class TicketCardComponent {
206
206
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TicketCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
207
207
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TicketCardComponent, isStandalone: true, selector: "val-ticket-card", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
208
208
  <div class="ticket-card">
209
- @if (props().title) {
210
- <div class="ticket-card__title">{{ props().title }}</div>
211
- }
212
-
213
- <div class="ticket-card__qr">
214
- @if (qr(); as q) {
215
- <val-qr-code [props]="qrProps(q)" />
216
- } @else if (failed()) {
217
- <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
218
- } @else {
219
- <div class="ticket-card__qr-loading">
220
- <ion-spinner name="crescent" aria-label="Generando QR" />
221
- </div>
209
+ <div class="ticket-card__header">
210
+ <div class="ticket-card__eyebrow">{{ t('cardLabel') }}</div>
211
+ @if (props().title) {
212
+ <div class="ticket-card__title">{{ props().title }}</div>
222
213
  }
223
214
  </div>
224
215
 
225
- <div class="ticket-card__meta">
226
- @if (folioText(); as f) {
227
- <div class="ticket-card__folio">{{ f }}</div>
228
- }
229
- @if (props().buyerName) {
230
- <div class="ticket-card__buyer">{{ props().buyerName }}</div>
231
- }
232
- @if (statusLabel(); as s) {
233
- <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
234
- }
235
- </div>
236
-
237
- @if ((props().showDownload || props().showShare) && qr()) {
238
- <div class="ticket-card__actions">
239
- @if (props().showDownload) {
240
- <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
241
- <ion-icon name="download-outline" slot="start" />
242
- {{ props().downloadLabel || t('download') }}
243
- </ion-button>
216
+ <div class="ticket-card__body">
217
+ <div class="ticket-card__qr">
218
+ @if (qr(); as q) {
219
+ <val-qr-code [props]="qrProps(q)" />
220
+ } @else if (failed()) {
221
+ <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
222
+ } @else {
223
+ <div class="ticket-card__qr-loading">
224
+ <ion-spinner name="crescent" aria-label="Generando QR" />
225
+ </div>
244
226
  }
245
- @if (props().showShare) {
246
- <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
247
- <ion-icon name="share-outline" slot="start" />
248
- {{ props().shareLabel || t('share') }}
249
- </ion-button>
227
+ </div>
228
+
229
+ <div class="ticket-card__perf" aria-hidden="true">
230
+ <span class="ticket-card__notch ticket-card__notch--left"></span>
231
+ <span class="ticket-card__notch ticket-card__notch--right"></span>
232
+ </div>
233
+
234
+ <div class="ticket-card__stub">
235
+ <div class="ticket-card__meta">
236
+ @if (folioText(); as f) {
237
+ <div class="ticket-card__folio">{{ f }}</div>
238
+ }
239
+ @if (props().buyerName) {
240
+ <div class="ticket-card__buyer">{{ props().buyerName }}</div>
241
+ }
242
+ @if (statusLabel(); as s) {
243
+ <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
244
+ }
245
+ </div>
246
+
247
+ @if ((props().showDownload || props().showShare) && qr()) {
248
+ <div class="ticket-card__actions">
249
+ @if (props().showDownload) {
250
+ <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
251
+ <ion-icon name="download-outline" slot="start" />
252
+ {{ props().downloadLabel || t('download') }}
253
+ </ion-button>
254
+ }
255
+ @if (props().showShare) {
256
+ <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
257
+ <ion-icon name="share-outline" slot="start" />
258
+ {{ props().shareLabel || t('share') }}
259
+ </ion-button>
260
+ }
261
+ </div>
250
262
  }
251
263
  </div>
252
- }
264
+ </div>
253
265
  </div>
254
- `, isInline: true, styles: ["@charset \"UTF-8\";:host{display:block}.ticket-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px;border:1px solid var(--ion-color-light-shade, #e0e0e0);border-radius:16px;background:var(--ion-card-background, #ffffff);max-width:320px;margin:0 auto}.ticket-card__title{font-size:1rem;font-weight:700;color:var(--ion-color-dark);text-align:center}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:200px}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:200px;height:200px}.ticket-card__qr-fallback{font-family:monospace;font-size:.75rem;color:var(--ion-color-medium);word-break:break-all;text-align:center;padding:16px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}.ticket-card__folio{font-size:1rem;font-weight:700;color:var(--ion-color-dark)}.ticket-card__buyer{font-size:.875rem;color:var(--ion-color-medium)}.ticket-card__badge{margin-top:4px;font-size:.75rem;font-weight:600;padding:3px 12px;border-radius:999px;background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff);white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #2dd36f);color:var(--ion-color-success-contrast, #fff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff)}.ticket-card__actions{width:100%;display:flex;flex-direction:column;gap:8px}.ticket-card__actions ion-button{--border-radius: 10px;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: QrCodeComponent, selector: "val-qr-code", inputs: ["props"], outputs: ["actionComplete", "imageLoad", "imageError"] }] }); }
266
+ `, isInline: true, styles: [":host{display:block}.ticket-card{--ticket-accent: var(--ion-color-primary, #ff00b2);--ticket-accent-2: #7026df;display:flex;flex-direction:column;width:min(100%,380px);margin:0 auto;overflow:hidden;border:1px solid var(--ion-color-light-shade, #d8d8dd);border-radius:22px;background:var(--ion-card-background, #ffffff);box-shadow:0 18px 50px #1f192d1f}.ticket-card__header{padding:22px 22px 20px;text-align:center;color:#fff;background:linear-gradient(135deg,var(--ticket-accent) 0%,var(--ticket-accent-2) 100%)}.ticket-card__eyebrow{margin-bottom:6px;font-size:.6875rem;font-weight:800;letter-spacing:.14em;line-height:1.2;text-transform:uppercase;opacity:.78}.ticket-card__title{font-size:1.25rem;font-weight:800;line-height:1.18}.ticket-card__body{position:relative;display:flex;flex-direction:column;align-items:stretch;background:radial-gradient(circle at 50% 0,rgba(255,0,178,.08),transparent 36%),var(--ion-card-background, #ffffff)}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:232px;padding:22px 22px 18px}.ticket-card__qr val-qr-code{display:block;padding:10px;border:1px solid rgba(31,25,45,.08);border-radius:18px;background:#fff;box-shadow:0 10px 30px #1f192d14}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:220px;height:220px;border-radius:18px;background:#fff}.ticket-card__qr-fallback{padding:18px;border-radius:14px;background:#6b667514;color:var(--ion-color-medium, #6b6675);font-family:monospace;font-size:.75rem;line-height:1.5;text-align:center;word-break:break-all}.ticket-card__perf{position:relative;margin:0 22px;border-top:2px dashed rgba(107,102,117,.28)}.ticket-card__notch{position:absolute;top:-14px;width:26px;height:26px;border-radius:50%;background:var(--ion-background-color, #f8f8f8);box-shadow:inset 0 0 0 1px #1f192d14}.ticket-card__notch--left{left:-36px}.ticket-card__notch--right{right:-36px}.ticket-card__stub{display:flex;flex-direction:column;gap:18px;padding:18px 22px 22px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;text-align:center}.ticket-card__folio{color:var(--ion-color-dark, #2f2b38);font-size:1.45rem;font-weight:850;line-height:1.15}.ticket-card__buyer{max-width:100%;overflow:hidden;color:var(--ion-color-medium, #6b6675);font-size:.9375rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.ticket-card__badge{display:inline-flex;align-items:center;min-height:30px;margin-top:2px;padding:5px 14px;border-radius:999px;background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff);font-size:.8125rem;font-weight:800;line-height:1;white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #16a34a);color:var(--ion-color-success-contrast, #ffffff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff)}.ticket-card__actions{display:grid;gap:10px;width:100%}.ticket-card__actions ion-button{min-height:48px;margin:0;font-weight:800;--border-radius: 14px;--border-width: 1.5px}@media (max-width: 420px){.ticket-card{width:100%;border-radius:20px}.ticket-card__qr{min-height:216px;padding-inline:16px}.ticket-card__stub{padding-inline:16px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: QrCodeComponent, selector: "val-qr-code", inputs: ["props"], outputs: ["actionComplete", "imageLoad", "imageError"] }] }); }
255
267
  }
256
268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TicketCardComponent, decorators: [{
257
269
  type: Component,
258
270
  args: [{ selector: 'val-ticket-card', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonSpinner, QrCodeComponent], template: `
259
271
  <div class="ticket-card">
260
- @if (props().title) {
261
- <div class="ticket-card__title">{{ props().title }}</div>
262
- }
263
-
264
- <div class="ticket-card__qr">
265
- @if (qr(); as q) {
266
- <val-qr-code [props]="qrProps(q)" />
267
- } @else if (failed()) {
268
- <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
269
- } @else {
270
- <div class="ticket-card__qr-loading">
271
- <ion-spinner name="crescent" aria-label="Generando QR" />
272
- </div>
272
+ <div class="ticket-card__header">
273
+ <div class="ticket-card__eyebrow">{{ t('cardLabel') }}</div>
274
+ @if (props().title) {
275
+ <div class="ticket-card__title">{{ props().title }}</div>
273
276
  }
274
277
  </div>
275
278
 
276
- <div class="ticket-card__meta">
277
- @if (folioText(); as f) {
278
- <div class="ticket-card__folio">{{ f }}</div>
279
- }
280
- @if (props().buyerName) {
281
- <div class="ticket-card__buyer">{{ props().buyerName }}</div>
282
- }
283
- @if (statusLabel(); as s) {
284
- <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
285
- }
286
- </div>
287
-
288
- @if ((props().showDownload || props().showShare) && qr()) {
289
- <div class="ticket-card__actions">
290
- @if (props().showDownload) {
291
- <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
292
- <ion-icon name="download-outline" slot="start" />
293
- {{ props().downloadLabel || t('download') }}
294
- </ion-button>
279
+ <div class="ticket-card__body">
280
+ <div class="ticket-card__qr">
281
+ @if (qr(); as q) {
282
+ <val-qr-code [props]="qrProps(q)" />
283
+ } @else if (failed()) {
284
+ <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
285
+ } @else {
286
+ <div class="ticket-card__qr-loading">
287
+ <ion-spinner name="crescent" aria-label="Generando QR" />
288
+ </div>
295
289
  }
296
- @if (props().showShare) {
297
- <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
298
- <ion-icon name="share-outline" slot="start" />
299
- {{ props().shareLabel || t('share') }}
300
- </ion-button>
290
+ </div>
291
+
292
+ <div class="ticket-card__perf" aria-hidden="true">
293
+ <span class="ticket-card__notch ticket-card__notch--left"></span>
294
+ <span class="ticket-card__notch ticket-card__notch--right"></span>
295
+ </div>
296
+
297
+ <div class="ticket-card__stub">
298
+ <div class="ticket-card__meta">
299
+ @if (folioText(); as f) {
300
+ <div class="ticket-card__folio">{{ f }}</div>
301
+ }
302
+ @if (props().buyerName) {
303
+ <div class="ticket-card__buyer">{{ props().buyerName }}</div>
304
+ }
305
+ @if (statusLabel(); as s) {
306
+ <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
307
+ }
308
+ </div>
309
+
310
+ @if ((props().showDownload || props().showShare) && qr()) {
311
+ <div class="ticket-card__actions">
312
+ @if (props().showDownload) {
313
+ <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
314
+ <ion-icon name="download-outline" slot="start" />
315
+ {{ props().downloadLabel || t('download') }}
316
+ </ion-button>
317
+ }
318
+ @if (props().showShare) {
319
+ <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
320
+ <ion-icon name="share-outline" slot="start" />
321
+ {{ props().shareLabel || t('share') }}
322
+ </ion-button>
323
+ }
324
+ </div>
301
325
  }
302
326
  </div>
303
- }
327
+ </div>
304
328
  </div>
305
- `, styles: ["@charset \"UTF-8\";:host{display:block}.ticket-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px;border:1px solid var(--ion-color-light-shade, #e0e0e0);border-radius:16px;background:var(--ion-card-background, #ffffff);max-width:320px;margin:0 auto}.ticket-card__title{font-size:1rem;font-weight:700;color:var(--ion-color-dark);text-align:center}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:200px}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:200px;height:200px}.ticket-card__qr-fallback{font-family:monospace;font-size:.75rem;color:var(--ion-color-medium);word-break:break-all;text-align:center;padding:16px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}.ticket-card__folio{font-size:1rem;font-weight:700;color:var(--ion-color-dark)}.ticket-card__buyer{font-size:.875rem;color:var(--ion-color-medium)}.ticket-card__badge{margin-top:4px;font-size:.75rem;font-weight:600;padding:3px 12px;border-radius:999px;background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff);white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #2dd36f);color:var(--ion-color-success-contrast, #fff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff)}.ticket-card__actions{width:100%;display:flex;flex-direction:column;gap:8px}.ticket-card__actions ion-button{--border-radius: 10px;margin:0}\n"] }]
329
+ `, styles: [":host{display:block}.ticket-card{--ticket-accent: var(--ion-color-primary, #ff00b2);--ticket-accent-2: #7026df;display:flex;flex-direction:column;width:min(100%,380px);margin:0 auto;overflow:hidden;border:1px solid var(--ion-color-light-shade, #d8d8dd);border-radius:22px;background:var(--ion-card-background, #ffffff);box-shadow:0 18px 50px #1f192d1f}.ticket-card__header{padding:22px 22px 20px;text-align:center;color:#fff;background:linear-gradient(135deg,var(--ticket-accent) 0%,var(--ticket-accent-2) 100%)}.ticket-card__eyebrow{margin-bottom:6px;font-size:.6875rem;font-weight:800;letter-spacing:.14em;line-height:1.2;text-transform:uppercase;opacity:.78}.ticket-card__title{font-size:1.25rem;font-weight:800;line-height:1.18}.ticket-card__body{position:relative;display:flex;flex-direction:column;align-items:stretch;background:radial-gradient(circle at 50% 0,rgba(255,0,178,.08),transparent 36%),var(--ion-card-background, #ffffff)}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:232px;padding:22px 22px 18px}.ticket-card__qr val-qr-code{display:block;padding:10px;border:1px solid rgba(31,25,45,.08);border-radius:18px;background:#fff;box-shadow:0 10px 30px #1f192d14}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:220px;height:220px;border-radius:18px;background:#fff}.ticket-card__qr-fallback{padding:18px;border-radius:14px;background:#6b667514;color:var(--ion-color-medium, #6b6675);font-family:monospace;font-size:.75rem;line-height:1.5;text-align:center;word-break:break-all}.ticket-card__perf{position:relative;margin:0 22px;border-top:2px dashed rgba(107,102,117,.28)}.ticket-card__notch{position:absolute;top:-14px;width:26px;height:26px;border-radius:50%;background:var(--ion-background-color, #f8f8f8);box-shadow:inset 0 0 0 1px #1f192d14}.ticket-card__notch--left{left:-36px}.ticket-card__notch--right{right:-36px}.ticket-card__stub{display:flex;flex-direction:column;gap:18px;padding:18px 22px 22px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;text-align:center}.ticket-card__folio{color:var(--ion-color-dark, #2f2b38);font-size:1.45rem;font-weight:850;line-height:1.15}.ticket-card__buyer{max-width:100%;overflow:hidden;color:var(--ion-color-medium, #6b6675);font-size:.9375rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.ticket-card__badge{display:inline-flex;align-items:center;min-height:30px;margin-top:2px;padding:5px 14px;border-radius:999px;background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff);font-size:.8125rem;font-weight:800;line-height:1;white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #16a34a);color:var(--ion-color-success-contrast, #ffffff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff)}.ticket-card__actions{display:grid;gap:10px;width:100%}.ticket-card__actions ion-button{min-height:48px;margin:0;font-weight:800;--border-radius: 14px;--border-width: 1.5px}@media (max-width: 420px){.ticket-card{width:100%;border-radius:20px}.ticket-card__qr{min-height:216px;padding-inline:16px}.ticket-card__stub{padding-inline:16px}}\n"] }]
306
330
  }], ctorParameters: () => [] });
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy90aWNrZXQtY2FyZC90aWNrZXQtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXREOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQXVESCxNQUFNLE9BQU8sbUJBQW1CO0lBa0I5QjtRQWpCQSx5Q0FBeUM7UUFDaEMsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXNCLENBQUM7UUFFOUMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FB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O0dBK0NUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24sIElvblNwaW5uZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgZG93bmxvYWRPdXRsaW5lLCBzaGFyZU91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IFFyQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3FyLWNvZGUvcXItY29kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXJDb2RlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy9xci1jb2RlL3R5cGVzJztcbmltcG9ydCB7IFFyR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3FyLWdlbmVyYXRvci9xci1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBRclJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3FyLWdlbmVyYXRvci90eXBlcyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBUaWNrZXRDYXJkSW1hZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGlja2V0LWNhcmQtaW1hZ2UvdGlja2V0LWNhcmQtaW1hZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBUaWNrZXRDYXJkTWV0YWRhdGEsIFRpY2tldENhcmRTdGF0dXMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFRJQ0tFVF9DQVJEX0kxOE4gfSBmcm9tICcuL3RpY2tldC1jYXJkLmkxOG4nO1xuXG4vKipcbiAqIHZhbC10aWNrZXQtY2FyZFxuICpcbiAqIFRhcmpldGEgcHJlc2VudGFjaW9uYWwgZGUgdW5hIGVudHJhZGEgZGUgYmluZ286IG11ZXN0cmEgZWwgUVIgZXNjYW5lYWJsZVxuICogKGdlbmVyYWRvIGRlbCBgcXJUb2tlbmAgb3BhY28gZmlybWFkbyB2w61hIGBRckdlbmVyYXRvclNlcnZpY2VgKSwgZWwgZm9saW8sIGVsXG4gKiBub21icmUgZGVsIGNvbXByYWRvciAoc2kgaGF5KSB5IHVuIGJhZGdlIGRlIGVzdGFkbyAodmVuZGlkYSAvIGNhbmplYWRhKS5cbiAqXG4gKiBFcyBsYSBwaWV6YSBxdWUgZWwgdmVuZGVkb3IgbGUgZW50cmVnYSBhbCBjb21wcmFkb3IgdHJhcyBsYSB2ZW50YSB5IHF1ZSBsYVxuICogdGFxdWlsbGEgZXNjYW5lYSBwYXJhIGNhbmplYXIuIE9iamVjdC1maXJzdCAoYGlucHV0KClgIHNpZ25hbCksIGkxOG5cbiAqIGF1dG8tcmVnaXN0cmFkbyAobmFtZXNwYWNlIGBUaWNrZXRDYXJkYCkuIEVzdGFkb3MgbmVnYXRpdm9zL25ldXRyb3MgZW4gZ3Jpc1xuICogbXV0ZWQgKGNvbnZlbmNpw7NuIGRlbCBmYWN0b3J5IOKAlCBzaW4gcm9qbyBkZSBhbGFybWEpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXRpY2tldC1jYXJkIFtwcm9wc109XCJ7IHFyVG9rZW46IHRpY2tldC5xclRva2VuLCBmb2xpbzogdGlja2V0LmZvbGlvLFxuICogICBidXllck5hbWU6IHRpY2tldC5jb21wcmFkb3JOb21icmUsIHN0YXR1czogJ3NvbGQnLCBzaG93U2hhcmU6IHRydWUgfVwiIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXRpY2tldC1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQnV0dG9uLCBJb25JY29uLCBJb25TcGlubmVyLCBRckNvZGVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY2FyZFwiPlxuICAgICAgQGlmIChwcm9wcygpLnRpdGxlKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY2FyZF9fdGl0bGVcIj57eyBwcm9wcygpLnRpdGxlIH19PC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY2FyZF9fcXJcIj5cbiAgICAgICAgQGlmIChxcigpOyBhcyBxKSB7XG4gICAgICAgICAgPHZhbC1xci1jb2RlIFtwcm9wc109XCJxclByb3BzKHEpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoZmFpbGVkKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWNhcmRfX3FyLWZhbGxiYWNrXCI+e3sgdG9rZW5TaG9ydCgpIH19PC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY2FyZF9fcXItbG9hZGluZ1wiPlxuICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIGFyaWEtbGFiZWw9XCJHZW5lcmFuZG8gUVJcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1jYXJkX19tZXRhXCI+XG4gICAgICAgIEBpZiAoZm9saW9UZXh0KCk7IGFzIGYpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWNhcmRfX2ZvbGlvXCI+e3sgZiB9fTwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAocHJvcHMoKS5idXllck5hbWUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWNhcmRfX2J1eWVyXCI+e3sgcHJvcHMoKS5idXllck5hbWUgfX08L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHN0YXR1c0xhYmVsKCk7IGFzIHMpIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpY2tldC1jYXJkX19iYWRnZVwiIFthdHRyLmRhdGEtc3RhdHVzXT1cInN0YXR1cygpXCI+e3sgcyB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoKHByb3BzKCkuc2hvd0Rvd25sb2FkIHx8IHByb3BzKCkuc2hvd1NoYXJlKSAmJiBxcigpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY2FyZF9fYWN0aW9uc1wiPlxuICAgICAgICAgIEBpZiAocHJvcHMoKS5zaG93RG93bmxvYWQpIHtcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJvdXRsaW5lXCIgZXhwYW5kPVwiYmxvY2tcIiBbZGlzYWJsZWRdPVwiZG93bmxvYWRpbmcoKVwiIChjbGljayk9XCJkb3dubG9hZENhcmQoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIiAvPlxuICAgICAgICAgICAgICB7eyBwcm9wcygpLmRvd25sb2FkTGFiZWwgfHwgdCgnZG93bmxvYWQnKSB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHByb3BzKCkuc2hvd1NoYXJlKSB7XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIGV4cGFuZD1cImJsb2NrXCIgW2Rpc2FibGVkXT1cInNoYXJpbmcoKVwiIChjbGljayk9XCJzaGFyZUNhcmQoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInNoYXJlLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIiAvPlxuICAgICAgICAgICAgICB7eyBwcm9wcygpLnNoYXJlTGFiZWwgfHwgdCgnc2hhcmUnKSB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3RpY2tldC1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRpY2tldENhcmRDb21wb25lbnQge1xuICAvKiogUHJvcHMgb2JqZWN0LWZpcnN0IGRlbCBjb21wb25lbnRlLiAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0LnJlcXVpcmVkPFRpY2tldENhcmRNZXRhZGF0YT4oKTtcblxuICBwcml2YXRlIHFyU2VydmljZSA9IGluamVjdChRckdlbmVyYXRvclNlcnZpY2UpO1xuICBwcml2YXRlIHRpY2tldENhcmRJbWFnZVNlcnZpY2UgPSBpbmplY3QoVGlja2V0Q2FyZEltYWdlU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcblxuICAvKiogUVIgZ2VuZXJhZG8gKG51bGwgbWllbnRyYXMgY2FyZ2EgbyBzaSBmYWxsw7MpLiAqL1xuICByZWFkb25seSBxciA9IHNpZ25hbDxRclJlc3VsdCB8IG51bGw+KG51bGwpO1xuICAvKiogRmFsbMOzIGxhIGdlbmVyYWNpw7NuIGRlbCBRUiDihpIgZmFsbGJhY2sgYWwgdG9rZW4gY29ydG8uICovXG4gIHJlYWRvbmx5IGZhaWxlZCA9IHNpZ25hbChmYWxzZSk7XG4gIC8qKiBUcnVlIG1pZW50cmFzIHNlIGdlbmVyYSB5IGNvbXBhcnRlIGxhIHRhcmpldGEgYnJhbmRlZC4gKi9cbiAgcmVhZG9ubHkgc2hhcmluZyA9IHNpZ25hbChmYWxzZSk7XG4gIC8qKiBUcnVlIG1pZW50cmFzIHNlIGdlbmVyYSB5IGRlc2NhcmdhIGxhIHRhcmpldGEgYnJhbmRlZC4gKi9cbiAgcmVhZG9ubHkgZG93bmxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFkZEljb25zKHsgc2hhcmVPdXRsaW5lLCBkb3dubG9hZE91dGxpbmUgfSk7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ1RpY2tldENhcmQnLCBUSUNLRVRfQ0FSRF9JMThOKTtcblxuICAgIC8vIFJlZ2VuZXJhIGVsIFFSIGN1YW5kbyBjYW1iaWEgZWwgdG9rZW4gbyBlbCB0YW1hw7FvLlxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLnByb3BzKCkucXJUb2tlbjtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMoKS5xclNpemUgPz8gMjAwO1xuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgdGhpcy5xci5zZXQobnVsbCk7XG4gICAgICAgICAgdGhpcy5mYWlsZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLmdlbmVyYXRlKHRva2VuLCBzaXplKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZW5lcmF0ZShkYXRhOiBzdHJpbmcsIHNpemU6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZmFpbGVkLnNldChmYWxzZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucXJTZXJ2aWNlLmdlbmVyYXRlKHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgd2lkdGg6IHNpemUsXG4gICAgICAgIGhlaWdodDogc2l6ZSxcbiAgICAgICAgbWFyZ2luOiAxLFxuICAgICAgICBkb3RzU3R5bGU6ICdzcXVhcmUnLFxuICAgICAgICBkb3RzQ29sb3I6ICcjMDAwMDAwJyxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZmZmZicsXG4gICAgICAgIGVycm9yQ29ycmVjdGlvbkxldmVsOiAnTScsXG4gICAgICAgIGZvcm1hdDogJ3BuZycsXG4gICAgICB9KTtcbiAgICAgIHRoaXMucXIuc2V0KHJlc3VsdCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBTaW4gdG9hc3QvdGhyb3cg4oCUIGVsIGZhbGxiYWNrIG11ZXN0cmEgZWwgdG9rZW4gY29ydG8uIEVsIGNvbnN1bWVyXG4gICAgICAvLyBzaWd1ZSBwdWRpZW5kbyBjYW5qZWFyIHRpcGVhbmRvL2VzY2FuZWFuZG8gc2kgaGFjZSBmYWx0YS5cbiAgICAgIHRoaXMucXIuc2V0KG51bGwpO1xuICAgICAgdGhpcy5mYWlsZWQuc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdUaWNrZXRDYXJkJyk7XG4gIH1cblxuICByZWFkb25seSBzdGF0dXMgPSBjb21wdXRlZDxUaWNrZXRDYXJkU3RhdHVzPigoKSA9PiB0aGlzLnByb3BzKCkuc3RhdHVzID8/ICduZXV0cmFsJyk7XG5cbiAgcmVhZG9ubHkgdG9rZW5TaG9ydCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0ayA9IHRoaXMucHJvcHMoKS5xclRva2VuID8/ICcnO1xuICAgIHJldHVybiB0ay5sZW5ndGggPiAxNiA/IGAke3RrLnNsaWNlKDAsIDE2KX3igKZgIDogdGs7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGZvbGlvVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IGZvbGlvID0gdGhpcy5wcm9wcygpLmZvbGlvO1xuICAgIGlmIChmb2xpbyA9PT0gdW5kZWZpbmVkIHx8IGZvbGlvID09PSBudWxsIHx8IGZvbGlvID09PSAnJykgcmV0dXJuICcnO1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5wcm9wcygpLmZvbGlvTGFiZWwgPz8gdGhpcy50KCdmb2xpbycpO1xuICAgIHJldHVybiBgJHtsYWJlbH0gIyR7Zm9saW99YDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc3RhdHVzTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnN0YXR1cygpO1xuICAgIGlmIChzdGF0dXMgPT09ICdzb2xkJykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMoKS5zdGF0dXNTb2xkTGFiZWwgPz8gdGhpcy50KCdzdGF0dXNTb2xkJyk7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09ICdjaGVja2VkSW4nKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcygpLnN0YXR1c0NoZWNrZWRJbkxhYmVsID8/IHRoaXMudCgnc3RhdHVzQ2hlY2tlZEluJyk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfSk7XG5cbiAgYXN5bmMgc2hhcmVDYXJkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHEgPSB0aGlzLnFyKCk7XG4gICAgaWYgKCFxKSByZXR1cm47XG4gICAgY29uc3QgcCA9IHRoaXMucHJvcHMoKTtcbiAgICB0aGlzLnNoYXJpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmJ1aWxkSW1hZ2VDb25maWcocSwgcCk7XG4gICAgICBjb25zdCBzaGFyZWQgPSBhd2FpdCB0aGlzLnRpY2tldENhcmRJbWFnZVNlcnZpY2Uuc2hhcmUoY29uZmlnLCBwLnRpdGxlIHx8IHAuc2hhcmVCcmFuZE5hbWUpO1xuICAgICAgaWYgKCFzaGFyZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb3B5VG9DbGlwYm9hcmQoY29uZmlnLCBwKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zaGFyaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZG93bmxvYWRDYXJkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHEgPSB0aGlzLnFyKCk7XG4gICAgaWYgKCFxKSByZXR1cm47XG4gICAgY29uc3QgcCA9IHRoaXMucHJvcHMoKTtcbiAgICB0aGlzLmRvd25sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyRG93bmxvYWQodGhpcy5idWlsZEltYWdlQ29uZmlnKHEsIHApLCBwKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5kb3dubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbWFnZUNvbmZpZyhxOiBRclJlc3VsdCwgcDogVGlja2V0Q2FyZE1ldGFkYXRhKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHFyRGF0YVVybDogcS5kYXRhVXJsLFxuICAgICAgbG9nb1VybDogcC5zaGFyZUxvZ29VcmwsXG4gICAgICBicmFuZENvbG9yOiBwLnNoYXJlQnJhbmRDb2xvcixcbiAgICAgIGJyYW5kQ29sb3JUbzogcC5zaGFyZUJyYW5kQ29sb3JUbyxcbiAgICAgIGJyYW5kTmFtZTogcC5zaGFyZUJyYW5kTmFtZSxcbiAgICAgIGZvbGlvOiBwLmZvbGlvLFxuICAgICAgZm9saW9MYWJlbDogcC5zaGFyZUZvbGlvTGFiZWwsXG4gICAgICBidXllck5hbWU6IHAuYnV5ZXJOYW1lLFxuICAgICAgZXZlbnREYXRlOiBwLnNoYXJlRXZlbnREYXRlLFxuICAgICAgZXZlbnRMb2NhdGlvbjogcC5zaGFyZUV2ZW50TG9jYXRpb24sXG4gICAgICBzY2FuSGludDogcC5zaGFyZVNjYW5IaW50LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvcHlUb0NsaXBib2FyZChcbiAgICBjb25maWc6IFBhcmFtZXRlcnM8dHlwZW9mIHRoaXMudGlja2V0Q2FyZEltYWdlU2VydmljZS5nZW5lcmF0ZT5bMF0sXG4gICAgcDogVGlja2V0Q2FyZE1ldGFkYXRhXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIEludGVudGEgY29waWFyIGxhIGltYWdlbiBicmFuZGVkIGFsIGNsaXBib2FyZCAoQ2hyb21lL0VkZ2UvU2FmYXJpIGRlc2t0b3ApLlxuICAgIGlmICh0eXBlb2YgQ2xpcGJvYXJkSXRlbSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCB0aGlzLnRpY2tldENhcmRJbWFnZVNlcnZpY2UuZ2VuZXJhdGUoY29uZmlnKTtcbiAgICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZShbbmV3IENsaXBib2FyZEl0ZW0oeyAnaW1hZ2UvcG5nJzogYmxvYiB9KV0pO1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NvcGllZCcpLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIENsaXBib2FyZEl0ZW0gbm8gc29wb3J0YWRvIG8gcGVybWlzbyBkZW5lZ2FkbyDihpIgY2FlciBhIHRleHRvXG4gICAgICB9XG4gICAgfVxuICAgIC8vIEZhbGxiYWNrOiBjb3BpYSBVUkwgbyB0ZXh0byBmb2xpb1xuICAgIGNvbnN0IHRleHQgPSAoKHAuc2hhcmVVcmwgPz8gdGhpcy5mb2xpb1RleHQoKSkgfHwgcC5zaGFyZUJyYW5kTmFtZSkgPz8gJyc7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KHAuc2hhcmVVcmwgPyAnY29waWVkVXJsJyA6ICdjb3BpZWQnKSwgZHVyYXRpb246IDIwMDAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBjbGlwYm9hcmQgbm8gZGlzcG9uaWJsZSDigJQgc2lsZW5jaW9zb1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJpZ2dlckRvd25sb2FkKFxuICAgIGNvbmZpZzogUGFyYW1ldGVyczx0eXBlb2YgdGhpcy50aWNrZXRDYXJkSW1hZ2VTZXJ2aWNlLmdlbmVyYXRlPlswXSxcbiAgICBwOiBUaWNrZXRDYXJkTWV0YWRhdGFcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYmxvYiA9IGF3YWl0IHRoaXMudGlja2V0Q2FyZEltYWdlU2VydmljZS5nZW5lcmF0ZShjb25maWcpO1xuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBhLmhyZWYgPSB1cmw7XG4gICAgYS5kb3dubG9hZCA9IGBlbnRyYWRhLSR7cC5mb2xpbyA/PyAnYmluZ28nfS5wbmdgO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgYS5jbGljaygpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9XG5cbiAgcXJQcm9wcyhxOiBRclJlc3VsdCk6IFFyQ29kZU1ldGFkYXRhIHtcbiAgICBjb25zdCBwID0gdGhpcy5wcm9wcygpO1xuICAgIHJldHVybiB7XG4gICAgICBxcjogcSxcbiAgICAgIGRpc3BsYXlTaXplOiBwLnFyU2l6ZSA/PyAyMDAsXG4gICAgICBzaG93RG93bmxvYWQ6IGZhbHNlLFxuICAgICAgc2hvd1NoYXJlOiBmYWxzZSxcbiAgICAgIHNob3dCb3JkZXI6IGZhbHNlLFxuICAgICAgYWx0OiB0aGlzLmZvbGlvVGV4dCgpIHx8ICdRUicsXG4gICAgICBkb3dubG9hZExhYmVsOiBwLmRvd25sb2FkTGFiZWwgPz8gdGhpcy50KCdkb3dubG9hZCcpLFxuICAgICAgc2hhcmVMYWJlbDogdGhpcy50KCdzaGFyZScpLFxuICAgICAgc2hhcmVUaXRsZTogcC50aXRsZSB8fCB0aGlzLmZvbGlvVGV4dCgpIHx8ICdRUicsXG4gICAgfTtcbiAgfVxufVxuIl19
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy90aWNrZXQtY2FyZC90aWNrZXQtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXREOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQW1FSCxNQUFNLE9BQU8sbUJBQW1CO0lBa0I5QjtRQWpCQSx5Q0FBeUM7UUFDaEMsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXNCLENBQUM7UUFFOUMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkRUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24sIElvblNwaW5uZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgZG93bmxvYWRPdXRsaW5lLCBzaGFyZU91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IFFyQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3FyLWNvZGUvcXItY29kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXJDb2RlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy9xci1jb2RlL3R5cGVzJztcbmltcG9ydCB7IFFyR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3FyLWdlbmVyYXRvci9xci1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBRclJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3FyLWdlbmVyYXRvci90eXBlcyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBUaWNrZXRDYXJkSW1hZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGlja2V0LWNhcmQtaW1hZ2UvdGlja2V0LWNhcmQtaW1hZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBUaWNrZXRDYXJkTWV0YWRhdGEsIFRpY2tldENhcmRTdGF0dXMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFRJQ0tFVF9DQVJEX0kxOE4gfSBmcm9tICcuL3RpY2tldC1jYXJkLmkxOG4nO1xuXG4vKipcbiAqIHZhbC10aWNrZXQtY2FyZFxuICpcbiAqIFRhcmpldGEgcHJlc2VudGFjaW9uYWwgZGUgdW5hIGVudHJhZGEgZGUgYmluZ286IG11ZXN0cmEgZWwgUVIgZXNjYW5lYWJsZVxuICogKGdlbmVyYWRvIGRlbCBgcXJUb2tlbmAgb3BhY28gZmlybWFkbyB2w61hIGBRckdlbmVyYXRvclNlcnZpY2VgKSwgZWwgZm9saW8sIGVsXG4gKiBub21icmUgZGVsIGNvbXByYWRvciAoc2kgaGF5KSB5IHVuIGJhZGdlIGRlIGVzdGFkbyAodmVuZGlkYSAvIGNhbmplYWRhKS5cbiAqXG4gKiBFcyBsYSBwaWV6YSBxdWUgZWwgdmVuZGVkb3IgbGUgZW50cmVnYSBhbCBjb21wcmFkb3IgdHJhcyBsYSB2ZW50YSB5IHF1ZSBsYVxuICogdGFxdWlsbGEgZXNjYW5lYSBwYXJhIGNhbmplYXIuIE9iamVjdC1maXJzdCAoYGlucHV0KClgIHNpZ25hbCksIGkxOG5cbiAqIGF1dG8tcmVnaXN0cmFkbyAobmFtZXNwYWNlIGBUaWNrZXRDYXJkYCkuIEVzdGFkb3MgbmVnYXRpdm9zL25ldXRyb3MgZW4gZ3Jpc1xuICogbXV0ZWQgKGNvbnZlbmNpw7NuIGRlbCBmYWN0b3J5IOKAlCBzaW4gcm9qbyBkZSBhbGFybWEpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXRpY2tldC1jYXJkIFtwcm9wc109XCJ7IHFyVG9rZW46IHRpY2tldC5xclRva2VuLCBmb2xpbzogdGlja2V0LmZvbGlvLFxuICogICBidXllck5hbWU6IHRpY2tldC5jb21wcmFkb3JOb21icmUsIHN0YXR1czogJ3NvbGQnLCBzaG93U2hhcmU6IHRydWUgfVwiIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXRpY2tldC1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQnV0dG9uLCBJb25JY29uLCBJb25TcGlubmVyLCBRckNvZGVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY2FyZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1jYXJkX19oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1jYXJkX19leWVicm93XCI+e3sgdCgnY2FyZExhYmVsJykgfX08L2Rpdj5cbiAgICAgICAgQGlmIChwcm9wcygpLnRpdGxlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1jYXJkX190aXRsZVwiPnt7IHByb3BzKCkudGl0bGUgfX08L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY2FyZF9fYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWNhcmRfX3FyXCI+XG4gICAgICAgICAgQGlmIChxcigpOyBhcyBxKSB7XG4gICAgICAgICAgICA8dmFsLXFyLWNvZGUgW3Byb3BzXT1cInFyUHJvcHMocSlcIiAvPlxuICAgICAgICAgIH0gQGVsc2UgaWYgKGZhaWxlZCgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWNhcmRfX3FyLWZhbGxiYWNrXCI+e3sgdG9rZW5TaG9ydCgpIH19PC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWNhcmRfX3FyLWxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIGFyaWEtbGFiZWw9XCJHZW5lcmFuZG8gUVJcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWNhcmRfX3BlcmZcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpY2tldC1jYXJkX19ub3RjaCB0aWNrZXQtY2FyZF9fbm90Y2gtLWxlZnRcIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aWNrZXQtY2FyZF9fbm90Y2ggdGlja2V0LWNhcmRfX25vdGNoLS1yaWdodFwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1jYXJkX19zdHViXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1jYXJkX19tZXRhXCI+XG4gICAgICAgICAgICBAaWYgKGZvbGlvVGV4dCgpOyBhcyBmKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY2FyZF9fZm9saW9cIj57eyBmIH19PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHByb3BzKCkuYnV5ZXJOYW1lKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY2FyZF9fYnV5ZXJcIj57eyBwcm9wcygpLmJ1eWVyTmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzdGF0dXNMYWJlbCgpOyBhcyBzKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGlja2V0LWNhcmRfX2JhZGdlXCIgW2F0dHIuZGF0YS1zdGF0dXNdPVwic3RhdHVzKClcIj57eyBzIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmICgocHJvcHMoKS5zaG93RG93bmxvYWQgfHwgcHJvcHMoKS5zaG93U2hhcmUpICYmIHFyKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY2FyZF9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzKCkuc2hvd0Rvd25sb2FkKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBleHBhbmQ9XCJibG9ja1wiIFtkaXNhYmxlZF09XCJkb3dubG9hZGluZygpXCIgKGNsaWNrKT1cImRvd25sb2FkQ2FyZCgpXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIiAvPlxuICAgICAgICAgICAgICAgICAge3sgcHJvcHMoKS5kb3dubG9hZExhYmVsIHx8IHQoJ2Rvd25sb2FkJykgfX1cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChwcm9wcygpLnNob3dTaGFyZSkge1xuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJvdXRsaW5lXCIgZXhwYW5kPVwiYmxvY2tcIiBbZGlzYWJsZWRdPVwic2hhcmluZygpXCIgKGNsaWNrKT1cInNoYXJlQ2FyZCgpXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInNoYXJlLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIiAvPlxuICAgICAgICAgICAgICAgICAge3sgcHJvcHMoKS5zaGFyZUxhYmVsIHx8IHQoJ3NoYXJlJykgfX1cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vdGlja2V0LWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGlja2V0Q2FyZENvbXBvbmVudCB7XG4gIC8qKiBQcm9wcyBvYmplY3QtZmlyc3QgZGVsIGNvbXBvbmVudGUuICovXG4gIHJlYWRvbmx5IHByb3BzID0gaW5wdXQucmVxdWlyZWQ8VGlja2V0Q2FyZE1ldGFkYXRhPigpO1xuXG4gIHByaXZhdGUgcXJTZXJ2aWNlID0gaW5qZWN0KFFyR2VuZXJhdG9yU2VydmljZSk7XG4gIHByaXZhdGUgdGlja2V0Q2FyZEltYWdlU2VydmljZSA9IGluamVjdChUaWNrZXRDYXJkSW1hZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuXG4gIC8qKiBRUiBnZW5lcmFkbyAobnVsbCBtaWVudHJhcyBjYXJnYSBvIHNpIGZhbGzDsykuICovXG4gIHJlYWRvbmx5IHFyID0gc2lnbmFsPFFyUmVzdWx0IHwgbnVsbD4obnVsbCk7XG4gIC8qKiBGYWxsw7MgbGEgZ2VuZXJhY2nDs24gZGVsIFFSIOKGkiBmYWxsYmFjayBhbCB0b2tlbiBjb3J0by4gKi9cbiAgcmVhZG9ubHkgZmFpbGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgLyoqIFRydWUgbWllbnRyYXMgc2UgZ2VuZXJhIHkgY29tcGFydGUgbGEgdGFyamV0YSBicmFuZGVkLiAqL1xuICByZWFkb25seSBzaGFyaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgLyoqIFRydWUgbWllbnRyYXMgc2UgZ2VuZXJhIHkgZGVzY2FyZ2EgbGEgdGFyamV0YSBicmFuZGVkLiAqL1xuICByZWFkb25seSBkb3dubG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWRkSWNvbnMoeyBzaGFyZU91dGxpbmUsIGRvd25sb2FkT3V0bGluZSB9KTtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnVGlja2V0Q2FyZCcsIFRJQ0tFVF9DQVJEX0kxOE4pO1xuXG4gICAgLy8gUmVnZW5lcmEgZWwgUVIgY3VhbmRvIGNhbWJpYSBlbCB0b2tlbiBvIGVsIHRhbWHDsW8uXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMucHJvcHMoKS5xclRva2VuO1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcygpLnFyU2l6ZSA/PyAyMDA7XG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICB0aGlzLnFyLnNldChudWxsKTtcbiAgICAgICAgICB0aGlzLmZhaWxlZC5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2b2lkIHRoaXMuZ2VuZXJhdGUodG9rZW4sIHNpemUpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdlbmVyYXRlKGRhdGE6IHN0cmluZywgc2l6ZTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5mYWlsZWQuc2V0KGZhbHNlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xclNlcnZpY2UuZ2VuZXJhdGUoe1xuICAgICAgICBkYXRhLFxuICAgICAgICB3aWR0aDogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLFxuICAgICAgICBtYXJnaW46IDEsXG4gICAgICAgIGRvdHNTdHlsZTogJ3NxdWFyZScsXG4gICAgICAgIGRvdHNDb2xvcjogJyMwMDAwMDAnLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgICAgICAgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6ICdNJyxcbiAgICAgICAgZm9ybWF0OiAncG5nJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5xci5zZXQocmVzdWx0KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFNpbiB0b2FzdC90aHJvdyDigJQgZWwgZmFsbGJhY2sgbXVlc3RyYSBlbCB0b2tlbiBjb3J0by4gRWwgY29uc3VtZXJcbiAgICAgIC8vIHNpZ3VlIHB1ZGllbmRvIGNhbmplYXIgdGlwZWFuZG8vZXNjYW5lYW5kbyBzaSBoYWNlIGZhbHRhLlxuICAgICAgdGhpcy5xci5zZXQobnVsbCk7XG4gICAgICB0aGlzLmZhaWxlZC5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ1RpY2tldENhcmQnKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHN0YXR1cyA9IGNvbXB1dGVkPFRpY2tldENhcmRTdGF0dXM+KCgpID0+IHRoaXMucHJvcHMoKS5zdGF0dXMgPz8gJ25ldXRyYWwnKTtcblxuICByZWFkb25seSB0b2tlblNob3J0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRrID0gdGhpcy5wcm9wcygpLnFyVG9rZW4gPz8gJyc7XG4gICAgcmV0dXJuIHRrLmxlbmd0aCA+IDE2ID8gYCR7dGsuc2xpY2UoMCwgMTYpfeKApmAgOiB0aztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZm9saW9UZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgY29uc3QgZm9saW8gPSB0aGlzLnByb3BzKCkuZm9saW87XG4gICAgaWYgKGZvbGlvID09PSB1bmRlZmluZWQgfHwgZm9saW8gPT09IG51bGwgfHwgZm9saW8gPT09ICcnKSByZXR1cm4gJyc7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnByb3BzKCkuZm9saW9MYWJlbCA/PyB0aGlzLnQoJ2ZvbGlvJyk7XG4gICAgcmV0dXJuIGAke2xhYmVsfSAjJHtmb2xpb31gO1xuICB9KTtcblxuICByZWFkb25seSBzdGF0dXNMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuc3RhdHVzKCk7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ3NvbGQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcygpLnN0YXR1c1NvbGRMYWJlbCA/PyB0aGlzLnQoJ3N0YXR1c1NvbGQnKTtcbiAgICB9XG4gICAgaWYgKHN0YXR1cyA9PT0gJ2NoZWNrZWRJbicpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzKCkuc3RhdHVzQ2hlY2tlZEluTGFiZWwgPz8gdGhpcy50KCdzdGF0dXNDaGVja2VkSW4nKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9KTtcblxuICBhc3luYyBzaGFyZUNhcmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcSA9IHRoaXMucXIoKTtcbiAgICBpZiAoIXEpIHJldHVybjtcbiAgICBjb25zdCBwID0gdGhpcy5wcm9wcygpO1xuICAgIHRoaXMuc2hhcmluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYnVpbGRJbWFnZUNvbmZpZyhxLCBwKTtcbiAgICAgIGNvbnN0IHNoYXJlZCA9IGF3YWl0IHRoaXMudGlja2V0Q2FyZEltYWdlU2VydmljZS5zaGFyZShjb25maWcsIHAudGl0bGUgfHwgcC5zaGFyZUJyYW5kTmFtZSk7XG4gICAgICBpZiAoIXNoYXJlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvcHlUb0NsaXBib2FyZChjb25maWcsIHApO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNoYXJpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkb3dubG9hZENhcmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcSA9IHRoaXMucXIoKTtcbiAgICBpZiAoIXEpIHJldHVybjtcbiAgICBjb25zdCBwID0gdGhpcy5wcm9wcygpO1xuICAgIHRoaXMuZG93bmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnRyaWdnZXJEb3dubG9hZCh0aGlzLmJ1aWxkSW1hZ2VDb25maWcocSwgcCksIHApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmRvd25sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEltYWdlQ29uZmlnKHE6IFFyUmVzdWx0LCBwOiBUaWNrZXRDYXJkTWV0YWRhdGEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcXJEYXRhVXJsOiBxLmRhdGFVcmwsXG4gICAgICBsb2dvVXJsOiBwLnNoYXJlTG9nb1VybCxcbiAgICAgIGJyYW5kQ29sb3I6IHAuc2hhcmVCcmFuZENvbG9yLFxuICAgICAgYnJhbmRDb2xvclRvOiBwLnNoYXJlQnJhbmRDb2xvclRvLFxuICAgICAgYnJhbmROYW1lOiBwLnNoYXJlQnJhbmROYW1lLFxuICAgICAgZm9saW86IHAuZm9saW8sXG4gICAgICBmb2xpb0xhYmVsOiBwLnNoYXJlRm9saW9MYWJlbCxcbiAgICAgIGJ1eWVyTmFtZTogcC5idXllck5hbWUsXG4gICAgICBldmVudERhdGU6IHAuc2hhcmVFdmVudERhdGUsXG4gICAgICBldmVudExvY2F0aW9uOiBwLnNoYXJlRXZlbnRMb2NhdGlvbixcbiAgICAgIHNjYW5IaW50OiBwLnNoYXJlU2NhbkhpbnQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29weVRvQ2xpcGJvYXJkKFxuICAgIGNvbmZpZzogUGFyYW1ldGVyczx0eXBlb2YgdGhpcy50aWNrZXRDYXJkSW1hZ2VTZXJ2aWNlLmdlbmVyYXRlPlswXSxcbiAgICBwOiBUaWNrZXRDYXJkTWV0YWRhdGFcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gSW50ZW50YSBjb3BpYXIgbGEgaW1hZ2VuIGJyYW5kZWQgYWwgY2xpcGJvYXJkIChDaHJvbWUvRWRnZS9TYWZhcmkgZGVza3RvcCkuXG4gICAgaWYgKHR5cGVvZiBDbGlwYm9hcmRJdGVtICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IHRoaXMudGlja2V0Q2FyZEltYWdlU2VydmljZS5nZW5lcmF0ZShjb25maWcpO1xuICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlKFtuZXcgQ2xpcGJvYXJkSXRlbSh7ICdpbWFnZS9wbmcnOiBibG9iIH0pXSk7XG4gICAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudCgnY29waWVkJyksIGR1cmF0aW9uOiAyMDAwIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gQ2xpcGJvYXJkSXRlbSBubyBzb3BvcnRhZG8gbyBwZXJtaXNvIGRlbmVnYWRvIOKGkiBjYWVyIGEgdGV4dG9cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRmFsbGJhY2s6IGNvcGlhIFVSTCBvIHRleHRvIGZvbGlvXG4gICAgY29uc3QgdGV4dCA9ICgocC5zaGFyZVVybCA/PyB0aGlzLmZvbGlvVGV4dCgpKSB8fCBwLnNoYXJlQnJhbmROYW1lKSA/PyAnJztcbiAgICBpZiAoIXRleHQpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQocC5zaGFyZVVybCA/ICdjb3BpZWRVcmwnIDogJ2NvcGllZCcpLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGNsaXBib2FyZCBubyBkaXNwb25pYmxlIOKAlCBzaWxlbmNpb3NvXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cmlnZ2VyRG93bmxvYWQoXG4gICAgY29uZmlnOiBQYXJhbWV0ZXJzPHR5cGVvZiB0aGlzLnRpY2tldENhcmRJbWFnZVNlcnZpY2UuZ2VuZXJhdGU+WzBdLFxuICAgIHA6IFRpY2tldENhcmRNZXRhZGF0YVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBibG9iID0gYXdhaXQgdGhpcy50aWNrZXRDYXJkSW1hZ2VTZXJ2aWNlLmdlbmVyYXRlKGNvbmZpZyk7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGEuaHJlZiA9IHVybDtcbiAgICBhLmRvd25sb2FkID0gYGNhcnRvbi0ke3AuZm9saW8gPz8gJ2JpbmdvJ30ucG5nYDtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuICAgIGEuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgfVxuXG4gIHFyUHJvcHMocTogUXJSZXN1bHQpOiBRckNvZGVNZXRhZGF0YSB7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvcHMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgcXI6IHEsXG4gICAgICBkaXNwbGF5U2l6ZTogcC5xclNpemUgPz8gMjAwLFxuICAgICAgc2hvd0Rvd25sb2FkOiBmYWxzZSxcbiAgICAgIHNob3dTaGFyZTogZmFsc2UsXG4gICAgICBzaG93Qm9yZGVyOiBmYWxzZSxcbiAgICAgIGFsdDogdGhpcy5mb2xpb1RleHQoKSB8fCAnUVInLFxuICAgICAgZG93bmxvYWRMYWJlbDogcC5kb3dubG9hZExhYmVsID8/IHRoaXMudCgnZG93bmxvYWQnKSxcbiAgICAgIHNoYXJlTGFiZWw6IHRoaXMudCgnc2hhcmUnKSxcbiAgICAgIHNoYXJlVGl0bGU6IHAudGl0bGUgfHwgdGhpcy5mb2xpb1RleHQoKSB8fCAnUVInLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -6,6 +6,7 @@
6
6
  */
7
7
  export const TICKET_CARD_I18N = {
8
8
  es: {
9
+ cardLabel: 'Cartón de bingo',
9
10
  folio: 'Folio',
10
11
  statusSold: 'Vendida',
11
12
  statusCheckedIn: 'Canjeada',
@@ -15,6 +16,7 @@ export const TICKET_CARD_I18N = {
15
16
  copiedUrl: 'Link copiado',
16
17
  },
17
18
  en: {
19
+ cardLabel: 'Bingo card',
18
20
  folio: 'Folio',
19
21
  statusSold: 'Sold',
20
22
  statusCheckedIn: 'Checked in',
@@ -24,4 +26,4 @@ export const TICKET_CARD_I18N = {
24
26
  copiedUrl: 'Link copied',
25
27
  },
26
28
  };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWNhcmQuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvdGlja2V0LWNhcmQvdGlja2V0LWNhcmQuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxPQUFPO1FBQ2QsVUFBVSxFQUFFLFNBQVM7UUFDckIsZUFBZSxFQUFFLFVBQVU7UUFDM0IsUUFBUSxFQUFFLFdBQVc7UUFDckIsS0FBSyxFQUFFLFdBQVc7UUFDbEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsU0FBUyxFQUFFLGNBQWM7S0FDMUI7SUFDRCxFQUFFLEVBQUU7UUFDRixLQUFLLEVBQUUsT0FBTztRQUNkLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLGVBQWUsRUFBRSxZQUFZO1FBQzdCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLEtBQUssRUFBRSxPQUFPO1FBQ2QsTUFBTSxFQUFFLFFBQVE7UUFDaEIsU0FBUyxFQUFFLGFBQWE7S0FDekI7Q0FDTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWZhdWx0cyBpMThuIChlcy9lbikgZGVsIGB2YWwtdGlja2V0LWNhcmRgLiBBdXRvLXJlZ2lzdHJhZG9zIGVuIGVsXG4gKiBjb25zdHJ1Y3RvciBkZWwgY29tcG9uZW50ZSAobmFtZXNwYWNlIGBUaWNrZXRDYXJkYCkg4oCUIGVsIGNvbnN1bWVyIE5VTkNBIHRpZW5lXG4gKiBxdWUgcmVnaXN0cmFybG9zLiBPdmVycmlkZSBwYXNhbmRvIGxvcyBsYWJlbHMgcG9yIHByb3BzIG8gcmVnaXN0cmFuZG8gZWxcbiAqIG5hbWVzcGFjZSBhbnRlcyBkZSBtb250YXIgZWwgY29tcG9uZW50ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9DQVJEX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgZm9saW86ICdGb2xpbycsXG4gICAgc3RhdHVzU29sZDogJ1ZlbmRpZGEnLFxuICAgIHN0YXR1c0NoZWNrZWRJbjogJ0NhbmplYWRhJyxcbiAgICBkb3dubG9hZDogJ0Rlc2NhcmdhcicsXG4gICAgc2hhcmU6ICdDb21wYXJ0aXInLFxuICAgIGNvcGllZDogJ0NvcGlhZG8nLFxuICAgIGNvcGllZFVybDogJ0xpbmsgY29waWFkbycsXG4gIH0sXG4gIGVuOiB7XG4gICAgZm9saW86ICdGb2xpbycsXG4gICAgc3RhdHVzU29sZDogJ1NvbGQnLFxuICAgIHN0YXR1c0NoZWNrZWRJbjogJ0NoZWNrZWQgaW4nLFxuICAgIGRvd25sb2FkOiAnRG93bmxvYWQnLFxuICAgIHNoYXJlOiAnU2hhcmUnLFxuICAgIGNvcGllZDogJ0NvcGllZCcsXG4gICAgY29waWVkVXJsOiAnTGluayBjb3BpZWQnLFxuICB9LFxufSBhcyBjb25zdDtcbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWNhcmQuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvdGlja2V0LWNhcmQvdGlja2V0LWNhcmQuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLEVBQUUsRUFBRTtRQUNGLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsS0FBSyxFQUFFLE9BQU87UUFDZCxVQUFVLEVBQUUsU0FBUztRQUNyQixlQUFlLEVBQUUsVUFBVTtRQUMzQixRQUFRLEVBQUUsV0FBVztRQUNyQixLQUFLLEVBQUUsV0FBVztRQUNsQixNQUFNLEVBQUUsU0FBUztRQUNqQixTQUFTLEVBQUUsY0FBYztLQUMxQjtJQUNELEVBQUUsRUFBRTtRQUNGLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLEtBQUssRUFBRSxPQUFPO1FBQ2QsVUFBVSxFQUFFLE1BQU07UUFDbEIsZUFBZSxFQUFFLFlBQVk7UUFDN0IsUUFBUSxFQUFFLFVBQVU7UUFDcEIsS0FBSyxFQUFFLE9BQU87UUFDZCxNQUFNLEVBQUUsUUFBUTtRQUNoQixTQUFTLEVBQUUsYUFBYTtLQUN6QjtDQUNPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSBkZWwgYHZhbC10aWNrZXQtY2FyZGAuIEF1dG8tcmVnaXN0cmFkb3MgZW4gZWxcbiAqIGNvbnN0cnVjdG9yIGRlbCBjb21wb25lbnRlIChuYW1lc3BhY2UgYFRpY2tldENhcmRgKSDigJQgZWwgY29uc3VtZXIgTlVOQ0EgdGllbmVcbiAqIHF1ZSByZWdpc3RyYXJsb3MuIE92ZXJyaWRlIHBhc2FuZG8gbG9zIGxhYmVscyBwb3IgcHJvcHMgbyByZWdpc3RyYW5kbyBlbFxuICogbmFtZXNwYWNlIGFudGVzIGRlIG1vbnRhciBlbCBjb21wb25lbnRlLlxuICovXG5leHBvcnQgY29uc3QgVElDS0VUX0NBUkRfSTE4TiA9IHtcbiAgZXM6IHtcbiAgICBjYXJkTGFiZWw6ICdDYXJ0w7NuIGRlIGJpbmdvJyxcbiAgICBmb2xpbzogJ0ZvbGlvJyxcbiAgICBzdGF0dXNTb2xkOiAnVmVuZGlkYScsXG4gICAgc3RhdHVzQ2hlY2tlZEluOiAnQ2FuamVhZGEnLFxuICAgIGRvd25sb2FkOiAnRGVzY2FyZ2FyJyxcbiAgICBzaGFyZTogJ0NvbXBhcnRpcicsXG4gICAgY29waWVkOiAnQ29waWFkbycsXG4gICAgY29waWVkVXJsOiAnTGluayBjb3BpYWRvJyxcbiAgfSxcbiAgZW46IHtcbiAgICBjYXJkTGFiZWw6ICdCaW5nbyBjYXJkJyxcbiAgICBmb2xpbzogJ0ZvbGlvJyxcbiAgICBzdGF0dXNTb2xkOiAnU29sZCcsXG4gICAgc3RhdHVzQ2hlY2tlZEluOiAnQ2hlY2tlZCBpbicsXG4gICAgZG93bmxvYWQ6ICdEb3dubG9hZCcsXG4gICAgc2hhcmU6ICdTaGFyZScsXG4gICAgY29waWVkOiAnQ29waWVkJyxcbiAgICBjb3BpZWRVcmw6ICdMaW5rIGNvcGllZCcsXG4gIH0sXG59IGFzIGNvbnN0O1xuIl19