ctt-babylon 0.12.23 → 0.12.24

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.
@@ -1,3 +1,61 @@
1
+ /**
2
+ * LisC4TxtDesCtaComponent
3
+ * ----------------------
4
+ *
5
+ * Componente de listado con sistema de filtros sincronizado con la URL.
6
+ *
7
+ * FILOSOFÍA
8
+ * ----------
9
+ * - El componente es AGNÓSTICO al dominio (no hardcodea "hotel", "apartamento", marcas, etc.).
10
+ * - Todo lo que se filtra proviene de STRINGS enviados por backend (ya traducidos).
11
+ * - La URL siempre trabaja con SLUGS normalizados (sin tildes, espacios ni caracteres raros).
12
+ *
13
+ * FILTROS SOPORTADOS (actuales)
14
+ * -----------------------------
15
+ * - filter -> tipo principal (ej: hoteles, apartamentos, villas, etc.)
16
+ * - destination -> destino (por nombre)
17
+ * - brand -> marca / grupo
18
+ *
19
+ * CÓMO FUNCIONA
20
+ * -------------
21
+ * 1. Las opciones de filtros se construyen dinámicamente a partir de `items`.
22
+ * 2. Cada opción tiene:
23
+ * - label: texto real mostrado al usuario
24
+ * - slug : versión normalizada usada en la URL
25
+ * 3. Al navegar con query params:
26
+ * - Se leen los slugs de la URL
27
+ * - Se resuelven a labels reales cuando los items están disponibles
28
+ * 4. El filtrado interno SIEMPRE compara por slug (no por texto crudo).
29
+ *
30
+ * NORMALIZACIÓN
31
+ * -------------
32
+ * - Se usa `Utils.toSlug()` para normalizar textos (tildes, espacios, símbolos).
33
+ * - Para el filtro principal (`filter`) se aplica además una singularización genérica
34
+ * (hoteles -> hotel, apartamentos -> apartamento), SIN traducciones ni diccionarios.
35
+ *
36
+ * EXTENDER CON NUEVOS FILTROS
37
+ * --------------------------
38
+ * Para añadir un nuevo filtro (ej: category, experience, rating):
39
+ *
40
+ * 1. Añadir un nuevo queryParam (ej: `category`)
41
+ * 2. Crear:
42
+ * - selectedCategory
43
+ * - categoryOptions
44
+ * - categorySlugToLabel / categoryLabelToSlug
45
+ * 3. Construir opciones en `buildFilterOptions()`
46
+ * 4. Resolver desde URL en `resolvePendingFromMaps()`
47
+ * 5. Aplicar condición en `filteredItems`
48
+ * 6. Sincronizar en `syncQueryParams()`
49
+ *
50
+ * IMPORTANTE
51
+ * ----------
52
+ * - NUNCA comparar por texto directo.
53
+ * - NUNCA meter valores crudos en la URL.
54
+ * - Todo filtro nuevo debe pasar por slug.
55
+ *
56
+ * Con esto el componente es reutilizable entre proyectos,
57
+ * idiomas y configuraciones distintas sin cambios estructurales.
58
+ */
1
59
  import { CommonModule } from '@angular/common';
2
60
  import { ChangeDetectorRef, Component, inject, Input, ViewEncapsulation, } from '@angular/core';
3
61
  import { FormsModule } from '@angular/forms';
@@ -12,54 +70,71 @@ export class LisC4TxtDesCtaComponent {
12
70
  constructor() {
13
71
  this.additional1LikeMarca = false;
14
72
  this.tagName = 'LisC4TxtDesCta';
15
- this.selectedHotelType = '';
16
- this.selectedDestination = '';
17
- this.selectedBrand = '';
73
+ // UI labels seleccionados (lo que se muestra en los selects)
74
+ // En URL se guardan slugs.
75
+ this.selectedHotelType = ''; // => queryParam "filter"
76
+ this.selectedDestination = ''; // => queryParam "destination"
77
+ this.selectedBrand = ''; // => queryParam "brand"
18
78
  this.hotelTypeOptions = [];
19
79
  this.destinationOptions = [];
20
80
  this.brandOptions = [];
81
+ this.pendingFilterSlug = null;
82
+ this.pendingDestinationSlug = null;
83
+ this.pendingBrandSlug = null;
84
+ // slug -> label (hidratar selects desde URL)
85
+ this.filterSlugToLabel = new Map();
86
+ this.destinationSlugToLabel = new Map();
87
+ this.brandSlugToLabel = new Map();
88
+ // label -> slug (escritura estable)
89
+ this.filterLabelToSlug = new Map();
90
+ this.destinationLabelToSlug = new Map();
91
+ this.brandLabelToSlug = new Map();
21
92
  this.route = inject(ActivatedRoute);
22
93
  this.router = inject(Router);
23
94
  this.cdr = inject(ChangeDetectorRef);
95
+ this.isSyncingFromUrl = false;
24
96
  }
25
97
  ngOnInit() {
26
98
  this.qpSub = this.route.queryParamMap.subscribe((params) => {
27
- const hotelTypeParam = params.get('hotelType') ??
28
- params.get('hoteltype') ??
29
- params.get('filter');
30
- const destinationParam = params.get('destination');
31
- const brandParam = params.get('brand');
32
- this.selectedHotelType = hotelTypeParam ?? '';
33
- this.selectedDestination = destinationParam ?? '';
34
- this.selectedBrand = brandParam ?? '';
35
- if (this.hotelTypeOptions.length && this.selectedHotelType) {
36
- this.selectedHotelType = this.matchSimilar(this.selectedHotelType, this.hotelTypeOptions);
37
- }
38
- if (this.brandOptions.length && this.selectedBrand) {
39
- this.selectedBrand = this.matchSimilar(this.selectedBrand, this.brandOptions);
40
- }
41
- if (this.destinationOptions.length && this.selectedDestination) {
42
- this.selectedDestination = this.matchSimilar(this.selectedDestination, this.destinationOptions);
43
- }
99
+ this.isSyncingFromUrl = true;
100
+ const filterSlug = params.get('filter') ?? '';
101
+ const destinationSlug = params.get('destination') ?? '';
102
+ const brandSlug = params.get('brand') ?? '';
103
+ this.resolvePendingFromMaps();
104
+ this.pendingFilterSlug = params.get('filter');
105
+ this.pendingDestinationSlug = params.get('destination');
106
+ this.pendingBrandSlug = params.get('brand');
107
+ this.resolvePendingFromMaps();
108
+ // Si aún no hay maps (items no llegó), intenta fallback (mantener algo decente)
109
+ // Nota: no navegamos aquí.
110
+ if (!this.selectedHotelType && filterSlug)
111
+ this.selectedHotelType = filterSlug;
112
+ if (!this.selectedDestination && destinationSlug)
113
+ this.selectedDestination = destinationSlug;
114
+ if (!this.selectedBrand && brandSlug)
115
+ this.selectedBrand = brandSlug;
44
116
  this.cdr.markForCheck();
117
+ queueMicrotask(() => (this.isSyncingFromUrl = false));
45
118
  });
46
119
  }
47
120
  ngOnChanges(changes) {
48
121
  if (changes['items']) {
49
122
  this.buildFilterOptions();
50
- // Si hay un hotelType seleccionado (p.ej. desde query param),
51
- // lo adaptamos a la opción real disponible
52
- if (this.selectedHotelType) {
53
- this.selectedHotelType = this.matchSimilar(this.selectedHotelType, this.hotelTypeOptions);
54
- }
55
- // Validación destino (robusta)
56
- if (this.selectedDestination &&
57
- !this.destinationOptions.some((d) => this.norm(d) === this.norm(this.selectedDestination))) {
58
- this.selectedDestination = '';
59
- }
60
- if (this.selectedBrand) {
61
- this.selectedBrand = this.matchSimilar(this.selectedBrand, this.brandOptions);
62
- }
123
+ // rehidrata desde URL ya con maps listos (sin navegar)
124
+ const qp = this.route.snapshot.queryParamMap;
125
+ const filterSlug = qp.get('filter') ?? '';
126
+ const destinationSlug = qp.get('destination') ?? '';
127
+ const brandSlug = qp.get('brand') ?? '';
128
+ this.isSyncingFromUrl = true;
129
+ this.selectedHotelType =
130
+ this.filterSlugToLabel.get(filterSlug) ?? '';
131
+ this.selectedDestination =
132
+ this.destinationSlugToLabel.get(destinationSlug) ?? '';
133
+ this.selectedBrand = this.brandSlugToLabel.get(brandSlug) ?? '';
134
+ this.forceOptionMatch();
135
+ this.cdr.markForCheck();
136
+ this.cdr.detectChanges();
137
+ queueMicrotask(() => (this.isSyncingFromUrl = false));
63
138
  }
64
139
  }
65
140
  ngOnDestroy() {
@@ -76,24 +151,60 @@ export class LisC4TxtDesCtaComponent {
76
151
  .filter(Boolean)
77
152
  .map((v) => v.trim()))).sort((a, b) => a.localeCompare(b));
78
153
  this.brandOptions = Array.from(new Set(items.map((i) => this.getItemBrand(i)).filter(Boolean))).sort((a, b) => a.localeCompare(b));
154
+ // Reset maps
155
+ this.filterSlugToLabel.clear();
156
+ this.destinationSlugToLabel.clear();
157
+ this.brandSlugToLabel.clear();
158
+ this.filterLabelToSlug.clear();
159
+ this.destinationLabelToSlug.clear();
160
+ this.brandLabelToSlug.clear();
161
+ // used sets para sufijos -2 -3...
162
+ const usedFilter = new Set();
163
+ const usedDest = new Set();
164
+ const usedBrand = new Set();
165
+ // FILTER (query param "filter") => slug CANÓNICO (singular genérico)
166
+ for (const label of this.hotelTypeOptions) {
167
+ const base = this.canonicalSlug(label);
168
+ const slug = Utils.uniqueSlug(base, usedFilter);
169
+ this.filterSlugToLabel.set(slug, label);
170
+ this.filterLabelToSlug.set(label, slug);
171
+ }
172
+ // DESTINATIONS
173
+ for (const label of this.destinationOptions) {
174
+ const base = Utils.toSlug(label) || 'destination';
175
+ const slug = Utils.uniqueSlug(base, usedDest);
176
+ this.destinationSlugToLabel.set(slug, label);
177
+ this.destinationLabelToSlug.set(label, slug);
178
+ }
179
+ // BRANDS
180
+ for (const label of this.brandOptions) {
181
+ const base = Utils.toSlug(label) || 'brand';
182
+ const slug = Utils.uniqueSlug(base, usedBrand);
183
+ this.brandSlugToLabel.set(slug, label);
184
+ this.brandLabelToSlug.set(label, slug);
185
+ }
79
186
  }
80
187
  getItemBrand(it) {
81
188
  if (this.additional1LikeMarca)
82
189
  return (it?.texts?.additional1 ?? '').trim();
83
190
  return (it?.marca ?? it?.brand ?? it?.group ?? '').trim();
84
191
  }
192
+ // ----------------------
193
+ // FILTRADO
194
+ // ----------------------
85
195
  get filteredItems() {
86
196
  const items = this.items ?? [];
87
197
  return items.filter((it) => {
198
+ const itemHotelType = it?.hoteltype ?? '';
199
+ const itemBrand = this.getItemBrand(it);
88
200
  const hotelTypeOk = !this.selectedHotelType ||
89
- this.singularize(it?.hoteltype ?? '') ===
90
- this.singularize(this.selectedHotelType);
201
+ this.canonicalSlug(itemHotelType) ===
202
+ this.canonicalSlug(this.selectedHotelType);
91
203
  const destinationOk = !this.selectedDestination ||
92
- (it?.destinations ?? []).some((d) => this.norm(d?.name ?? '') ===
93
- this.norm(this.selectedDestination));
94
- const itemBrand = this.getItemBrand(it);
204
+ (it?.destinations ?? []).some((d) => Utils.toSlug(d?.name ?? '') ===
205
+ Utils.toSlug(this.selectedDestination));
95
206
  const brandOk = !this.selectedBrand ||
96
- this.norm(itemBrand) === this.norm(this.selectedBrand);
207
+ Utils.toSlug(itemBrand) === Utils.toSlug(this.selectedBrand);
97
208
  return hotelTypeOk && destinationOk && brandOk;
98
209
  });
99
210
  }
@@ -102,16 +213,25 @@ export class LisC4TxtDesCtaComponent {
102
213
  this.selectedDestination ||
103
214
  this.selectedBrand);
104
215
  }
216
+ // ----------------------
217
+ // HANDLERS UI
218
+ // ----------------------
105
219
  onHotelTypeChange(value) {
106
220
  this.selectedHotelType = value ?? '';
221
+ if (this.isSyncingFromUrl)
222
+ return;
107
223
  this.syncQueryParams();
108
224
  }
109
225
  onDestinationChange(value) {
110
226
  this.selectedDestination = value ?? '';
227
+ if (this.isSyncingFromUrl)
228
+ return;
111
229
  this.syncQueryParams();
112
230
  }
113
231
  onBrandChange(value) {
114
232
  this.selectedBrand = value ?? '';
233
+ if (this.isSyncingFromUrl)
234
+ return;
115
235
  this.syncQueryParams();
116
236
  }
117
237
  clearFilters() {
@@ -120,27 +240,55 @@ export class LisC4TxtDesCtaComponent {
120
240
  this.selectedBrand = '';
121
241
  this.syncQueryParams(true);
122
242
  }
243
+ // ----------------------
244
+ // URL SYNC (SIEMPRE SLUG)
245
+ // ----------------------
123
246
  syncQueryParams(clearAll = false) {
247
+ const qp = clearAll
248
+ ? { filter: null, destination: null, brand: null }
249
+ : {
250
+ filter: this.selectedHotelType
251
+ ? (this.filterLabelToSlug.get(this.selectedHotelType) ??
252
+ this.canonicalSlug(this.selectedHotelType))
253
+ : null,
254
+ destination: this.selectedDestination
255
+ ? (this.destinationLabelToSlug.get(this.selectedDestination) ?? Utils.toSlug(this.selectedDestination))
256
+ : null,
257
+ brand: this.selectedBrand
258
+ ? (this.brandLabelToSlug.get(this.selectedBrand) ??
259
+ Utils.toSlug(this.selectedBrand))
260
+ : null,
261
+ };
124
262
  this.router.navigate([], {
125
263
  relativeTo: this.route,
126
- queryParams: clearAll
127
- ? {
128
- hotelType: null,
129
- destination: null,
130
- brand: null,
131
- filter: null,
132
- }
133
- : {
134
- hotelType: this.selectedHotelType || null,
135
- destination: this.selectedDestination || null,
136
- brand: this.selectedBrand || null,
137
- filter: null,
138
- },
139
- queryParamsHandling: '',
264
+ queryParams: qp,
140
265
  replaceUrl: true,
141
266
  });
142
267
  this.cdr.markForCheck();
143
268
  }
269
+ // ----------------------
270
+ // CANONICAL SLUG (sin traductor)
271
+ // - Garantiza singular/plural genérico
272
+ // ----------------------
273
+ canonicalSlug(value) {
274
+ let s = Utils.toSlug(value);
275
+ if (!s)
276
+ return '';
277
+ // Regla -es (hoteles -> hotel, luces -> luz, peces -> pez)
278
+ if (s.length > 3 && s.endsWith('es')) {
279
+ const base = s.slice(0, -2);
280
+ if (base.endsWith('c'))
281
+ return base.slice(0, -1) + 'z';
282
+ return base;
283
+ }
284
+ // Regla -s (apartamentos -> apartamento)
285
+ if (s.length > 3 && s.endsWith('s'))
286
+ return s.slice(0, -1);
287
+ return s;
288
+ }
289
+ // ----------------------
290
+ // UI utils
291
+ // ----------------------
144
292
  getKeysArray(count) {
145
293
  return count ? Array.from({ length: count }) : [];
146
294
  }
@@ -150,51 +298,60 @@ export class LisC4TxtDesCtaComponent {
150
298
  getFirstImageByTag(tagName, imagenes) {
151
299
  return getFirstImageByTagFromImages(imagenes, tagName);
152
300
  }
153
- // ======================
154
- // Matching “por similitud”
155
- // ======================
156
- norm(s) {
157
- return (s ?? '')
158
- .toLowerCase()
159
- .normalize('NFD')
160
- .replace(/[\u0300-\u036f]/g, '') // quita acentos
161
- .trim();
162
- }
163
- singularize(s) {
164
- // Simple: quita "s" final (hotel/hoteles, apartamento/apartamentos)
165
- const n = this.norm(s);
166
- return n.endsWith('s') ? n.slice(0, -1) : n;
167
- }
168
- /** Devuelve la opción más parecida dentro de options, o '' */
169
- matchSimilar(value, options) {
170
- const v = this.norm(value);
171
- const vs = this.singularize(value);
172
- // 1) match exacto normalizado
173
- let found = options.find((o) => this.norm(o) === v);
174
- if (found)
175
- return found;
176
- // 2) match exacto por singular
177
- found = options.find((o) => this.singularize(o) === vs);
178
- if (found)
179
- return found;
180
- // 3) contiene (hoteles -> hotel, apartamentos -> apartamento)
181
- found = options.find((o) => this.norm(o).includes(v) || v.includes(this.norm(o)));
182
- if (found)
183
- return found;
184
- // 4) contiene por singular
185
- found = options.find((o) => this.singularize(o).includes(vs) ||
186
- vs.includes(this.singularize(o)));
187
- return found ?? '';
188
- }
189
301
  getNumber(text) {
190
302
  return Utils.extractNumberRange(text);
191
303
  }
304
+ resolvePendingFromMaps() {
305
+ if (this.pendingFilterSlug != null) {
306
+ const slug = this.canonicalSlug(this.pendingFilterSlug);
307
+ const label = this.filterSlugToLabel.get(slug);
308
+ if (label) {
309
+ this.selectedHotelType = label;
310
+ this.pendingFilterSlug = null;
311
+ }
312
+ }
313
+ // DESTINATION
314
+ if (this.pendingDestinationSlug != null) {
315
+ const slug = Utils.toSlug(this.pendingDestinationSlug);
316
+ const label = this.destinationSlugToLabel.get(slug);
317
+ if (label) {
318
+ this.selectedDestination = label;
319
+ this.pendingDestinationSlug = null;
320
+ }
321
+ }
322
+ // BRAND
323
+ if (this.pendingBrandSlug != null) {
324
+ const slug = Utils.toSlug(this.pendingBrandSlug);
325
+ const label = this.brandSlugToLabel.get(slug);
326
+ if (label) {
327
+ this.selectedBrand = label;
328
+ this.pendingBrandSlug = null;
329
+ }
330
+ }
331
+ }
332
+ forceOptionMatch() {
333
+ if (this.selectedHotelType) {
334
+ const wanted = this.canonicalSlug(this.selectedHotelType);
335
+ const match = this.hotelTypeOptions.find((o) => this.canonicalSlug(o) === wanted);
336
+ this.selectedHotelType = match ?? '';
337
+ }
338
+ if (this.selectedBrand) {
339
+ const wanted = Utils.toSlug(this.selectedBrand);
340
+ const match = this.brandOptions.find((o) => Utils.toSlug(o) === wanted);
341
+ this.selectedBrand = match ?? '';
342
+ }
343
+ if (this.selectedDestination) {
344
+ const wanted = Utils.toSlug(this.selectedDestination);
345
+ const match = this.destinationOptions.find((o) => Utils.toSlug(o) === wanted);
346
+ this.selectedDestination = match ?? '';
347
+ }
348
+ }
192
349
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LisC4TxtDesCtaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
193
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LisC4TxtDesCtaComponent, isStandalone: true, selector: "lis-c4-txt-des-cta", inputs: { texts: "texts", filters: "filters", items: "items", links: "links", additional1LikeMarca: "additional1LikeMarca" }, usesOnChanges: true, ngImport: i0, template: "<!-- @if (items?.length) { -->\n<section class=\"mdl-md002\">\n <div class=\"mdl-container\">\n <div class=\"m-content-top\">\n @if (texts?.title) {\n <h2 class=\"m-title\" [innerHTML]=\"texts?.title\"></h2>\n }\n <div class=\"m-selects\">\n @if (hasActiveFilters) {\n <button\n type=\"button\"\n class=\"m-clear\"\n (click)=\"clearFilters()\"\n >\n {{ texts?.cleanFilters ?? 'Limpiar filtros' }}\n </button>\n }\n <div class=\"m-select\">\n <select\n #BrandSel\n [attr.aria-label]=\"texts?.marca ?? 'marca'\"\n [(ngModel)]=\"selectedBrand\"\n (change)=\"onBrandChange(BrandSel.value)\"\n >\n <option value=\"\">\n {{ texts?.marca ?? 'All' }}\n </option>\n @for (opt of brandOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n <div class=\"m-select\">\n <select\n #hotelTypeSel\n [attr.aria-label]=\"texts?.hotelType ?? 'hoteles'\"\n [(ngModel)]=\"selectedHotelType\"\n (change)=\"onHotelTypeChange(hotelTypeSel.value)\"\n >\n >\n <option value=\"\">{{ texts?.hotelType }}</option>\n @for (opt of hotelTypeOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n\n <div class=\"m-select\">\n <select\n #Destination\n [attr.aria-label]=\"texts?.destinations ?? 'destinos'\"\n [(ngModel)]=\"selectedDestination\"\n (change)=\"onDestinationChange(Destination.value)\"\n >\n <option value=\"\">{{ texts?.destinations }}</option>\n @for (opt of destinationOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"m-cards-container\">\n @if (filteredItems?.length) {\n @for (item of filteredItems; track $index) {\n <div\n class=\"m-card\"\n [ngClass]=\"{\n cardempty: !getFirstImageByTag(\n tagName,\n item?.images ?? []\n ),\n }\"\n >\n @if (getFirstImageByTag(tagName, item.images ?? [])) {\n <div\n class=\"m-card-top\"\n [style.background-image]=\"\n 'url(' +\n getFirstImageByTag(\n tagName,\n item.images ?? []\n )?.img?.src +\n ')'\n \"\n >\n <div class=\"m-tag-left\">\n @if (item.hoteltype) {\n {{ item.hoteltype }}\n }\n <div class=\"m-keys\">\n @if (\n item?.hoteltype === 'Hotel' &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n >\n <g\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g>\n <g>\n <g\n transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n >\n <g>\n <path\n fill=\"#fff\"\n fill-opacity=\"1\"\n fill-rule=\"nonzero\"\n d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n transform=\"translate(104.000000, 0.000000)\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n }\n </div>\n }\n\n @if (\n item?.hoteltype === 'Apartamento' &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n fill=\"#fff\"\n fill-opacity=\"1\"\n />\n </svg>\n }\n </div>\n }\n </div>\n </div>\n @if (item?.texts?.additional2) {\n <div\n class=\"m-tag-right\"\n [style.backgroundColor]=\"\n item?.styles?.primary ?? '#ff4338'\n \"\n >\n {{ item?.texts?.additional2 }}\n </div>\n }\n </div>\n\n <div class=\"m-content\">\n @if (item.texts?.title || item.texts?.name) {\n <div class=\"m-title\">\n {{\n item.texts?.title ??\n item.texts?.name\n }}\n </div>\n }\n\n <div class=\"m-subtitle\">\n @if (item.locality) {\n {{ item.locality }}\n }\n @if (item.locality && item.province) {\n -\n }\n @if (item.province) {\n {{ item.province }}\n }\n </div>\n\n @if (item.buttons?.length) {\n @for (btn of item.buttons; track $index) {\n <a\n class=\"m-btn\"\n [ngClass]=\"{\n 'm-button-sm': $index % 2 === 0,\n 'm-but m-underline':\n $index % 2 !== 0,\n }\"\n [style.--btn-primary-dynamic]=\"\n item.styles?.primary\n \"\n [style.--btn-hover-dynamic]=\"\n item.styles?.primaryHover\n \"\n [href]=\"btn.url\"\n [attr.target]=\"\n btn.target || '_self'\n \"\n [linkType]=\"btn.linkType\"\n [attr.aria-label]=\"btn.label\"\n >\n <span>{{ btn.label }}</span>\n </a>\n }\n }\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"m-empty\">\n {{\n texts?.notFound ??\n 'No se encontraron resultados con esos filtros.'\n }}\n </div>\n }\n </div>\n </div>\n</section>\n<!-- } -->\n", styles: ["@charset \"UTF-8\";.m-button-big{display:block;min-width:max-content;max-width:100%;width:33rem;text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease;height:4.8rem;cursor:pointer;position:relative;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-big{font-size:1.6rem}}.m-button-big.red{background-color:#ff4338}@media (hover: hover){.m-button-big.red:hover{background-color:#ed3b37}}.m-button-big.blue{background-color:#5b87da}@media (hover: hover){.m-button-big.blue:hover{background-color:#446ecd}}.m-button-big.green{background-color:#3fd5ae}@media (hover: hover){.m-button-big.green:hover{background-color:#2ec99b}}.m-button-big.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button-big.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}.m-button-big span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content}@media (hover: hover){.m-button-big:hover{background-color:#ed3b37}}.m-button-sm{display:block;min-width:max-content;width:100%;max-width:26rem;text-align:center;cursor:pointer;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;height:4.8rem;position:relative;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-sm{font-size:1.6rem}}.m-button-sm span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;color:var(--cl_btn-call-text-hover)}@media (hover: hover){.m-button-sm:hover{background-color:#ed3b37}.m-button-sm:hover span{color:var(--cl_btn-call-text-hover)}}.m-button-sm:focus{background-color:#ed3b37}.m-button-sm:focus span{color:var(--cl_btn-call-text-hover)}.m-underline{display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;color:#515050;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline{font-size:1.6rem}}@media (hover: hover){.m-underline:hover:after,.m-underline.active:after{opacity:1;width:100%}}.m-underline:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;z-index:1}.m-underline:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:0;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}.m-underline-red{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-red{font-size:1.6rem}}.m-underline-red:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-red:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-red:hover{color:#ed3b37}.m-underline-red:hover:after{width:100%}}.m-underline-blue{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-blue{font-size:1.6rem}}.m-underline-blue:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-blue:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#446ecd;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-blue:hover{color:#446ecd}.m-underline-blue:hover:after{width:100%}}.m-underline-green{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-green{font-size:1.6rem}}.m-underline-green:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-green:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#2ec99b;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-green:hover{color:#2ec99b}.m-underline-green:hover:after{width:100%}}.m-swiper-button{width:4.8rem;height:4.8rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative}.m-swiper-button.swiper-button-disabled{opacity:.7}.m-swiper-button svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button.prev{border-top-left-radius:8rem;border-bottom-left-radius:8rem}.m-swiper-button.next{border-top-right-radius:8rem;border-bottom-right-radius:8rem}@media (hover: hover){.m-swiper-button:hover{background-color:#ed3b37}}@media (max-width: 768px){.m-swiper-button{width:3.8rem;height:3.8rem}}@media (max-width: 540px){.m-swiper-button{width:3.2rem;height:3.2rem}.m-swiper-button svg{width:.5rem}}.m-swiper-button-s{width:3rem;height:3rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative;border-radius:100%}.m-swiper-button-s svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button-s.prev svg{left:45%}.m-swiper-button-s.next svg{left:55%}@media (hover: hover){.m-swiper-button-s:hover{background-color:#ed3b37}}.m-button-close{background-color:#ff4338;width:4.4rem;height:4.4rem;border-radius:100%;transition:.3s ease;cursor:pointer;position:relative}.m-button-close svg{transition:transform .4s ease;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}@media (hover: hover){.m-button-close:hover{background-color:#ed3b37}.m-button-close:hover svg{transform:rotate(180deg)}}.m-button{display:block;width:max-content;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button{font-size:1.6rem}}.m-button{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease}@media (hover: hover){.m-button:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}.m-button2{display:block;width:max-content;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button2{font-size:1.6rem}}.m-button2{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;background-color:transparent;border:.1rem solid white}.m-button2.red{background-color:#ff4338}@media (hover: hover){.m-button2.red:hover{background-color:#ed3b37}}.m-button2.blue{background-color:#5b87da}@media (hover: hover){.m-button2.blue:hover{background-color:#446ecd}}.m-button2.green{background-color:#3fd5ae}@media (hover: hover){.m-button2.green:hover{background-color:#2ec99b}}.m-button2.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button2.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}@media (hover: hover){.m-button2:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button2{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}input:not([type=radio]):not([type=checkbox]),textarea,select{background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::placeholder,textarea::placeholder,select::placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-moz-placeholder,textarea::-moz-placeholder,select::-moz-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-ms-input-placeholder,textarea::-ms-input-placeholder,select::-ms-input-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-webkit-input-placeholder,textarea::-webkit-input-placeholder,select::-webkit-input-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px #f6f6f6 inset!important;-webkit-text-fill-color:white!important;transition:background-color 5000s ease-in-out 0s}select{position:relative;cursor:pointer}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}select option{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500;color:#000}.m-checkbox-group{display:flex;flex-direction:row;align-items:flex-start}.m-checkbox-group .m-checkbox,.m-checkbox-group input{border-radius:0!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.8rem;height:2.8rem;border:.1rem solid #d2d2d2;background-color:transparent;padding:0;margin-right:2rem;border-radius:0;cursor:pointer;position:relative}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-checkbox-group label{font-family:jokker,sans-serif;font-size:1.3rem;font-weight:600;max-width:\"calc(100% - 5rem)\"}.m-radio-group{display:flex;flex-direction:row;align-items:center}.m-radio-group .m-radio{-webkit-appearance:none;width:2.8rem;height:2.8rem;border:.2rem solid #d2d2d2;background-color:transparent;border-radius:50%;padding:0;margin-right:2rem;cursor:pointer;position:relative}.m-radio-group .m-radio:checked{background-color:#fff!important}.m-radio-group .m-radio:checked:after{content:\" \";position:absolute;top:50%;left:50%;width:1.6rem;height:1.6rem;border-radius:50%;background-color:#eec52b;transform:translate(-50%,-50%)}.m-radio-group label{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500;max-width:\"calc(100% - 5rem)\"}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}html{font-size:62.5%;overflow-x:hidden}html.overflow-hidden{overflow:hidden}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}html a{text-decoration:none}h1,h2,h3,h4,h5,h6{all:unset;display:revert}.fancybox__viewport{background-color:#fff}.fancybox__viewport.no-idiomas{background-color:red}section[class*=mdl]{padding-left:10rem;padding-right:10rem;box-sizing:border-box}@media (max-width: 1366px){section[class*=mdl]{padding-left:9rem;padding-right:9rem}}@media (max-width: 1280px){section[class*=mdl]{padding-left:8rem;padding-right:8rem}}@media (max-width: 1080px){section[class*=mdl]{padding-left:9.5rem;padding-right:9.5rem}}@media (max-width: 768px){section[class*=mdl]{padding-left:7.7rem;padding-right:7.7rem}}@media (max-width: 540px){section[class*=mdl]{padding-left:4.1rem;padding-right:4.1rem}}@media (max-width: 375px){section[class*=mdl]{padding-left:2.7rem;padding-right:2.7rem}}section .mdl-container{width:100%;max-width:160rem;margin:0 auto}.readmoreinit{overflow:hidden}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:jokker,sans-serif;font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}html{overflow-x:hidden}body{cursor:default;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__container{background-color:#fff}.fancybox__container .fancybox__slide{flex-direction:column-reverse}.fancybox__container .fancybox__backdrop,.fancybox__container .fancybox__counter{display:none}.fancybox__container .fancybox__caption{color:#515050b2;text-align:center;font-family:jokker,sans-serif;font-weight:400;font-size:1.8rem;line-height:3.9rem;padding:0rem 0 2rem}@media (max-width: 540px){.fancybox__container .fancybox__caption{font-size:1.5rem}}@media (max-width: 375px){.fancybox__container .fancybox__caption{font-size:1.3rem}}.fancybox__container .fancybox__thumbs{display:none}.fancybox__container .fancybox__nav .carousel__button{background-color:#ff4338;top:55%}.fancybox__container .fancybox__nav .carousel__button svg{stroke:#fff;stroke-width:.3rem}.fancybox__container .carousel__button.is-close svg{display:none}.fancybox__container .carousel__button.is-close{background:url(/assets/babylon/img/icons/closeRed.svg) no-repeat center;background-size:100%;width:4.2rem;height:4.2rem;top:-4.7rem;right:-5rem;transition:transform .3s ease;transform:rotate(0)}.fancybox__container .carousel__button.is-close:hover{transition:transform .3s ease;transform:rotate(180deg)}@media (max-width: 540px){.fancybox__container .carousel__button.is-close{width:3rem;height:3rem}}.fancybox__container .fancybox__toolbar{border-bottom:none;margin:0 0 0 auto;padding:1rem}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items button:not(.fancybox__button--close){display:none}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close{background-color:#ff4338}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg{width:40%}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg path{stroke:#fff;stroke-width:.3rem}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mdl-md002.p-top{margin-top:10rem}.mdl-md002 .mdl-container{display:flex;flex-direction:column;gap:4rem;align-items:center}.mdl-md002 .mdl-container .m-content-top{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end}.mdl-md002 .mdl-container .m-content-top .m-title{font-family:jokker,sans-serif;font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:2.4rem;line-height:3rem}}.mdl-md002 .mdl-container .m-content-top .m-title{width:100%;max-width:54.4rem;color:#515050b2;font-weight:400}.mdl-md002 .mdl-container .m-content-top .m-selects{display:inline-block;display:flex;gap:2.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:20rem;padding:.5rem 2rem .5rem 1rem;font-size:1rem;color:#515050b2;border:.1rem solid rgba(81,80,80,.6980392157);border-radius:.5rem;background-color:#fff;appearance:none;-webkit-appearance:none;-moz-appearance:none;font-family:jokker,sans-serif;font-weight:500;font-size:1.5rem;line-height:100%;cursor:pointer;min-height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select:after{content:\"\\276e\";position:absolute;right:2rem;top:1.5rem;transform:rotate(270deg);pointer-events:none;color:#515050b2;font-weight:700;font-size:1.3rem}.mdl-md002 .mdl-container .m-cards-container{display:flex;align-items:start;flex-direction:row;gap:0 3rem;max-width:100%;display:grid;grid-template-columns:repeat(4,1fr);width:100%}.mdl-md002 .mdl-container .m-cards-container .m-card{-webkit-tap-highlight-color:transparent;position:relative;display:flex;flex-direction:column;align-items:center;width:100%;cursor:pointer;aspect-ratio:378/486;max-width:38rem;padding-bottom:2rem;margin-inline:auto}@media (min-width: 1024px){.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top{background-blend-mode:multiply}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top:after{bottom:4rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content{transform:translateY(-20%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-logo{opacity:1;transform:translateY(-118%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-button-sm{opacity:1;transform:none;width:100%;max-width:26rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-but{opacity:1;transform:none}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top{position:relative;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:after{content:\"\";width:102%;transition:all .3s ease;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:before{content:\"\";width:100%;height:8rem;background-color:#fff;position:absolute;bottom:0;left:0}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;background-color:#ed3b37;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.6rem;left:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-left{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.5rem;left:1.5rem;white-space:nowrap;display:flex;gap:.8rem;align-items:center}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:3rem;right:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon{background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease;height:31vw;max-height:56rem;background-color:#fff9f9;position:relative}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon:after{content:\"\";width:102%;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:22.1rem;position:absolute;top:30%;left:50%;transform:translate(-50%,-30%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-family:jokker,sans-serif;font-weight:300;font-size:3.2rem;line-height:4.6rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 1080px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:3.2rem;line-height:4.6rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.2rem;line-height:3rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{padding:6rem 5rem;color:#515050b2}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content{display:flex;flex-direction:column;align-items:center;margin-top:-7rem;z-index:1;text-align:center;width:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-logo{position:absolute;justify-self:anchor-center;align-self:anchor-center;opacity:0;transition:all .3s ease;filter:invert(100%) sepia(6%) saturate(3350%) hue-rotate(358deg) brightness(108%) contrast(116%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm{margin-top:1.6rem;opacity:0;transform:translateY(-118%);transition:all .3s ease;width:100%;max-width:26rem;min-width:20rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{margin:2rem 0 4rem;opacity:0;transform:translateY(-118%);transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-family:jokker,sans-serif;font-weight:500;font-size:2.3rem;color:#515050}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-size:2rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{margin-bottom:1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-subtitle{font-family:jokker,sans-serif;font-weight:400;font-size:1.6rem;line-height:2.8rem;color:#515050b2}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(3,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-card-icon{height:34vw}.mdl-md002 .mdl-container .m-title{max-width:66rem}.mdl-md002 .mdl-container .m-content-top{display:flex;flex-direction:column;align-items:flex-start}.mdl-md002 .mdl-container .m-content-top .m-selects{margin:3rem auto 0;flex-wrap:wrap;justify-content:center}}@media (max-width: 1280px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:17.1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.4rem;line-height:3.5rem}}@media (max-width: 1080px){.mdl-md002{padding-top:7.5rem}.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(2,1fr)}.mdl-md002 .mdl-container .m-cards-container .cardempty{display:none}.mdl-md002 .mdl-container .m-cards-container .m-card{aspect-ratio:378/582}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-text{font-size:2.8rem;line-height:3.8rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{left:50%;transform:translate(-50%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm,.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{opacity:1;transform:none}}@media (max-width: 768px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(1,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-title{width:100%;max-width:none}.mdl-md002 .mdl-container .m-cards-container .m-cards-container .m-card .m-content .m-subtitle{font-size:2.8rem}.mdl-md002 .mdl-container .m-content-top .m-selects{flex-direction:column}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-selects{margin:0;flex-wrap:nowrap;flex-direction:column;width:100%;margin-top:2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select,.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:100%}}.mdl-md002 .m-btn{--btn-primary: var(--cl_btn-box);--btn-hover: var(--cl_btn-box-hover);background:var(--btn-primary);border:1px solid var(--btn-primary);color:var(--cl_btn-call-text);display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.mdl-md002 .m-btn:hover{background:var(--btn-hover);border-color:var(--btn-hover)}.mdl-md002 .m-button-sm{border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-button-sm:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline{background:transparent;border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-but.m-underline:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline span{text-decoration:underline;text-decoration-color:currentColor}.mdl-md002 .m-empty{font-family:jokker,sans-serif;font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .m-empty{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .m-empty{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .m-empty{font-size:2.4rem;line-height:3rem}}.mdl-md002 .m-empty{width:100%;max-width:54.4rem;color:#515050b2;font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: BabylonLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick", "clickPopup"], outputs: ["anchorClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
350
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LisC4TxtDesCtaComponent, isStandalone: true, selector: "lis-c4-txt-des-cta", inputs: { texts: "texts", filters: "filters", items: "items", links: "links", additional1LikeMarca: "additional1LikeMarca" }, usesOnChanges: true, ngImport: i0, template: "@if (items?.length) {\n <section class=\"mdl-md002\">\n <div class=\"mdl-container\">\n <div class=\"m-content-top\">\n @if (texts?.title) {\n <h2 class=\"m-title\" [innerHTML]=\"texts?.title\"></h2>\n }\n <div class=\"m-selects\">\n @if (hasActiveFilters) {\n <button\n type=\"button\"\n class=\"m-clear\"\n (click)=\"clearFilters()\"\n >\n {{ texts?.cleanFilters ?? 'Limpiar filtros' }}\n </button>\n }\n <div class=\"m-select\">\n <select\n #BrandSel\n [attr.aria-label]=\"texts?.marca ?? 'marca'\"\n [(ngModel)]=\"selectedBrand\"\n (ngModelChange)=\"onBrandChange($event)\"\n >\n <option value=\"\">\n {{ texts?.marca ?? 'All' }}\n </option>\n @for (opt of brandOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n <div class=\"m-select\">\n <select\n #hotelTypeSel\n [attr.aria-label]=\"texts?.hotelType ?? 'hoteles'\"\n [(ngModel)]=\"selectedHotelType\"\n (ngModelChange)=\"onHotelTypeChange($event)\"\n >\n <option value=\"\">{{ texts?.hotelType }}</option>\n @for (opt of hotelTypeOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n\n <div class=\"m-select\">\n <select\n #Destination\n [attr.aria-label]=\"\n texts?.destinations ?? 'destinos'\n \"\n [(ngModel)]=\"selectedDestination\"\n (ngModelChange)=\"onDestinationChange($event)\"\n >\n <option value=\"\">{{ texts?.destinations }}</option>\n @for (opt of destinationOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"m-cards-container\">\n @if (filteredItems?.length) {\n @for (item of filteredItems; track $index) {\n <div\n class=\"m-card\"\n [ngClass]=\"{\n cardempty: !getFirstImageByTag(\n tagName,\n item?.images ?? []\n ),\n }\"\n >\n @if (\n getFirstImageByTag(tagName, item.images ?? [])\n ) {\n <div\n class=\"m-card-top\"\n [style.background-image]=\"\n 'url(' +\n getFirstImageByTag(\n tagName,\n item.images ?? []\n )?.img?.src +\n ')'\n \"\n >\n <div class=\"m-tag-left\">\n @if (item.hoteltype) {\n {{ item.hoteltype }}\n }\n <div class=\"m-keys\">\n @if (\n item?.hoteltype === 'Hotel' &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n >\n <g\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g>\n <g>\n <g\n transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n >\n <g>\n <path\n fill=\"#fff\"\n fill-opacity=\"1\"\n fill-rule=\"nonzero\"\n d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n transform=\"translate(104.000000, 0.000000)\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n }\n </div>\n }\n\n @if (\n item?.hoteltype ===\n 'Apartamento' &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n fill=\"#fff\"\n fill-opacity=\"1\"\n />\n </svg>\n }\n </div>\n }\n </div>\n </div>\n @if (item?.texts?.additional2) {\n <div\n class=\"m-tag-right\"\n [style.backgroundColor]=\"\n item?.styles?.primary ??\n '#ff4338'\n \"\n >\n {{ item?.texts?.additional2 }}\n </div>\n }\n </div>\n\n <div class=\"m-content\">\n @if (\n item.texts?.title || item.texts?.name\n ) {\n <div class=\"m-title\">\n {{\n item.texts?.title ??\n item.texts?.name\n }}\n </div>\n }\n\n <div class=\"m-subtitle\">\n @if (item.locality) {\n {{ item.locality }}\n }\n @if (item.locality && item.province) {\n -\n }\n @if (item.province) {\n {{ item.province }}\n }\n </div>\n\n @if (item.buttons?.length) {\n @for (\n btn of item.buttons;\n track $index\n ) {\n <a\n class=\"m-btn\"\n [ngClass]=\"{\n 'm-button-sm':\n $index % 2 === 0,\n 'm-but m-underline':\n $index % 2 !== 0,\n }\"\n [style.--btn-primary-dynamic]=\"\n item.styles?.primary\n \"\n [style.--btn-hover-dynamic]=\"\n item.styles?.primaryHover\n \"\n [href]=\"btn.url\"\n [attr.target]=\"\n btn.target || '_self'\n \"\n [linkType]=\"btn.linkType\"\n [attr.aria-label]=\"btn.label\"\n >\n <span>{{ btn.label }}</span>\n </a>\n }\n }\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"m-empty\">\n {{\n texts?.notFound ??\n 'No se encontraron resultados con esos filtros.'\n }}\n </div>\n }\n </div>\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.m-button-big{display:block;min-width:max-content;max-width:100%;width:33rem;text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease;height:4.8rem;cursor:pointer;position:relative;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-big{font-size:1.6rem}}.m-button-big.red{background-color:#ff4338}@media (hover: hover){.m-button-big.red:hover{background-color:#ed3b37}}.m-button-big.blue{background-color:#5b87da}@media (hover: hover){.m-button-big.blue:hover{background-color:#446ecd}}.m-button-big.green{background-color:#3fd5ae}@media (hover: hover){.m-button-big.green:hover{background-color:#2ec99b}}.m-button-big.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button-big.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}.m-button-big span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content}@media (hover: hover){.m-button-big:hover{background-color:#ed3b37}}.m-button-sm{display:block;min-width:max-content;width:100%;max-width:26rem;text-align:center;cursor:pointer;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;height:4.8rem;position:relative;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-sm{font-size:1.6rem}}.m-button-sm span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;color:var(--cl_btn-call-text-hover)}@media (hover: hover){.m-button-sm:hover{background-color:#ed3b37}.m-button-sm:hover span{color:var(--cl_btn-call-text-hover)}}.m-button-sm:focus{background-color:#ed3b37}.m-button-sm:focus span{color:var(--cl_btn-call-text-hover)}.m-underline{display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;color:#515050;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline{font-size:1.6rem}}@media (hover: hover){.m-underline:hover:after,.m-underline.active:after{opacity:1;width:100%}}.m-underline:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;z-index:1}.m-underline:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:0;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}.m-underline-red{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-red{font-size:1.6rem}}.m-underline-red:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-red:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-red:hover{color:#ed3b37}.m-underline-red:hover:after{width:100%}}.m-underline-blue{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-blue{font-size:1.6rem}}.m-underline-blue:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-blue:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#446ecd;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-blue:hover{color:#446ecd}.m-underline-blue:hover:after{width:100%}}.m-underline-green{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-green{font-size:1.6rem}}.m-underline-green:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-green:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#2ec99b;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-green:hover{color:#2ec99b}.m-underline-green:hover:after{width:100%}}.m-swiper-button{width:4.8rem;height:4.8rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative}.m-swiper-button.swiper-button-disabled{opacity:.7}.m-swiper-button svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button.prev{border-top-left-radius:8rem;border-bottom-left-radius:8rem}.m-swiper-button.next{border-top-right-radius:8rem;border-bottom-right-radius:8rem}@media (hover: hover){.m-swiper-button:hover{background-color:#ed3b37}}@media (max-width: 768px){.m-swiper-button{width:3.8rem;height:3.8rem}}@media (max-width: 540px){.m-swiper-button{width:3.2rem;height:3.2rem}.m-swiper-button svg{width:.5rem}}.m-swiper-button-s{width:3rem;height:3rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative;border-radius:100%}.m-swiper-button-s svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button-s.prev svg{left:45%}.m-swiper-button-s.next svg{left:55%}@media (hover: hover){.m-swiper-button-s:hover{background-color:#ed3b37}}.m-button-close{background-color:#ff4338;width:4.4rem;height:4.4rem;border-radius:100%;transition:.3s ease;cursor:pointer;position:relative}.m-button-close svg{transition:transform .4s ease;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}@media (hover: hover){.m-button-close:hover{background-color:#ed3b37}.m-button-close:hover svg{transform:rotate(180deg)}}.m-button{display:block;width:max-content;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button{font-size:1.6rem}}.m-button{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease}@media (hover: hover){.m-button:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}.m-button2{display:block;width:max-content;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button2{font-size:1.6rem}}.m-button2{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;background-color:transparent;border:.1rem solid white}.m-button2.red{background-color:#ff4338}@media (hover: hover){.m-button2.red:hover{background-color:#ed3b37}}.m-button2.blue{background-color:#5b87da}@media (hover: hover){.m-button2.blue:hover{background-color:#446ecd}}.m-button2.green{background-color:#3fd5ae}@media (hover: hover){.m-button2.green:hover{background-color:#2ec99b}}.m-button2.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button2.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}@media (hover: hover){.m-button2:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button2{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}input:not([type=radio]):not([type=checkbox]),textarea,select{background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::placeholder,textarea::placeholder,select::placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-moz-placeholder,textarea::-moz-placeholder,select::-moz-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-ms-input-placeholder,textarea::-ms-input-placeholder,select::-ms-input-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-webkit-input-placeholder,textarea::-webkit-input-placeholder,select::-webkit-input-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px #f6f6f6 inset!important;-webkit-text-fill-color:white!important;transition:background-color 5000s ease-in-out 0s}select{position:relative;cursor:pointer}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}select option{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500;color:#000}.m-checkbox-group{display:flex;flex-direction:row;align-items:flex-start}.m-checkbox-group .m-checkbox,.m-checkbox-group input{border-radius:0!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.8rem;height:2.8rem;border:.1rem solid #d2d2d2;background-color:transparent;padding:0;margin-right:2rem;border-radius:0;cursor:pointer;position:relative}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-checkbox-group label{font-family:jokker,sans-serif;font-size:1.3rem;font-weight:600;max-width:\"calc(100% - 5rem)\"}.m-radio-group{display:flex;flex-direction:row;align-items:center}.m-radio-group .m-radio{-webkit-appearance:none;width:2.8rem;height:2.8rem;border:.2rem solid #d2d2d2;background-color:transparent;border-radius:50%;padding:0;margin-right:2rem;cursor:pointer;position:relative}.m-radio-group .m-radio:checked{background-color:#fff!important}.m-radio-group .m-radio:checked:after{content:\" \";position:absolute;top:50%;left:50%;width:1.6rem;height:1.6rem;border-radius:50%;background-color:#eec52b;transform:translate(-50%,-50%)}.m-radio-group label{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500;max-width:\"calc(100% - 5rem)\"}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}html{font-size:62.5%;overflow-x:hidden}html.overflow-hidden{overflow:hidden}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}html a{text-decoration:none}h1,h2,h3,h4,h5,h6{all:unset;display:revert}.fancybox__viewport{background-color:#fff}.fancybox__viewport.no-idiomas{background-color:red}section[class*=mdl]{padding-left:10rem;padding-right:10rem;box-sizing:border-box}@media (max-width: 1366px){section[class*=mdl]{padding-left:9rem;padding-right:9rem}}@media (max-width: 1280px){section[class*=mdl]{padding-left:8rem;padding-right:8rem}}@media (max-width: 1080px){section[class*=mdl]{padding-left:9.5rem;padding-right:9.5rem}}@media (max-width: 768px){section[class*=mdl]{padding-left:7.7rem;padding-right:7.7rem}}@media (max-width: 540px){section[class*=mdl]{padding-left:4.1rem;padding-right:4.1rem}}@media (max-width: 375px){section[class*=mdl]{padding-left:2.7rem;padding-right:2.7rem}}section .mdl-container{width:100%;max-width:160rem;margin:0 auto}.readmoreinit{overflow:hidden}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:jokker,sans-serif;font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}html{overflow-x:hidden}body{cursor:default;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__container{background-color:#fff}.fancybox__container .fancybox__slide{flex-direction:column-reverse}.fancybox__container .fancybox__backdrop,.fancybox__container .fancybox__counter{display:none}.fancybox__container .fancybox__caption{color:#515050b2;text-align:center;font-family:jokker,sans-serif;font-weight:400;font-size:1.8rem;line-height:3.9rem;padding:0rem 0 2rem}@media (max-width: 540px){.fancybox__container .fancybox__caption{font-size:1.5rem}}@media (max-width: 375px){.fancybox__container .fancybox__caption{font-size:1.3rem}}.fancybox__container .fancybox__thumbs{display:none}.fancybox__container .fancybox__nav .carousel__button{background-color:#ff4338;top:55%}.fancybox__container .fancybox__nav .carousel__button svg{stroke:#fff;stroke-width:.3rem}.fancybox__container .carousel__button.is-close svg{display:none}.fancybox__container .carousel__button.is-close{background:url(/assets/babylon/img/icons/closeRed.svg) no-repeat center;background-size:100%;width:4.2rem;height:4.2rem;top:-4.7rem;right:-5rem;transition:transform .3s ease;transform:rotate(0)}.fancybox__container .carousel__button.is-close:hover{transition:transform .3s ease;transform:rotate(180deg)}@media (max-width: 540px){.fancybox__container .carousel__button.is-close{width:3rem;height:3rem}}.fancybox__container .fancybox__toolbar{border-bottom:none;margin:0 0 0 auto;padding:1rem}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items button:not(.fancybox__button--close){display:none}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close{background-color:#ff4338}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg{width:40%}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg path{stroke:#fff;stroke-width:.3rem}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mdl-md002.p-top{margin-top:10rem}.mdl-md002 .mdl-container{display:flex;flex-direction:column;gap:4rem;align-items:center}.mdl-md002 .mdl-container .m-content-top{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end}.mdl-md002 .mdl-container .m-content-top .m-title{font-family:jokker,sans-serif;font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:2.4rem;line-height:3rem}}.mdl-md002 .mdl-container .m-content-top .m-title{width:100%;max-width:54.4rem;color:#515050b2;font-weight:400}.mdl-md002 .mdl-container .m-content-top .m-selects{display:inline-block;display:flex;gap:2.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:20rem;padding:.5rem 2rem .5rem 1rem;font-size:1rem;color:#515050b2;border:.1rem solid rgba(81,80,80,.6980392157);border-radius:.5rem;background-color:#fff;appearance:none;-webkit-appearance:none;-moz-appearance:none;font-family:jokker,sans-serif;font-weight:500;font-size:1.5rem;line-height:100%;cursor:pointer;min-height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select:after{content:\"\\276e\";position:absolute;right:2rem;top:1.5rem;transform:rotate(270deg);pointer-events:none;color:#515050b2;font-weight:700;font-size:1.3rem}.mdl-md002 .mdl-container .m-cards-container{display:flex;align-items:start;flex-direction:row;gap:0 3rem;max-width:100%;display:grid;grid-template-columns:repeat(4,1fr);width:100%}.mdl-md002 .mdl-container .m-cards-container .m-card{-webkit-tap-highlight-color:transparent;position:relative;display:flex;flex-direction:column;align-items:center;width:100%;cursor:pointer;aspect-ratio:378/486;max-width:38rem;padding-bottom:2rem;margin-inline:auto}@media (min-width: 1024px){.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top{background-blend-mode:multiply}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top:after{bottom:4rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content{transform:translateY(-20%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-logo{opacity:1;transform:translateY(-118%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-button-sm{opacity:1;transform:none;width:100%;max-width:26rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-but{opacity:1;transform:none}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top{position:relative;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:after{content:\"\";width:102%;transition:all .3s ease;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:before{content:\"\";width:100%;height:8rem;background-color:#fff;position:absolute;bottom:0;left:0}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;background-color:#ed3b37;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.6rem;left:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-left{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.5rem;left:1.5rem;white-space:nowrap;display:flex;gap:.8rem;align-items:center}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:3rem;right:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon{background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease;height:31vw;max-height:56rem;background-color:#fff9f9;position:relative}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon:after{content:\"\";width:102%;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:22.1rem;position:absolute;top:30%;left:50%;transform:translate(-50%,-30%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-family:jokker,sans-serif;font-weight:300;font-size:3.2rem;line-height:4.6rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 1080px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:3.2rem;line-height:4.6rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.2rem;line-height:3rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{padding:6rem 5rem;color:#515050b2}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content{display:flex;flex-direction:column;align-items:center;margin-top:-7rem;z-index:1;text-align:center;width:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-logo{position:absolute;justify-self:anchor-center;align-self:anchor-center;opacity:0;transition:all .3s ease;filter:invert(100%) sepia(6%) saturate(3350%) hue-rotate(358deg) brightness(108%) contrast(116%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm{margin-top:1.6rem;opacity:0;transform:translateY(-118%);transition:all .3s ease;width:100%;max-width:26rem;min-width:20rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{margin:2rem 0 4rem;opacity:0;transform:translateY(-118%);transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-family:jokker,sans-serif;font-weight:500;font-size:2.3rem;color:#515050}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-size:2rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{margin-bottom:1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-subtitle{font-family:jokker,sans-serif;font-weight:400;font-size:1.6rem;line-height:2.8rem;color:#515050b2}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(3,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-card-icon{height:34vw}.mdl-md002 .mdl-container .m-title{max-width:66rem}.mdl-md002 .mdl-container .m-content-top{display:flex;flex-direction:column;align-items:flex-start}.mdl-md002 .mdl-container .m-content-top .m-selects{margin:3rem auto 0;flex-wrap:wrap;justify-content:center}}@media (max-width: 1280px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:17.1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.4rem;line-height:3.5rem}}@media (max-width: 1080px){.mdl-md002{padding-top:7.5rem}.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(2,1fr)}.mdl-md002 .mdl-container .m-cards-container .cardempty{display:none}.mdl-md002 .mdl-container .m-cards-container .m-card{aspect-ratio:378/582}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-text{font-size:2.8rem;line-height:3.8rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{left:50%;transform:translate(-50%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm,.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{opacity:1;transform:none}}@media (max-width: 768px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(1,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-title{width:100%;max-width:none}.mdl-md002 .mdl-container .m-cards-container .m-cards-container .m-card .m-content .m-subtitle{font-size:2.8rem}.mdl-md002 .mdl-container .m-content-top .m-selects{flex-direction:column}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-selects{margin:0;flex-wrap:nowrap;flex-direction:column;width:100%;margin-top:2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select,.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:100%}}.mdl-md002 .m-btn{--btn-primary: var(--cl_btn-box);--btn-hover: var(--cl_btn-box-hover);background:var(--btn-primary);border:1px solid var(--btn-primary);color:var(--cl_btn-call-text);display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.mdl-md002 .m-btn:hover{background:var(--btn-hover);border-color:var(--btn-hover)}.mdl-md002 .m-button-sm{border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-button-sm:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline{background:transparent;border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-but.m-underline:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline span{text-decoration:underline;text-decoration-color:currentColor}.mdl-md002 .m-empty{font-family:jokker,sans-serif;font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .m-empty{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .m-empty{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .m-empty{font-size:2.4rem;line-height:3rem}}.mdl-md002 .m-empty{width:100%;max-width:54.4rem;color:#515050b2;font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: BabylonLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick", "clickPopup"], outputs: ["anchorClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
194
351
  }
195
352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LisC4TxtDesCtaComponent, decorators: [{
196
353
  type: Component,
197
- args: [{ selector: 'lis-c4-txt-des-cta', standalone: true, encapsulation: ViewEncapsulation.None, imports: [CommonModule, BabylonLinkTypeDirective, FormsModule], template: "<!-- @if (items?.length) { -->\n<section class=\"mdl-md002\">\n <div class=\"mdl-container\">\n <div class=\"m-content-top\">\n @if (texts?.title) {\n <h2 class=\"m-title\" [innerHTML]=\"texts?.title\"></h2>\n }\n <div class=\"m-selects\">\n @if (hasActiveFilters) {\n <button\n type=\"button\"\n class=\"m-clear\"\n (click)=\"clearFilters()\"\n >\n {{ texts?.cleanFilters ?? 'Limpiar filtros' }}\n </button>\n }\n <div class=\"m-select\">\n <select\n #BrandSel\n [attr.aria-label]=\"texts?.marca ?? 'marca'\"\n [(ngModel)]=\"selectedBrand\"\n (change)=\"onBrandChange(BrandSel.value)\"\n >\n <option value=\"\">\n {{ texts?.marca ?? 'All' }}\n </option>\n @for (opt of brandOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n <div class=\"m-select\">\n <select\n #hotelTypeSel\n [attr.aria-label]=\"texts?.hotelType ?? 'hoteles'\"\n [(ngModel)]=\"selectedHotelType\"\n (change)=\"onHotelTypeChange(hotelTypeSel.value)\"\n >\n >\n <option value=\"\">{{ texts?.hotelType }}</option>\n @for (opt of hotelTypeOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n\n <div class=\"m-select\">\n <select\n #Destination\n [attr.aria-label]=\"texts?.destinations ?? 'destinos'\"\n [(ngModel)]=\"selectedDestination\"\n (change)=\"onDestinationChange(Destination.value)\"\n >\n <option value=\"\">{{ texts?.destinations }}</option>\n @for (opt of destinationOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"m-cards-container\">\n @if (filteredItems?.length) {\n @for (item of filteredItems; track $index) {\n <div\n class=\"m-card\"\n [ngClass]=\"{\n cardempty: !getFirstImageByTag(\n tagName,\n item?.images ?? []\n ),\n }\"\n >\n @if (getFirstImageByTag(tagName, item.images ?? [])) {\n <div\n class=\"m-card-top\"\n [style.background-image]=\"\n 'url(' +\n getFirstImageByTag(\n tagName,\n item.images ?? []\n )?.img?.src +\n ')'\n \"\n >\n <div class=\"m-tag-left\">\n @if (item.hoteltype) {\n {{ item.hoteltype }}\n }\n <div class=\"m-keys\">\n @if (\n item?.hoteltype === 'Hotel' &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n >\n <g\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g>\n <g>\n <g\n transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n >\n <g>\n <path\n fill=\"#fff\"\n fill-opacity=\"1\"\n fill-rule=\"nonzero\"\n d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n transform=\"translate(104.000000, 0.000000)\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n }\n </div>\n }\n\n @if (\n item?.hoteltype === 'Apartamento' &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n fill=\"#fff\"\n fill-opacity=\"1\"\n />\n </svg>\n }\n </div>\n }\n </div>\n </div>\n @if (item?.texts?.additional2) {\n <div\n class=\"m-tag-right\"\n [style.backgroundColor]=\"\n item?.styles?.primary ?? '#ff4338'\n \"\n >\n {{ item?.texts?.additional2 }}\n </div>\n }\n </div>\n\n <div class=\"m-content\">\n @if (item.texts?.title || item.texts?.name) {\n <div class=\"m-title\">\n {{\n item.texts?.title ??\n item.texts?.name\n }}\n </div>\n }\n\n <div class=\"m-subtitle\">\n @if (item.locality) {\n {{ item.locality }}\n }\n @if (item.locality && item.province) {\n -\n }\n @if (item.province) {\n {{ item.province }}\n }\n </div>\n\n @if (item.buttons?.length) {\n @for (btn of item.buttons; track $index) {\n <a\n class=\"m-btn\"\n [ngClass]=\"{\n 'm-button-sm': $index % 2 === 0,\n 'm-but m-underline':\n $index % 2 !== 0,\n }\"\n [style.--btn-primary-dynamic]=\"\n item.styles?.primary\n \"\n [style.--btn-hover-dynamic]=\"\n item.styles?.primaryHover\n \"\n [href]=\"btn.url\"\n [attr.target]=\"\n btn.target || '_self'\n \"\n [linkType]=\"btn.linkType\"\n [attr.aria-label]=\"btn.label\"\n >\n <span>{{ btn.label }}</span>\n </a>\n }\n }\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"m-empty\">\n {{\n texts?.notFound ??\n 'No se encontraron resultados con esos filtros.'\n }}\n </div>\n }\n </div>\n </div>\n</section>\n<!-- } -->\n", styles: ["@charset \"UTF-8\";.m-button-big{display:block;min-width:max-content;max-width:100%;width:33rem;text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease;height:4.8rem;cursor:pointer;position:relative;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-big{font-size:1.6rem}}.m-button-big.red{background-color:#ff4338}@media (hover: hover){.m-button-big.red:hover{background-color:#ed3b37}}.m-button-big.blue{background-color:#5b87da}@media (hover: hover){.m-button-big.blue:hover{background-color:#446ecd}}.m-button-big.green{background-color:#3fd5ae}@media (hover: hover){.m-button-big.green:hover{background-color:#2ec99b}}.m-button-big.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button-big.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}.m-button-big span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content}@media (hover: hover){.m-button-big:hover{background-color:#ed3b37}}.m-button-sm{display:block;min-width:max-content;width:100%;max-width:26rem;text-align:center;cursor:pointer;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;height:4.8rem;position:relative;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-sm{font-size:1.6rem}}.m-button-sm span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;color:var(--cl_btn-call-text-hover)}@media (hover: hover){.m-button-sm:hover{background-color:#ed3b37}.m-button-sm:hover span{color:var(--cl_btn-call-text-hover)}}.m-button-sm:focus{background-color:#ed3b37}.m-button-sm:focus span{color:var(--cl_btn-call-text-hover)}.m-underline{display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;color:#515050;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline{font-size:1.6rem}}@media (hover: hover){.m-underline:hover:after,.m-underline.active:after{opacity:1;width:100%}}.m-underline:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;z-index:1}.m-underline:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:0;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}.m-underline-red{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-red{font-size:1.6rem}}.m-underline-red:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-red:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-red:hover{color:#ed3b37}.m-underline-red:hover:after{width:100%}}.m-underline-blue{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-blue{font-size:1.6rem}}.m-underline-blue:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-blue:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#446ecd;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-blue:hover{color:#446ecd}.m-underline-blue:hover:after{width:100%}}.m-underline-green{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-green{font-size:1.6rem}}.m-underline-green:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-green:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#2ec99b;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-green:hover{color:#2ec99b}.m-underline-green:hover:after{width:100%}}.m-swiper-button{width:4.8rem;height:4.8rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative}.m-swiper-button.swiper-button-disabled{opacity:.7}.m-swiper-button svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button.prev{border-top-left-radius:8rem;border-bottom-left-radius:8rem}.m-swiper-button.next{border-top-right-radius:8rem;border-bottom-right-radius:8rem}@media (hover: hover){.m-swiper-button:hover{background-color:#ed3b37}}@media (max-width: 768px){.m-swiper-button{width:3.8rem;height:3.8rem}}@media (max-width: 540px){.m-swiper-button{width:3.2rem;height:3.2rem}.m-swiper-button svg{width:.5rem}}.m-swiper-button-s{width:3rem;height:3rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative;border-radius:100%}.m-swiper-button-s svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button-s.prev svg{left:45%}.m-swiper-button-s.next svg{left:55%}@media (hover: hover){.m-swiper-button-s:hover{background-color:#ed3b37}}.m-button-close{background-color:#ff4338;width:4.4rem;height:4.4rem;border-radius:100%;transition:.3s ease;cursor:pointer;position:relative}.m-button-close svg{transition:transform .4s ease;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}@media (hover: hover){.m-button-close:hover{background-color:#ed3b37}.m-button-close:hover svg{transform:rotate(180deg)}}.m-button{display:block;width:max-content;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button{font-size:1.6rem}}.m-button{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease}@media (hover: hover){.m-button:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}.m-button2{display:block;width:max-content;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button2{font-size:1.6rem}}.m-button2{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;background-color:transparent;border:.1rem solid white}.m-button2.red{background-color:#ff4338}@media (hover: hover){.m-button2.red:hover{background-color:#ed3b37}}.m-button2.blue{background-color:#5b87da}@media (hover: hover){.m-button2.blue:hover{background-color:#446ecd}}.m-button2.green{background-color:#3fd5ae}@media (hover: hover){.m-button2.green:hover{background-color:#2ec99b}}.m-button2.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button2.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}@media (hover: hover){.m-button2:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button2{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}input:not([type=radio]):not([type=checkbox]),textarea,select{background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::placeholder,textarea::placeholder,select::placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-moz-placeholder,textarea::-moz-placeholder,select::-moz-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-ms-input-placeholder,textarea::-ms-input-placeholder,select::-ms-input-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-webkit-input-placeholder,textarea::-webkit-input-placeholder,select::-webkit-input-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px #f6f6f6 inset!important;-webkit-text-fill-color:white!important;transition:background-color 5000s ease-in-out 0s}select{position:relative;cursor:pointer}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}select option{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500;color:#000}.m-checkbox-group{display:flex;flex-direction:row;align-items:flex-start}.m-checkbox-group .m-checkbox,.m-checkbox-group input{border-radius:0!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.8rem;height:2.8rem;border:.1rem solid #d2d2d2;background-color:transparent;padding:0;margin-right:2rem;border-radius:0;cursor:pointer;position:relative}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-checkbox-group label{font-family:jokker,sans-serif;font-size:1.3rem;font-weight:600;max-width:\"calc(100% - 5rem)\"}.m-radio-group{display:flex;flex-direction:row;align-items:center}.m-radio-group .m-radio{-webkit-appearance:none;width:2.8rem;height:2.8rem;border:.2rem solid #d2d2d2;background-color:transparent;border-radius:50%;padding:0;margin-right:2rem;cursor:pointer;position:relative}.m-radio-group .m-radio:checked{background-color:#fff!important}.m-radio-group .m-radio:checked:after{content:\" \";position:absolute;top:50%;left:50%;width:1.6rem;height:1.6rem;border-radius:50%;background-color:#eec52b;transform:translate(-50%,-50%)}.m-radio-group label{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500;max-width:\"calc(100% - 5rem)\"}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}html{font-size:62.5%;overflow-x:hidden}html.overflow-hidden{overflow:hidden}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}html a{text-decoration:none}h1,h2,h3,h4,h5,h6{all:unset;display:revert}.fancybox__viewport{background-color:#fff}.fancybox__viewport.no-idiomas{background-color:red}section[class*=mdl]{padding-left:10rem;padding-right:10rem;box-sizing:border-box}@media (max-width: 1366px){section[class*=mdl]{padding-left:9rem;padding-right:9rem}}@media (max-width: 1280px){section[class*=mdl]{padding-left:8rem;padding-right:8rem}}@media (max-width: 1080px){section[class*=mdl]{padding-left:9.5rem;padding-right:9.5rem}}@media (max-width: 768px){section[class*=mdl]{padding-left:7.7rem;padding-right:7.7rem}}@media (max-width: 540px){section[class*=mdl]{padding-left:4.1rem;padding-right:4.1rem}}@media (max-width: 375px){section[class*=mdl]{padding-left:2.7rem;padding-right:2.7rem}}section .mdl-container{width:100%;max-width:160rem;margin:0 auto}.readmoreinit{overflow:hidden}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:jokker,sans-serif;font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}html{overflow-x:hidden}body{cursor:default;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__container{background-color:#fff}.fancybox__container .fancybox__slide{flex-direction:column-reverse}.fancybox__container .fancybox__backdrop,.fancybox__container .fancybox__counter{display:none}.fancybox__container .fancybox__caption{color:#515050b2;text-align:center;font-family:jokker,sans-serif;font-weight:400;font-size:1.8rem;line-height:3.9rem;padding:0rem 0 2rem}@media (max-width: 540px){.fancybox__container .fancybox__caption{font-size:1.5rem}}@media (max-width: 375px){.fancybox__container .fancybox__caption{font-size:1.3rem}}.fancybox__container .fancybox__thumbs{display:none}.fancybox__container .fancybox__nav .carousel__button{background-color:#ff4338;top:55%}.fancybox__container .fancybox__nav .carousel__button svg{stroke:#fff;stroke-width:.3rem}.fancybox__container .carousel__button.is-close svg{display:none}.fancybox__container .carousel__button.is-close{background:url(/assets/babylon/img/icons/closeRed.svg) no-repeat center;background-size:100%;width:4.2rem;height:4.2rem;top:-4.7rem;right:-5rem;transition:transform .3s ease;transform:rotate(0)}.fancybox__container .carousel__button.is-close:hover{transition:transform .3s ease;transform:rotate(180deg)}@media (max-width: 540px){.fancybox__container .carousel__button.is-close{width:3rem;height:3rem}}.fancybox__container .fancybox__toolbar{border-bottom:none;margin:0 0 0 auto;padding:1rem}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items button:not(.fancybox__button--close){display:none}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close{background-color:#ff4338}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg{width:40%}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg path{stroke:#fff;stroke-width:.3rem}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mdl-md002.p-top{margin-top:10rem}.mdl-md002 .mdl-container{display:flex;flex-direction:column;gap:4rem;align-items:center}.mdl-md002 .mdl-container .m-content-top{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end}.mdl-md002 .mdl-container .m-content-top .m-title{font-family:jokker,sans-serif;font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:2.4rem;line-height:3rem}}.mdl-md002 .mdl-container .m-content-top .m-title{width:100%;max-width:54.4rem;color:#515050b2;font-weight:400}.mdl-md002 .mdl-container .m-content-top .m-selects{display:inline-block;display:flex;gap:2.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:20rem;padding:.5rem 2rem .5rem 1rem;font-size:1rem;color:#515050b2;border:.1rem solid rgba(81,80,80,.6980392157);border-radius:.5rem;background-color:#fff;appearance:none;-webkit-appearance:none;-moz-appearance:none;font-family:jokker,sans-serif;font-weight:500;font-size:1.5rem;line-height:100%;cursor:pointer;min-height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select:after{content:\"\\276e\";position:absolute;right:2rem;top:1.5rem;transform:rotate(270deg);pointer-events:none;color:#515050b2;font-weight:700;font-size:1.3rem}.mdl-md002 .mdl-container .m-cards-container{display:flex;align-items:start;flex-direction:row;gap:0 3rem;max-width:100%;display:grid;grid-template-columns:repeat(4,1fr);width:100%}.mdl-md002 .mdl-container .m-cards-container .m-card{-webkit-tap-highlight-color:transparent;position:relative;display:flex;flex-direction:column;align-items:center;width:100%;cursor:pointer;aspect-ratio:378/486;max-width:38rem;padding-bottom:2rem;margin-inline:auto}@media (min-width: 1024px){.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top{background-blend-mode:multiply}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top:after{bottom:4rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content{transform:translateY(-20%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-logo{opacity:1;transform:translateY(-118%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-button-sm{opacity:1;transform:none;width:100%;max-width:26rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-but{opacity:1;transform:none}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top{position:relative;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:after{content:\"\";width:102%;transition:all .3s ease;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:before{content:\"\";width:100%;height:8rem;background-color:#fff;position:absolute;bottom:0;left:0}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;background-color:#ed3b37;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.6rem;left:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-left{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.5rem;left:1.5rem;white-space:nowrap;display:flex;gap:.8rem;align-items:center}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:3rem;right:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon{background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease;height:31vw;max-height:56rem;background-color:#fff9f9;position:relative}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon:after{content:\"\";width:102%;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:22.1rem;position:absolute;top:30%;left:50%;transform:translate(-50%,-30%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-family:jokker,sans-serif;font-weight:300;font-size:3.2rem;line-height:4.6rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 1080px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:3.2rem;line-height:4.6rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.2rem;line-height:3rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{padding:6rem 5rem;color:#515050b2}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content{display:flex;flex-direction:column;align-items:center;margin-top:-7rem;z-index:1;text-align:center;width:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-logo{position:absolute;justify-self:anchor-center;align-self:anchor-center;opacity:0;transition:all .3s ease;filter:invert(100%) sepia(6%) saturate(3350%) hue-rotate(358deg) brightness(108%) contrast(116%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm{margin-top:1.6rem;opacity:0;transform:translateY(-118%);transition:all .3s ease;width:100%;max-width:26rem;min-width:20rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{margin:2rem 0 4rem;opacity:0;transform:translateY(-118%);transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-family:jokker,sans-serif;font-weight:500;font-size:2.3rem;color:#515050}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-size:2rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{margin-bottom:1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-subtitle{font-family:jokker,sans-serif;font-weight:400;font-size:1.6rem;line-height:2.8rem;color:#515050b2}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(3,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-card-icon{height:34vw}.mdl-md002 .mdl-container .m-title{max-width:66rem}.mdl-md002 .mdl-container .m-content-top{display:flex;flex-direction:column;align-items:flex-start}.mdl-md002 .mdl-container .m-content-top .m-selects{margin:3rem auto 0;flex-wrap:wrap;justify-content:center}}@media (max-width: 1280px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:17.1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.4rem;line-height:3.5rem}}@media (max-width: 1080px){.mdl-md002{padding-top:7.5rem}.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(2,1fr)}.mdl-md002 .mdl-container .m-cards-container .cardempty{display:none}.mdl-md002 .mdl-container .m-cards-container .m-card{aspect-ratio:378/582}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-text{font-size:2.8rem;line-height:3.8rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{left:50%;transform:translate(-50%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm,.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{opacity:1;transform:none}}@media (max-width: 768px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(1,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-title{width:100%;max-width:none}.mdl-md002 .mdl-container .m-cards-container .m-cards-container .m-card .m-content .m-subtitle{font-size:2.8rem}.mdl-md002 .mdl-container .m-content-top .m-selects{flex-direction:column}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-selects{margin:0;flex-wrap:nowrap;flex-direction:column;width:100%;margin-top:2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select,.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:100%}}.mdl-md002 .m-btn{--btn-primary: var(--cl_btn-box);--btn-hover: var(--cl_btn-box-hover);background:var(--btn-primary);border:1px solid var(--btn-primary);color:var(--cl_btn-call-text);display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.mdl-md002 .m-btn:hover{background:var(--btn-hover);border-color:var(--btn-hover)}.mdl-md002 .m-button-sm{border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-button-sm:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline{background:transparent;border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-but.m-underline:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline span{text-decoration:underline;text-decoration-color:currentColor}.mdl-md002 .m-empty{font-family:jokker,sans-serif;font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .m-empty{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .m-empty{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .m-empty{font-size:2.4rem;line-height:3rem}}.mdl-md002 .m-empty{width:100%;max-width:54.4rem;color:#515050b2;font-weight:400}\n"] }]
354
+ args: [{ selector: 'lis-c4-txt-des-cta', standalone: true, encapsulation: ViewEncapsulation.None, imports: [CommonModule, BabylonLinkTypeDirective, FormsModule], template: "@if (items?.length) {\n <section class=\"mdl-md002\">\n <div class=\"mdl-container\">\n <div class=\"m-content-top\">\n @if (texts?.title) {\n <h2 class=\"m-title\" [innerHTML]=\"texts?.title\"></h2>\n }\n <div class=\"m-selects\">\n @if (hasActiveFilters) {\n <button\n type=\"button\"\n class=\"m-clear\"\n (click)=\"clearFilters()\"\n >\n {{ texts?.cleanFilters ?? 'Limpiar filtros' }}\n </button>\n }\n <div class=\"m-select\">\n <select\n #BrandSel\n [attr.aria-label]=\"texts?.marca ?? 'marca'\"\n [(ngModel)]=\"selectedBrand\"\n (ngModelChange)=\"onBrandChange($event)\"\n >\n <option value=\"\">\n {{ texts?.marca ?? 'All' }}\n </option>\n @for (opt of brandOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n <div class=\"m-select\">\n <select\n #hotelTypeSel\n [attr.aria-label]=\"texts?.hotelType ?? 'hoteles'\"\n [(ngModel)]=\"selectedHotelType\"\n (ngModelChange)=\"onHotelTypeChange($event)\"\n >\n <option value=\"\">{{ texts?.hotelType }}</option>\n @for (opt of hotelTypeOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n\n <div class=\"m-select\">\n <select\n #Destination\n [attr.aria-label]=\"\n texts?.destinations ?? 'destinos'\n \"\n [(ngModel)]=\"selectedDestination\"\n (ngModelChange)=\"onDestinationChange($event)\"\n >\n <option value=\"\">{{ texts?.destinations }}</option>\n @for (opt of destinationOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"m-cards-container\">\n @if (filteredItems?.length) {\n @for (item of filteredItems; track $index) {\n <div\n class=\"m-card\"\n [ngClass]=\"{\n cardempty: !getFirstImageByTag(\n tagName,\n item?.images ?? []\n ),\n }\"\n >\n @if (\n getFirstImageByTag(tagName, item.images ?? [])\n ) {\n <div\n class=\"m-card-top\"\n [style.background-image]=\"\n 'url(' +\n getFirstImageByTag(\n tagName,\n item.images ?? []\n )?.img?.src +\n ')'\n \"\n >\n <div class=\"m-tag-left\">\n @if (item.hoteltype) {\n {{ item.hoteltype }}\n }\n <div class=\"m-keys\">\n @if (\n item?.hoteltype === 'Hotel' &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n >\n <g\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g>\n <g>\n <g\n transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n >\n <g>\n <path\n fill=\"#fff\"\n fill-opacity=\"1\"\n fill-rule=\"nonzero\"\n d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n transform=\"translate(104.000000, 0.000000)\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n }\n </div>\n }\n\n @if (\n item?.hoteltype ===\n 'Apartamento' &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n fill=\"#fff\"\n fill-opacity=\"1\"\n />\n </svg>\n }\n </div>\n }\n </div>\n </div>\n @if (item?.texts?.additional2) {\n <div\n class=\"m-tag-right\"\n [style.backgroundColor]=\"\n item?.styles?.primary ??\n '#ff4338'\n \"\n >\n {{ item?.texts?.additional2 }}\n </div>\n }\n </div>\n\n <div class=\"m-content\">\n @if (\n item.texts?.title || item.texts?.name\n ) {\n <div class=\"m-title\">\n {{\n item.texts?.title ??\n item.texts?.name\n }}\n </div>\n }\n\n <div class=\"m-subtitle\">\n @if (item.locality) {\n {{ item.locality }}\n }\n @if (item.locality && item.province) {\n -\n }\n @if (item.province) {\n {{ item.province }}\n }\n </div>\n\n @if (item.buttons?.length) {\n @for (\n btn of item.buttons;\n track $index\n ) {\n <a\n class=\"m-btn\"\n [ngClass]=\"{\n 'm-button-sm':\n $index % 2 === 0,\n 'm-but m-underline':\n $index % 2 !== 0,\n }\"\n [style.--btn-primary-dynamic]=\"\n item.styles?.primary\n \"\n [style.--btn-hover-dynamic]=\"\n item.styles?.primaryHover\n \"\n [href]=\"btn.url\"\n [attr.target]=\"\n btn.target || '_self'\n \"\n [linkType]=\"btn.linkType\"\n [attr.aria-label]=\"btn.label\"\n >\n <span>{{ btn.label }}</span>\n </a>\n }\n }\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"m-empty\">\n {{\n texts?.notFound ??\n 'No se encontraron resultados con esos filtros.'\n }}\n </div>\n }\n </div>\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.m-button-big{display:block;min-width:max-content;max-width:100%;width:33rem;text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease;height:4.8rem;cursor:pointer;position:relative;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-big{font-size:1.6rem}}.m-button-big.red{background-color:#ff4338}@media (hover: hover){.m-button-big.red:hover{background-color:#ed3b37}}.m-button-big.blue{background-color:#5b87da}@media (hover: hover){.m-button-big.blue:hover{background-color:#446ecd}}.m-button-big.green{background-color:#3fd5ae}@media (hover: hover){.m-button-big.green:hover{background-color:#2ec99b}}.m-button-big.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button-big.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}.m-button-big span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content}@media (hover: hover){.m-button-big:hover{background-color:#ed3b37}}.m-button-sm{display:block;min-width:max-content;width:100%;max-width:26rem;text-align:center;cursor:pointer;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;height:4.8rem;position:relative;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-sm{font-size:1.6rem}}.m-button-sm span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;color:var(--cl_btn-call-text-hover)}@media (hover: hover){.m-button-sm:hover{background-color:#ed3b37}.m-button-sm:hover span{color:var(--cl_btn-call-text-hover)}}.m-button-sm:focus{background-color:#ed3b37}.m-button-sm:focus span{color:var(--cl_btn-call-text-hover)}.m-underline{display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;color:#515050;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline{font-size:1.6rem}}@media (hover: hover){.m-underline:hover:after,.m-underline.active:after{opacity:1;width:100%}}.m-underline:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;z-index:1}.m-underline:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:0;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}.m-underline-red{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-red{font-size:1.6rem}}.m-underline-red:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-red:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-red:hover{color:#ed3b37}.m-underline-red:hover:after{width:100%}}.m-underline-blue{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-blue{font-size:1.6rem}}.m-underline-blue:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-blue:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#446ecd;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-blue:hover{color:#446ecd}.m-underline-blue:hover:after{width:100%}}.m-underline-green{color:#515050b2;display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-green{font-size:1.6rem}}.m-underline-green:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:#515050b2;z-index:1}.m-underline-green:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#2ec99b;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-green:hover{color:#2ec99b}.m-underline-green:hover:after{width:100%}}.m-swiper-button{width:4.8rem;height:4.8rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative}.m-swiper-button.swiper-button-disabled{opacity:.7}.m-swiper-button svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button.prev{border-top-left-radius:8rem;border-bottom-left-radius:8rem}.m-swiper-button.next{border-top-right-radius:8rem;border-bottom-right-radius:8rem}@media (hover: hover){.m-swiper-button:hover{background-color:#ed3b37}}@media (max-width: 768px){.m-swiper-button{width:3.8rem;height:3.8rem}}@media (max-width: 540px){.m-swiper-button{width:3.2rem;height:3.2rem}.m-swiper-button svg{width:.5rem}}.m-swiper-button-s{width:3rem;height:3rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative;border-radius:100%}.m-swiper-button-s svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button-s.prev svg{left:45%}.m-swiper-button-s.next svg{left:55%}@media (hover: hover){.m-swiper-button-s:hover{background-color:#ed3b37}}.m-button-close{background-color:#ff4338;width:4.4rem;height:4.4rem;border-radius:100%;transition:.3s ease;cursor:pointer;position:relative}.m-button-close svg{transition:transform .4s ease;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}@media (hover: hover){.m-button-close:hover{background-color:#ed3b37}.m-button-close:hover svg{transform:rotate(180deg)}}.m-button{display:block;width:max-content;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button{font-size:1.6rem}}.m-button{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease}@media (hover: hover){.m-button:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}.m-button2{display:block;width:max-content;font-family:jokker,sans-serif;font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button2{font-size:1.6rem}}.m-button2{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;background-color:transparent;border:.1rem solid white}.m-button2.red{background-color:#ff4338}@media (hover: hover){.m-button2.red:hover{background-color:#ed3b37}}.m-button2.blue{background-color:#5b87da}@media (hover: hover){.m-button2.blue:hover{background-color:#446ecd}}.m-button2.green{background-color:#3fd5ae}@media (hover: hover){.m-button2.green:hover{background-color:#2ec99b}}.m-button2.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button2.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}@media (hover: hover){.m-button2:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button2{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}input:not([type=radio]):not([type=checkbox]),textarea,select{background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::placeholder,textarea::placeholder,select::placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-moz-placeholder,textarea::-moz-placeholder,select::-moz-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-ms-input-placeholder,textarea::-ms-input-placeholder,select::-ms-input-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-webkit-input-placeholder,textarea::-webkit-input-placeholder,select::-webkit-input-placeholder{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px #f6f6f6 inset!important;-webkit-text-fill-color:white!important;transition:background-color 5000s ease-in-out 0s}select{position:relative;cursor:pointer}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}select option{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500;color:#000}.m-checkbox-group{display:flex;flex-direction:row;align-items:flex-start}.m-checkbox-group .m-checkbox,.m-checkbox-group input{border-radius:0!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.8rem;height:2.8rem;border:.1rem solid #d2d2d2;background-color:transparent;padding:0;margin-right:2rem;border-radius:0;cursor:pointer;position:relative}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-checkbox-group label{font-family:jokker,sans-serif;font-size:1.3rem;font-weight:600;max-width:\"calc(100% - 5rem)\"}.m-radio-group{display:flex;flex-direction:row;align-items:center}.m-radio-group .m-radio{-webkit-appearance:none;width:2.8rem;height:2.8rem;border:.2rem solid #d2d2d2;background-color:transparent;border-radius:50%;padding:0;margin-right:2rem;cursor:pointer;position:relative}.m-radio-group .m-radio:checked{background-color:#fff!important}.m-radio-group .m-radio:checked:after{content:\" \";position:absolute;top:50%;left:50%;width:1.6rem;height:1.6rem;border-radius:50%;background-color:#eec52b;transform:translate(-50%,-50%)}.m-radio-group label{font-family:jokker,sans-serif;font-size:1.4rem;font-weight:500;max-width:\"calc(100% - 5rem)\"}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}html{font-size:62.5%;overflow-x:hidden}html.overflow-hidden{overflow:hidden}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}html a{text-decoration:none}h1,h2,h3,h4,h5,h6{all:unset;display:revert}.fancybox__viewport{background-color:#fff}.fancybox__viewport.no-idiomas{background-color:red}section[class*=mdl]{padding-left:10rem;padding-right:10rem;box-sizing:border-box}@media (max-width: 1366px){section[class*=mdl]{padding-left:9rem;padding-right:9rem}}@media (max-width: 1280px){section[class*=mdl]{padding-left:8rem;padding-right:8rem}}@media (max-width: 1080px){section[class*=mdl]{padding-left:9.5rem;padding-right:9.5rem}}@media (max-width: 768px){section[class*=mdl]{padding-left:7.7rem;padding-right:7.7rem}}@media (max-width: 540px){section[class*=mdl]{padding-left:4.1rem;padding-right:4.1rem}}@media (max-width: 375px){section[class*=mdl]{padding-left:2.7rem;padding-right:2.7rem}}section .mdl-container{width:100%;max-width:160rem;margin:0 auto}.readmoreinit{overflow:hidden}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:jokker,sans-serif;font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}html{overflow-x:hidden}body{cursor:default;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__container{background-color:#fff}.fancybox__container .fancybox__slide{flex-direction:column-reverse}.fancybox__container .fancybox__backdrop,.fancybox__container .fancybox__counter{display:none}.fancybox__container .fancybox__caption{color:#515050b2;text-align:center;font-family:jokker,sans-serif;font-weight:400;font-size:1.8rem;line-height:3.9rem;padding:0rem 0 2rem}@media (max-width: 540px){.fancybox__container .fancybox__caption{font-size:1.5rem}}@media (max-width: 375px){.fancybox__container .fancybox__caption{font-size:1.3rem}}.fancybox__container .fancybox__thumbs{display:none}.fancybox__container .fancybox__nav .carousel__button{background-color:#ff4338;top:55%}.fancybox__container .fancybox__nav .carousel__button svg{stroke:#fff;stroke-width:.3rem}.fancybox__container .carousel__button.is-close svg{display:none}.fancybox__container .carousel__button.is-close{background:url(/assets/babylon/img/icons/closeRed.svg) no-repeat center;background-size:100%;width:4.2rem;height:4.2rem;top:-4.7rem;right:-5rem;transition:transform .3s ease;transform:rotate(0)}.fancybox__container .carousel__button.is-close:hover{transition:transform .3s ease;transform:rotate(180deg)}@media (max-width: 540px){.fancybox__container .carousel__button.is-close{width:3rem;height:3rem}}.fancybox__container .fancybox__toolbar{border-bottom:none;margin:0 0 0 auto;padding:1rem}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items button:not(.fancybox__button--close){display:none}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close{background-color:#ff4338}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg{width:40%}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg path{stroke:#fff;stroke-width:.3rem}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mdl-md002.p-top{margin-top:10rem}.mdl-md002 .mdl-container{display:flex;flex-direction:column;gap:4rem;align-items:center}.mdl-md002 .mdl-container .m-content-top{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end}.mdl-md002 .mdl-container .m-content-top .m-title{font-family:jokker,sans-serif;font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:2.4rem;line-height:3rem}}.mdl-md002 .mdl-container .m-content-top .m-title{width:100%;max-width:54.4rem;color:#515050b2;font-weight:400}.mdl-md002 .mdl-container .m-content-top .m-selects{display:inline-block;display:flex;gap:2.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:20rem;padding:.5rem 2rem .5rem 1rem;font-size:1rem;color:#515050b2;border:.1rem solid rgba(81,80,80,.6980392157);border-radius:.5rem;background-color:#fff;appearance:none;-webkit-appearance:none;-moz-appearance:none;font-family:jokker,sans-serif;font-weight:500;font-size:1.5rem;line-height:100%;cursor:pointer;min-height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select:after{content:\"\\276e\";position:absolute;right:2rem;top:1.5rem;transform:rotate(270deg);pointer-events:none;color:#515050b2;font-weight:700;font-size:1.3rem}.mdl-md002 .mdl-container .m-cards-container{display:flex;align-items:start;flex-direction:row;gap:0 3rem;max-width:100%;display:grid;grid-template-columns:repeat(4,1fr);width:100%}.mdl-md002 .mdl-container .m-cards-container .m-card{-webkit-tap-highlight-color:transparent;position:relative;display:flex;flex-direction:column;align-items:center;width:100%;cursor:pointer;aspect-ratio:378/486;max-width:38rem;padding-bottom:2rem;margin-inline:auto}@media (min-width: 1024px){.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top{background-blend-mode:multiply}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top:after{bottom:4rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content{transform:translateY(-20%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-logo{opacity:1;transform:translateY(-118%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-button-sm{opacity:1;transform:none;width:100%;max-width:26rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-but{opacity:1;transform:none}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top{position:relative;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:after{content:\"\";width:102%;transition:all .3s ease;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:before{content:\"\";width:100%;height:8rem;background-color:#fff;position:absolute;bottom:0;left:0}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;background-color:#ed3b37;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.6rem;left:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-left{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.5rem;left:1.5rem;white-space:nowrap;display:flex;gap:.8rem;align-items:center}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:3rem;right:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon{background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease;height:31vw;max-height:56rem;background-color:#fff9f9;position:relative}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon:after{content:\"\";width:102%;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:22.1rem;position:absolute;top:30%;left:50%;transform:translate(-50%,-30%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-family:jokker,sans-serif;font-weight:300;font-size:3.2rem;line-height:4.6rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 1080px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:3.2rem;line-height:4.6rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.2rem;line-height:3rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{padding:6rem 5rem;color:#515050b2}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content{display:flex;flex-direction:column;align-items:center;margin-top:-7rem;z-index:1;text-align:center;width:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-logo{position:absolute;justify-self:anchor-center;align-self:anchor-center;opacity:0;transition:all .3s ease;filter:invert(100%) sepia(6%) saturate(3350%) hue-rotate(358deg) brightness(108%) contrast(116%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm{margin-top:1.6rem;opacity:0;transform:translateY(-118%);transition:all .3s ease;width:100%;max-width:26rem;min-width:20rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{margin:2rem 0 4rem;opacity:0;transform:translateY(-118%);transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-family:jokker,sans-serif;font-weight:500;font-size:2.3rem;color:#515050}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-size:2rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{margin-bottom:1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-subtitle{font-family:jokker,sans-serif;font-weight:400;font-size:1.6rem;line-height:2.8rem;color:#515050b2}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(3,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-card-icon{height:34vw}.mdl-md002 .mdl-container .m-title{max-width:66rem}.mdl-md002 .mdl-container .m-content-top{display:flex;flex-direction:column;align-items:flex-start}.mdl-md002 .mdl-container .m-content-top .m-selects{margin:3rem auto 0;flex-wrap:wrap;justify-content:center}}@media (max-width: 1280px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:17.1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.4rem;line-height:3.5rem}}@media (max-width: 1080px){.mdl-md002{padding-top:7.5rem}.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(2,1fr)}.mdl-md002 .mdl-container .m-cards-container .cardempty{display:none}.mdl-md002 .mdl-container .m-cards-container .m-card{aspect-ratio:378/582}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-text{font-size:2.8rem;line-height:3.8rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{left:50%;transform:translate(-50%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm,.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{opacity:1;transform:none}}@media (max-width: 768px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(1,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-title{width:100%;max-width:none}.mdl-md002 .mdl-container .m-cards-container .m-cards-container .m-card .m-content .m-subtitle{font-size:2.8rem}.mdl-md002 .mdl-container .m-content-top .m-selects{flex-direction:column}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-selects{margin:0;flex-wrap:nowrap;flex-direction:column;width:100%;margin-top:2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select,.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:100%}}.mdl-md002 .m-btn{--btn-primary: var(--cl_btn-box);--btn-hover: var(--cl_btn-box-hover);background:var(--btn-primary);border:1px solid var(--btn-primary);color:var(--cl_btn-call-text);display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.mdl-md002 .m-btn:hover{background:var(--btn-hover);border-color:var(--btn-hover)}.mdl-md002 .m-button-sm{border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-button-sm:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline{background:transparent;border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-but.m-underline:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline span{text-decoration:underline;text-decoration-color:currentColor}.mdl-md002 .m-empty{font-family:jokker,sans-serif;font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .m-empty{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .m-empty{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .m-empty{font-size:2.4rem;line-height:3rem}}.mdl-md002 .m-empty{width:100%;max-width:54.4rem;color:#515050b2;font-weight:400}\n"] }]
198
355
  }], propDecorators: { texts: [{
199
356
  type: Input
200
357
  }], filters: [{
@@ -206,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
206
363
  }], additional1LikeMarca: [{
207
364
  type: Input
208
365
  }] } });
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzLWM0LXR4dC1kZXMtY3RhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9jb21wb25lbnRzL2V4dGVybmFsL2NvcmUvbGlzLWM0LXR4dC1kZXMtY3RhL2xpcy1jNC10eHQtZGVzLWN0YS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2xpcy1jNC10eHQtZGVzLWN0YS9saXMtYzQtdHh0LWRlcy1jdGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBS0wsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBT2hHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQVVqRixNQUFNLE9BQU8sdUJBQXVCO0lBUnBDO1FBYWEseUJBQW9CLEdBQWEsS0FBSyxDQUFDO1FBRWhELFlBQU8sR0FBVyxnQkFBZ0IsQ0FBQztRQUVuQyxzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFDL0Isd0JBQW1CLEdBQVcsRUFBRSxDQUFDO1FBQ2pDLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBRTNCLHFCQUFn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QkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy9saW5rLXR5cGUvbGluay10eXBlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIEJhYnlsb25CdXR0b25JLFxuICAgIEJhYnlsb25JbWFnZUksXG4gICAgQmFieWxvblRleHRJbmZvSSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWhvdGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGdldEZpcnN0SW1hZ2VCeVRhZ0Zyb21JbWFnZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9tdXRpbWVkaWEudXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpcy1jNC10eHQtZGVzLWN0YScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSwgRm9ybXNNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saXMtYzQtdHh0LWRlcy1jdGEuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9saXMtYzQtdHh0LWRlcy1jdGEuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBMaXNDNFR4dERlc0N0YUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHRleHRzPzogQmFieWxvblRleHRJbmZvSTtcbiAgICBASW5wdXQoKSBmaWx0ZXJzPzogYW55O1xuICAgIEBJbnB1dCgpIGl0ZW1zPzogQmFieWxvbkhvdGVsR2xvYmFsSXRlbVtdO1xuICAgIEBJbnB1dCgpIGxpbmtzPzogQmFieWxvbkJ1dHRvbklbXTtcbiAgICBASW5wdXQoKSBhZGRpdGlvbmFsMUxpa2VNYXJjYT86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHRhZ05hbWU6IHN0cmluZyA9ICdMaXNDNFR4dERlc0N0YSc7XG5cbiAgICBzZWxlY3RlZEhvdGVsVHlwZTogc3RyaW5nID0gJyc7XG4gICAgc2VsZWN0ZWREZXN0aW5hdGlvbjogc3RyaW5nID0gJyc7XG4gICAgc2VsZWN0ZWRCcmFuZDogc3RyaW5nID0gJyc7XG5cbiAgICBob3RlbFR5cGVPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGRlc3RpbmF0aW9uT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBicmFuZE9wdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHByaXZhdGUgcXBTdWI/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucXBTdWIgPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhvdGVsVHlwZVBhcmFtID1cbiAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0KCdob3RlbFR5cGUnKSA/P1xuICAgICAgICAgICAgICAgIHBhcmFtcy5nZXQoJ2hvdGVsdHlwZScpID8/XG4gICAgICAgICAgICAgICAgcGFyYW1zLmdldCgnZmlsdGVyJyk7XG4gICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvblBhcmFtID0gcGFyYW1zLmdldCgnZGVzdGluYXRpb24nKTtcbiAgICAgICAgICAgIGNvbnN0IGJyYW5kUGFyYW0gPSBwYXJhbXMuZ2V0KCdicmFuZCcpO1xuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID0gaG90ZWxUeXBlUGFyYW0gPz8gJyc7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPSBkZXN0aW5hdGlvblBhcmFtID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kID0gYnJhbmRQYXJhbSA/PyAnJztcblxuICAgICAgICAgICAgaWYgKHRoaXMuaG90ZWxUeXBlT3B0aW9ucy5sZW5ndGggJiYgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPSB0aGlzLm1hdGNoU2ltaWxhcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3RlbFR5cGVPcHRpb25zXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuYnJhbmRPcHRpb25zLmxlbmd0aCAmJiB0aGlzLnNlbGVjdGVkQnJhbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSB0aGlzLm1hdGNoU2ltaWxhcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyYW5kT3B0aW9uc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRlc3RpbmF0aW9uT3B0aW9ucy5sZW5ndGggJiYgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uID0gdGhpcy5tYXRjaFNpbWlsYXIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10pIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJPcHRpb25zKCk7XG5cbiAgICAgICAgICAgIC8vIFNpIGhheSB1biBob3RlbFR5cGUgc2VsZWNjaW9uYWRvIChwLmVqLiBkZXNkZSBxdWVyeSBwYXJhbSksXG4gICAgICAgICAgICAvLyBsbyBhZGFwdGFtb3MgYSBsYSBvcGNpw7NuIHJlYWwgZGlzcG9uaWJsZVxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID0gdGhpcy5tYXRjaFNpbWlsYXIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG90ZWxUeXBlT3B0aW9uc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYWNpw7NuIGRlc3Rpbm8gKHJvYnVzdGEpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuZGVzdGluYXRpb25PcHRpb25zLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgIChkKSA9PiB0aGlzLm5vcm0oZCkgPT09IHRoaXMubm9ybSh0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uID0gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQnJhbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSB0aGlzLm1hdGNoU2ltaWxhcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyYW5kT3B0aW9uc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5xcFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkRmlsdGVyT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zID8/IFtdO1xuXG4gICAgICAgIHRoaXMuaG90ZWxUeXBlT3B0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGkpID0+IChpIGFzIGFueSk/LmhvdGVsdHlwZSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgKVxuICAgICAgICApLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG5cbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IFNldChcbiAgICAgICAgICAgICAgICBpdGVtc1xuICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcCgoaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgoaSBhcyBhbnkpPy5kZXN0aW5hdGlvbnMgPz8gW10pLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDogYW55KSA9PiBkPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgKVxuICAgICAgICApLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG5cbiAgICAgICAgdGhpcy5icmFuZE9wdGlvbnMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IHRoaXMuZ2V0SXRlbUJyYW5kKGkpKS5maWx0ZXIoQm9vbGVhbikpXG4gICAgICAgICkuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEl0ZW1CcmFuZChpdDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbDFMaWtlTWFyY2EpXG4gICAgICAgICAgICByZXR1cm4gKGl0Py50ZXh0cz8uYWRkaXRpb25hbDEgPz8gJycpLnRyaW0oKTtcbiAgICAgICAgcmV0dXJuIChpdD8ubWFyY2EgPz8gaXQ/LmJyYW5kID8/IGl0Py5ncm91cCA/PyAnJykudHJpbSgpO1xuICAgIH1cblxuICAgIGdldCBmaWx0ZXJlZEl0ZW1zKCk6IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcyA/PyBbXTtcblxuICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaG90ZWxUeXBlT2sgPVxuICAgICAgICAgICAgICAgICF0aGlzLnNlbGVjdGVkSG90ZWxUeXBlIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5zaW5ndWxhcml6ZSgoaXQgYXMgYW55KT8uaG90ZWx0eXBlID8/ICcnKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaW5ndWxhcml6ZSh0aGlzLnNlbGVjdGVkSG90ZWxUeXBlKTtcblxuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb25PayA9XG4gICAgICAgICAgICAgICAgIXRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiB8fFxuICAgICAgICAgICAgICAgICgoKGl0IGFzIGFueSk/LmRlc3RpbmF0aW9ucyA/PyBbXSkgYXMgYW55W10pLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgIChkKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3JtKGQ/Lm5hbWUgPz8gJycpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3JtKHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbilcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtQnJhbmQgPSB0aGlzLmdldEl0ZW1CcmFuZChpdCk7XG4gICAgICAgICAgICBjb25zdCBicmFuZE9rID1cbiAgICAgICAgICAgICAgICAhdGhpcy5zZWxlY3RlZEJyYW5kIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5ub3JtKGl0ZW1CcmFuZCkgPT09IHRoaXMubm9ybSh0aGlzLnNlbGVjdGVkQnJhbmQpO1xuXG4gICAgICAgICAgICByZXR1cm4gaG90ZWxUeXBlT2sgJiYgZGVzdGluYXRpb25PayAmJiBicmFuZE9rO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgaGFzQWN0aXZlRmlsdGVycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSB8fFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uIHx8XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkhvdGVsVHlwZUNoYW5nZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPSB2YWx1ZSA/PyAnJztcbiAgICAgICAgdGhpcy5zeW5jUXVlcnlQYXJhbXMoKTtcbiAgICB9XG5cbiAgICBvbkRlc3RpbmF0aW9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uID0gdmFsdWUgPz8gJyc7XG4gICAgICAgIHRoaXMuc3luY1F1ZXJ5UGFyYW1zKCk7XG4gICAgfVxuXG4gICAgb25CcmFuZENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9IHZhbHVlID8/ICcnO1xuICAgICAgICB0aGlzLnN5bmNRdWVyeVBhcmFtcygpO1xuICAgIH1cblxuICAgIGNsZWFyRmlsdGVycygpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSA9ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPSAnJztcbiAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kID0gJyc7XG4gICAgICAgIHRoaXMuc3luY1F1ZXJ5UGFyYW1zKHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3luY1F1ZXJ5UGFyYW1zKGNsZWFyQWxsID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogY2xlYXJBbGxcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICBob3RlbFR5cGU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgYnJhbmQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIGhvdGVsVHlwZTogdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSB8fCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gfHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICBicmFuZDogdGhpcy5zZWxlY3RlZEJyYW5kIHx8IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICcnLFxuICAgICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldEtleXNBcnJheShjb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gY291bnQgPyBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9KSA6IFtdO1xuICAgIH1cblxuICAgIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGdldEZpcnN0SW1hZ2VCeVRhZyh0YWdOYW1lOiBzdHJpbmcsIGltYWdlbmVzOiBCYWJ5bG9uSW1hZ2VJW10pIHtcbiAgICAgICAgcmV0dXJuIGdldEZpcnN0SW1hZ2VCeVRhZ0Zyb21JbWFnZXMoaW1hZ2VuZXMsIHRhZ05hbWUpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyAgTWF0Y2hpbmcg4oCccG9yIHNpbWlsaXR1ZOKAnVxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIHByaXZhdGUgbm9ybShzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHMgPz8gJycpXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJykgLy8gcXVpdGEgYWNlbnRvc1xuICAgICAgICAgICAgLnRyaW0oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNpbmd1bGFyaXplKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIC8vIFNpbXBsZTogcXVpdGEgXCJzXCIgZmluYWwgKGhvdGVsL2hvdGVsZXMsIGFwYXJ0YW1lbnRvL2FwYXJ0YW1lbnRvcylcbiAgICAgICAgY29uc3QgbiA9IHRoaXMubm9ybShzKTtcbiAgICAgICAgcmV0dXJuIG4uZW5kc1dpdGgoJ3MnKSA/IG4uc2xpY2UoMCwgLTEpIDogbjtcbiAgICB9XG5cbiAgICAvKiogRGV2dWVsdmUgbGEgb3BjacOzbiBtw6FzIHBhcmVjaWRhIGRlbnRybyBkZSBvcHRpb25zLCBvICcnICovXG4gICAgcHJpdmF0ZSBtYXRjaFNpbWlsYXIodmFsdWU6IHN0cmluZywgb3B0aW9uczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5ub3JtKHZhbHVlKTtcbiAgICAgICAgY29uc3QgdnMgPSB0aGlzLnNpbmd1bGFyaXplKHZhbHVlKTtcblxuICAgICAgICAvLyAxKSBtYXRjaCBleGFjdG8gbm9ybWFsaXphZG9cbiAgICAgICAgbGV0IGZvdW5kID0gb3B0aW9ucy5maW5kKChvKSA9PiB0aGlzLm5vcm0obykgPT09IHYpO1xuICAgICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcblxuICAgICAgICAvLyAyKSBtYXRjaCBleGFjdG8gcG9yIHNpbmd1bGFyXG4gICAgICAgIGZvdW5kID0gb3B0aW9ucy5maW5kKChvKSA9PiB0aGlzLnNpbmd1bGFyaXplKG8pID09PSB2cyk7XG4gICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xuXG4gICAgICAgIC8vIDMpIGNvbnRpZW5lIChob3RlbGVzIC0+IGhvdGVsLCBhcGFydGFtZW50b3MgLT4gYXBhcnRhbWVudG8pXG4gICAgICAgIGZvdW5kID0gb3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKG8pID0+IHRoaXMubm9ybShvKS5pbmNsdWRlcyh2KSB8fCB2LmluY2x1ZGVzKHRoaXMubm9ybShvKSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG5cbiAgICAgICAgLy8gNCkgY29udGllbmUgcG9yIHNpbmd1bGFyXG4gICAgICAgIGZvdW5kID0gb3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKG8pID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zaW5ndWxhcml6ZShvKS5pbmNsdWRlcyh2cykgfHxcbiAgICAgICAgICAgICAgICB2cy5pbmNsdWRlcyh0aGlzLnNpbmd1bGFyaXplKG8pKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBmb3VuZCA/PyAnJztcbiAgICB9XG5cbiAgICBnZXROdW1iZXIodGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gVXRpbHMuZXh0cmFjdE51bWJlclJhbmdlKHRleHQpO1xuICAgIH1cbn1cbiIsIjwhLS0gQGlmIChpdGVtcz8ubGVuZ3RoKSB7IC0tPlxuPHNlY3Rpb24gY2xhc3M9XCJtZGwtbWQwMDJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWRsLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50LXRvcFwiPlxuICAgICAgICAgICAgQGlmICh0ZXh0cz8udGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJtLXRpdGxlXCIgW2lubmVySFRNTF09XCJ0ZXh0cz8udGl0bGVcIj48L2gyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tc2VsZWN0c1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoaGFzQWN0aXZlRmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1jbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0cz8uY2xlYW5GaWx0ZXJzID8/ICdMaW1waWFyIGZpbHRyb3MnIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgI0JyYW5kU2VsXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHRzPy5tYXJjYSA/PyAnbWFyY2EnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRCcmFuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQnJhbmRDaGFuZ2UoQnJhbmRTZWwudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRleHRzPy5tYXJjYSA/PyAnQWxsJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHQgb2YgYnJhbmRPcHRpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRcIj57eyBvcHQgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICNob3RlbFR5cGVTZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dHM/LmhvdGVsVHlwZSA/PyAnaG90ZWxlcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEhvdGVsVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSG90ZWxUeXBlQ2hhbmdlKGhvdGVsVHlwZVNlbC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3sgdGV4dHM/LmhvdGVsVHlwZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0IG9mIGhvdGVsVHlwZU9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdFwiPnt7IG9wdCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAjRGVzdGluYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dHM/LmRlc3RpbmF0aW9ucyA/PyAnZGVzdGlub3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREZXN0aW5hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRGVzdGluYXRpb25DaGFuZ2UoRGVzdGluYXRpb24udmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPnt7IHRleHRzPy5kZXN0aW5hdGlvbnMgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdCBvZiBkZXN0aW5hdGlvbk9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdFwiPnt7IG9wdCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1jYXJkcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBpZiAoZmlsdGVyZWRJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWNhcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRlbXB0eTogIWdldEZpcnN0SW1hZ2VCeVRhZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaW1hZ2VzID8/IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGdldEZpcnN0SW1hZ2VCeVRhZyh0YWdOYW1lLCBpdGVtLmltYWdlcyA/PyBbXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1jYXJkLXRvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCgnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpcnN0SW1hZ2VCeVRhZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaW1hZ2VzID8/IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5pbWc/LnNyYyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXRhZy1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaG90ZWx0eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5ob3RlbHR5cGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWtleXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbHR5cGUgPT09ICdIb3RlbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaG90ZWxjYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2YgZ2V0TnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbGNhdGVnb3J5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTE0MDQuMDAwMDAwLCAtNTkyMi4wMDAwMDApIHRyYW5zbGF0ZSgxOTEuMDAwMDAwLCA1ODY1LjAwMDAwMCkgdHJhbnNsYXRlKDExMDkuMDAwMDAwLCA1Ny4wMDAwMDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNmZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwibm9uemVyb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAgMGwyLjI5NCA3LjEwNGMuMDM0LjEwNi4xMzMuMTc4LjI0NS4xNzhMMjAgNy4yNjdsLTYuMDQ2IDQuMzc0di4wMDFjLS4wOS4wNjYtLjEyOC4xODItLjA5My4yODlsMi4zMjIgNy4wOTUtNi4wMzItNC40Yy0uMDktLjA2NS0uMjEzLS4wNjUtLjMwMyAwbC02LjAyOSA0LjQgMi4zMjItNy4wOTVINi4xNGMuMDM1LS4xMDctLjAwMy0uMjIzLS4wOTQtLjI4OUwwIDcuMjY4bDcuNDYxLjAxNS4wMDEtLjAwMWMuMTEyIDAgLjIxMS0uMDcyLjI0NS0uMTc4TDEwIDB6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEwNC4wMDAwMDAsIDAuMDAwMDAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbHR5cGUgPT09ICdBcGFydGFtZW50bycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaG90ZWxjYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2YgZ2V0TnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbGNhdGVnb3J5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTMgMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMC4xNDYyOTYgNC4yNjQ3OUwxLjE0MDE1IDIuMDE2OTJDMS4zMTI4OSAxLjYyNTU5IDEuNjI1NTkgMS4zMTI4OSAyLjAxNjkyIDEuMTQwMTVMNC4yNjQ3OSAwLjE0NjI5N0M0LjU4MTc0IDAuMDA2NDE4MjYgNC45MzM1NiAtMC4wMzQzOTQ0IDUuMjc0MTIgMC4wMjkyMTI3QzUuNjE0NjcgMC4wOTI4MTk4IDUuOTI4MDUgMC4yNTc4NzYgNi4xNzMxNCAwLjUwMjczTDcuOTQ3NSAyLjI3ODM5QzguMTYwNiAyLjQ5MTU1IDguMzEzODggMi43NTcwMSA4LjM5MTk3IDMuMDQ4MTNDOC40NzAwNiAzLjMzOTI1IDguNDcwMiAzLjY0NTc4IDguMzkyMzkgMy45MzY5OEw3LjkzNTc5IDUuNjQxMDlMMTIuODY2IDEwLjU3MTNDMTIuOTA4NSAxMC42MTM2IDEyLjk0MjIgMTAuNjYzOSAxMi45NjUyIDEwLjcxOTNDMTIuOTg4MiAxMC43NzQ2IDEzIDEwLjgzNCAxMyAxMC44OTM5VjEyLjU0NDdDMTIuOTk5MyAxMi42NjUyIDEyLjk1MTEgMTIuNzgwNyAxMi44NjU5IDEyLjg2NTlDMTIuNzgwNyAxMi45NTExIDEyLjY2NTIgMTIuOTk5MyAxMi41NDQ3IDEzSDEwLjg5MzlDMTAuNzkyNiAxMi45OTk4IDEwLjY5NDIgMTIuOTY1OSAxMC42MTQyIDEyLjkwMzhDMTAuNTM0MSAxMi44NDE2IDEwLjQ3NyAxMi43NTQ3IDEwLjQ1MTYgMTIuNjU2NkwxMC4yMDQ1IDExLjY3OTZMOS4zMzAzIDExLjUxMzFDOS4yNDMyMiAxMS40OTY4IDkuMTYyODIgMTEuNDU1MyA5LjA5OTAzIDExLjM5MzhDOS4wMzUyMyAxMS4zMzIzIDguOTkwODIgMTEuMjUzNSA4Ljk3MTI3IDExLjE2NzFMOC43MzMyMSAxMC4xMTczTDcuODkwMjYgMTAuMDM2N0M3Ljc4NDc5IDEwLjAyNzQgNy42ODYwOCA5Ljk4MDggNy42MTE4OCA5LjkwNTI4TDUuNjQxMDkgNy45MzU3OUwzLjkzNjk3IDguMzkyMzlDMy42NDU4IDguNDcwNDcgMy4zMzkxOSA4LjQ3MDQ2IDMuMDQ4MDIgOC4zOTIzNkMyLjc1Njg1IDguMzE0MjYgMi40OTE0IDguMTYwODIgMi4yNzgzOSA3Ljk0NzVMMC41MDI3MjkgNi4xNzMxNEMwLjI1Nzg3NSA1LjkyODA1IDAuMDkyODIwMiA1LjYxNDY3IDAuMDI5MjEzIDUuMjc0MTJDLTAuMDM0Mzk0MyA0LjkzMzU3IDAuMDA2NDE3MjcgNC41ODE3NCAwLjE0NjI5NiA0LjI2NDc5Wk0zLjY3MDMgNS4wODk1M0MzLjgxMDYxIDUuMjI5NjggMy45ODkzMiA1LjMyNTA4IDQuMTgzODUgNS4zNjM2OUM0LjM3ODM3IDUuNDAyMjkgNC41Nzk5NyA1LjM4MjM2IDQuNzYzMTcgNS4zMDY0MUM0Ljk0NjM2IDUuMjMwNDcgNS4xMDI5NCA1LjEwMTkxIDUuMjEzMDkgNC45MzdDNS4zMjMyNCA0Ljc3MjEgNS4zODIwMyA0LjU3ODIzIDUuMzgyMDMgNC4zNzk5MUM1LjM4MjAzIDQuMTgxNiA1LjMyMzI0IDMuOTg3NzMgNS4yMTMwOSAzLjgyMjgzQzUuMTAyOTQgMy42NTc5MiA0Ljk0NjM2IDMuNTI5MzYgNC43NjMxNyAzLjQ1MzQyQzQuNTc5OTcgMy4zNzc0NyA0LjM3ODM3IDMuMzU3NTQgNC4xODM4NSAzLjM5NjE0QzMuOTg5MzIgMy40MzQ3NSAzLjgxMDYxIDMuNTMwMTUgMy42NzAzIDMuNjcwM0MzLjU3Njg5IDMuNzYzMzYgMy41MDI3NyAzLjg3Mzk1IDMuNDUyMTkgMy45OTU3MkMzLjQwMTYyIDQuMTE3NSAzLjM3NTU4IDQuMjQ4MDYgMy4zNzU1OCA0LjM3OTkxQzMuMzc1NTggNC41MTE3NyAzLjQwMTYyIDQuNjQyMzMgMy40NTIxOSA0Ljc2NDExQzMuNTAyNzcgNC44ODU4OCAzLjU3Njg5IDQuOTk2NDcgMy42NzAzIDUuMDg5NTNaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXRhZy1yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uc3R5bGVzPy5wcmltYXJ5ID8/ICcjZmY0MzM4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0udGV4dHM/LnRpdGxlIHx8IGl0ZW0udGV4dHM/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50ZXh0cz8udGl0bGUgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGV4dHM/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmxvY2FsaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5sb2NhbGl0eSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmxvY2FsaXR5ICYmIGl0ZW0ucHJvdmluY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ucHJvdmluY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnByb3ZpbmNlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5idXR0b25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGJ0biBvZiBpdGVtLmJ1dHRvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1idG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbS1idXR0b24tc20nOiAkaW5kZXggJSAyID09PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ20tYnV0IG0tdW5kZXJsaW5lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5kZXggJSAyICE9PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tYnRuLXByaW1hcnktZHluYW1pY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3R5bGVzPy5wcmltYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWJ0bi1ob3Zlci1keW5hbWljXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdHlsZXM/LnByaW1hcnlIb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidG4udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuLnRhcmdldCB8fCAnX3NlbGYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJidG4ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidG4ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWVtcHR5XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0cz8ubm90Rm91bmQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvcyBjb24gZXNvcyBmaWx0cm9zLidcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG48IS0tIH0gLS0+XG4iXX0=
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzLWM0LXR4dC1kZXMtY3RhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9jb21wb25lbnRzL2V4dGVybmFsL2NvcmUvbGlzLWM0LXR4dC1kZXMtY3RhL2xpcy1jNC10eHQtZGVzLWN0YS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2xpcy1jNC10eHQtZGVzLWN0YS9saXMtYzQtdHh0LWRlcy1jdGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlERztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUtMLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQU9oRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUFVakYsTUFBTSxPQUFPLHVCQUF1QjtJQVJwQztRQWFhLHlCQUFvQixHQUFhLEtBQUssQ0FBQztRQUVoRCxZQUFPLEdBQVcsZ0JBQWdCLENBQUM7UUFFbkMsNkRBQTZEO1FBQzdELDJCQUEyQjtRQUMzQixzQkFBaUIsR0FBVyxFQUFFLENBQUMsQ0FBQyx5QkFBeUI7UUFDekQsd0JBQW1CLEdBQVcsRUFBRSxDQUFDLENBQUMsOEJBQThCO1FBQ2hFLGtCQUFhLEdBQVcsRUFBRSxDQUFDLENBQUMsd0JBQXdCO1FBRXBELHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUNoQyx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDbEMsaUJBQVksR0FBYSxFQUFFLENBQUM7UUFFcEIsc0JBQWlCLEdBQWtCLElBQUksQ0FBQztRQUN4QywyQkFBc0IsR0FBa0IsSUFBSSxDQUFDO1FBQzdDLHFCQUFnQixHQUFrQixJQUFJLENBQUM7UUFFL0MsNkNBQTZDO1FBQ3JDLHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQzlDLDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQ25ELHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBRXJELG9DQUFvQztRQUM1QixzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUM5QywyQkFBc0IsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUNuRCxxQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUVwQyxVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXpDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztLQWdWcEM7SUE5VUcsUUFBUTtRQUNKLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUU3QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUU1QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUU5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUU5QixnRkFBZ0Y7WUFDaEYsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksVUFBVTtnQkFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztZQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLGVBQWU7Z0JBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxlQUFlLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUztnQkFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7WUFFbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFMUIsdURBQXVEO1lBQ3ZELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUM3QyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUV4QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBRTdCLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxtQkFBbUI7Z0JBQ3BCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFaEUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQzlCLElBQUksR0FBRyxDQUNILEtBQUs7YUFDQSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQVMsRUFBRSxTQUFTLENBQUM7YUFDakMsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUNmLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQ3BDLENBQ0osQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQ2hDLElBQUksR0FBRyxDQUNILEtBQUs7YUFDQSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNYLENBQUUsQ0FBUyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQ2hDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUN0QixDQUNKO2FBQ0EsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUNmLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQ3BDLENBQ0osQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUMxQixJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ2xFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJDLGFBQWE7UUFDYixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUU5QixrQ0FBa0M7UUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFFcEMscUVBQXFFO1FBQ3JFLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDM0M7UUFFRCxlQUFlO1FBQ2YsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDekMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLENBQUM7WUFDbEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDaEQ7UUFFRCxTQUFTO1FBQ1QsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDO1lBQzVDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBQyxFQUFPO1FBQ3hCLElBQUksSUFBSSxDQUFDLG9CQUFvQjtZQUN6QixPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakQsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFRCx5QkFBeUI7SUFDekIsV0FBVztJQUNYLHlCQUF5QjtJQUV6QixJQUFJLGFBQWE7UUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUUvQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN2QixNQUFNLGFBQWEsR0FBSSxFQUFVLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztZQUNuRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXhDLE1BQU0sV0FBVyxHQUNiLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7b0JBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFFbkQsTUFBTSxhQUFhLEdBQ2YsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO2dCQUN4QixDQUFFLEVBQVUsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFXLENBQUMsSUFBSSxDQUM3QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0YsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDM0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FDN0MsQ0FBQztZQUVOLE1BQU0sT0FBTyxHQUNULENBQUMsSUFBSSxDQUFDLGFBQWE7Z0JBQ25CLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFakUsT0FBTyxXQUFXLElBQUksYUFBYSxJQUFJLE9BQU8sQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLENBQUMsQ0FBQyxDQUNMLElBQUksQ0FBQyxpQkFBaUI7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMsYUFBYSxDQUNyQixDQUFDO0lBQ04sQ0FBQztJQUVELHlCQUF5QjtJQUN6QixjQUFjO0lBQ2QseUJBQXlCO0lBRXpCLGlCQUFpQixDQUFDLEtBQXlCO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU87UUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU87UUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTztRQUNsQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUMxQix5QkFBeUI7SUFFakIsZUFBZSxDQUFDLFFBQVEsR0FBRyxLQUFLO1FBQ3BDLE1BQU0sRUFBRSxHQUFHLFFBQVE7WUFDZixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUNsRCxDQUFDLENBQUM7Z0JBQ0ksTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7b0JBQzFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO3dCQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUM3QyxDQUFDLENBQUMsSUFBSTtnQkFFVixXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtvQkFDakMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUMzQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7b0JBQzlDLENBQUMsQ0FBQyxJQUFJO2dCQUVWLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYTtvQkFDckIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO3dCQUM5QyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDbkMsQ0FBQyxDQUFDLElBQUk7YUFDYixDQUFDO1FBRVIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSztZQUN0QixXQUFXLEVBQUUsRUFBRTtZQUNmLFVBQVUsRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixpQ0FBaUM7SUFDakMsdUNBQXVDO0lBQ3ZDLHlCQUF5QjtJQUVqQixhQUFhLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFbEIsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUN2RCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLFdBQVc7SUFDWCx5QkFBeUI7SUFFekIsWUFBWSxDQUFDLEtBQXlCO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQWUsRUFBRSxRQUF5QjtRQUN6RCxPQUFPLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDbEIsT0FBTyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVPLHNCQUFzQjtRQUMxQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUV4RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLElBQUksS0FBSyxFQUFFO2dCQUNQLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7YUFDakM7U0FDSjtRQUVELGNBQWM7UUFDZCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLEVBQUU7WUFDckMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUN2RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksS0FBSyxFQUFFO2dCQUNQLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7YUFDdEM7U0FDSjtRQUVELFFBQVE7UUFDUixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksS0FBSyxFQUFFO2dCQUNQLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2FBQ2hDO1NBQ0o7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDcEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUMxQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7U0FDeEM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ2hDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FDcEMsQ0FBQztZQUNGLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztTQUNwQztRQUVELElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDdEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDdEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUNwQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7U0FDMUM7SUFDTCxDQUFDOytHQXJYUSx1QkFBdUI7bUdBQXZCLHVCQUF1QixpT0M1RnBDLG8yZkE4UEEsNmszQkR0S2MsWUFBWSw2SEFBRSx3QkFBd0IsNElBQUUsV0FBVzs7NEZBSXBELHVCQUF1QjtrQkFSbkMsU0FBUzsrQkFDSSxvQkFBb0IsY0FDbEIsSUFBSSxpQkFDRCxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLFdBQVcsQ0FBQzs4QkFLckQsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGlzQzRUeHREZXNDdGFDb21wb25lbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqXG4gKiBDb21wb25lbnRlIGRlIGxpc3RhZG8gY29uIHNpc3RlbWEgZGUgZmlsdHJvcyBzaW5jcm9uaXphZG8gY29uIGxhIFVSTC5cbiAqXG4gKiBGSUxPU09Gw41BXG4gKiAtLS0tLS0tLS0tXG4gKiAtIEVsIGNvbXBvbmVudGUgZXMgQUdOw5NTVElDTyBhbCBkb21pbmlvIChubyBoYXJkY29kZWEgXCJob3RlbFwiLCBcImFwYXJ0YW1lbnRvXCIsIG1hcmNhcywgZXRjLikuXG4gKiAtIFRvZG8gbG8gcXVlIHNlIGZpbHRyYSBwcm92aWVuZSBkZSBTVFJJTkdTIGVudmlhZG9zIHBvciBiYWNrZW5kICh5YSB0cmFkdWNpZG9zKS5cbiAqIC0gTGEgVVJMIHNpZW1wcmUgdHJhYmFqYSBjb24gU0xVR1Mgbm9ybWFsaXphZG9zIChzaW4gdGlsZGVzLCBlc3BhY2lvcyBuaSBjYXJhY3RlcmVzIHJhcm9zKS5cbiAqXG4gKiBGSUxUUk9TIFNPUE9SVEFET1MgKGFjdHVhbGVzKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIC0gZmlsdGVyICAgICAgIC0+IHRpcG8gcHJpbmNpcGFsIChlajogaG90ZWxlcywgYXBhcnRhbWVudG9zLCB2aWxsYXMsIGV0Yy4pXG4gKiAtIGRlc3RpbmF0aW9uICAtPiBkZXN0aW5vIChwb3Igbm9tYnJlKVxuICogLSBicmFuZCAgICAgICAgLT4gbWFyY2EgLyBncnVwb1xuICpcbiAqIEPDk01PIEZVTkNJT05BXG4gKiAtLS0tLS0tLS0tLS0tXG4gKiAxLiBMYXMgb3BjaW9uZXMgZGUgZmlsdHJvcyBzZSBjb25zdHJ1eWVuIGRpbsOhbWljYW1lbnRlIGEgcGFydGlyIGRlIGBpdGVtc2AuXG4gKiAyLiBDYWRhIG9wY2nDs24gdGllbmU6XG4gKiAgICAtIGxhYmVsOiB0ZXh0byByZWFsIG1vc3RyYWRvIGFsIHVzdWFyaW9cbiAqICAgIC0gc2x1ZyA6IHZlcnNpw7NuIG5vcm1hbGl6YWRhIHVzYWRhIGVuIGxhIFVSTFxuICogMy4gQWwgbmF2ZWdhciBjb24gcXVlcnkgcGFyYW1zOlxuICogICAgLSBTZSBsZWVuIGxvcyBzbHVncyBkZSBsYSBVUkxcbiAqICAgIC0gU2UgcmVzdWVsdmVuIGEgbGFiZWxzIHJlYWxlcyBjdWFuZG8gbG9zIGl0ZW1zIGVzdMOhbiBkaXNwb25pYmxlc1xuICogNC4gRWwgZmlsdHJhZG8gaW50ZXJubyBTSUVNUFJFIGNvbXBhcmEgcG9yIHNsdWcgKG5vIHBvciB0ZXh0byBjcnVkbykuXG4gKlxuICogTk9STUFMSVpBQ0nDk05cbiAqIC0tLS0tLS0tLS0tLS1cbiAqIC0gU2UgdXNhIGBVdGlscy50b1NsdWcoKWAgcGFyYSBub3JtYWxpemFyIHRleHRvcyAodGlsZGVzLCBlc3BhY2lvcywgc8OtbWJvbG9zKS5cbiAqIC0gUGFyYSBlbCBmaWx0cm8gcHJpbmNpcGFsIChgZmlsdGVyYCkgc2UgYXBsaWNhIGFkZW3DoXMgdW5hIHNpbmd1bGFyaXphY2nDs24gZ2Vuw6lyaWNhXG4gKiAgIChob3RlbGVzIC0+IGhvdGVsLCBhcGFydGFtZW50b3MgLT4gYXBhcnRhbWVudG8pLCBTSU4gdHJhZHVjY2lvbmVzIG5pIGRpY2Npb25hcmlvcy5cbiAqXG4gKiBFWFRFTkRFUiBDT04gTlVFVk9TIEZJTFRST1NcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQYXJhIGHDsWFkaXIgdW4gbnVldm8gZmlsdHJvIChlajogY2F0ZWdvcnksIGV4cGVyaWVuY2UsIHJhdGluZyk6XG4gKlxuICogMS4gQcOxYWRpciB1biBudWV2byBxdWVyeVBhcmFtIChlajogYGNhdGVnb3J5YClcbiAqIDIuIENyZWFyOlxuICogICAgLSBzZWxlY3RlZENhdGVnb3J5XG4gKiAgICAtIGNhdGVnb3J5T3B0aW9uc1xuICogICAgLSBjYXRlZ29yeVNsdWdUb0xhYmVsIC8gY2F0ZWdvcnlMYWJlbFRvU2x1Z1xuICogMy4gQ29uc3RydWlyIG9wY2lvbmVzIGVuIGBidWlsZEZpbHRlck9wdGlvbnMoKWBcbiAqIDQuIFJlc29sdmVyIGRlc2RlIFVSTCBlbiBgcmVzb2x2ZVBlbmRpbmdGcm9tTWFwcygpYFxuICogNS4gQXBsaWNhciBjb25kaWNpw7NuIGVuIGBmaWx0ZXJlZEl0ZW1zYFxuICogNi4gU2luY3Jvbml6YXIgZW4gYHN5bmNRdWVyeVBhcmFtcygpYFxuICpcbiAqIElNUE9SVEFOVEVcbiAqIC0tLS0tLS0tLS1cbiAqIC0gTlVOQ0EgY29tcGFyYXIgcG9yIHRleHRvIGRpcmVjdG8uXG4gKiAtIE5VTkNBIG1ldGVyIHZhbG9yZXMgY3J1ZG9zIGVuIGxhIFVSTC5cbiAqIC0gVG9kbyBmaWx0cm8gbnVldm8gZGViZSBwYXNhciBwb3Igc2x1Zy5cbiAqXG4gKiBDb24gZXN0byBlbCBjb21wb25lbnRlIGVzIHJldXRpbGl6YWJsZSBlbnRyZSBwcm95ZWN0b3MsXG4gKiBpZGlvbWFzIHkgY29uZmlndXJhY2lvbmVzIGRpc3RpbnRhcyBzaW4gY2FtYmlvcyBlc3RydWN0dXJhbGVzLlxuICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2xpbmstdHlwZS9saW5rLXR5cGUuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgQmFieWxvbkJ1dHRvbkksXG4gICAgQmFieWxvbkltYWdlSSxcbiAgICBCYWJ5bG9uVGV4dEluZm9JLFxufSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW0gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24taG90ZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Rmlyc3RJbWFnZUJ5VGFnRnJvbUltYWdlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL211dGltZWRpYS51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGlzLWM0LXR4dC1kZXMtY3RhJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlLCBGb3Jtc01vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpcy1jNC10eHQtZGVzLWN0YS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2xpcy1jNC10eHQtZGVzLWN0YS5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIExpc0M0VHh0RGVzQ3RhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdGV4dHM/OiBCYWJ5bG9uVGV4dEluZm9JO1xuICAgIEBJbnB1dCgpIGZpbHRlcnM/OiBhbnk7XG4gICAgQElucHV0KCkgaXRlbXM/OiBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtW107XG4gICAgQElucHV0KCkgbGlua3M/OiBCYWJ5bG9uQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGFkZGl0aW9uYWwxTGlrZU1hcmNhPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgdGFnTmFtZTogc3RyaW5nID0gJ0xpc0M0VHh0RGVzQ3RhJztcblxuICAgIC8vIFVJIGxhYmVscyBzZWxlY2Npb25hZG9zIChsbyBxdWUgc2UgbXVlc3RyYSBlbiBsb3Mgc2VsZWN0cylcbiAgICAvLyBFbiBVUkwgc2UgZ3VhcmRhbiBzbHVncy5cbiAgICBzZWxlY3RlZEhvdGVsVHlwZTogc3RyaW5nID0gJyc7IC8vID0+IHF1ZXJ5UGFyYW0gXCJmaWx0ZXJcIlxuICAgIHNlbGVjdGVkRGVzdGluYXRpb246IHN0cmluZyA9ICcnOyAvLyA9PiBxdWVyeVBhcmFtIFwiZGVzdGluYXRpb25cIlxuICAgIHNlbGVjdGVkQnJhbmQ6IHN0cmluZyA9ICcnOyAvLyA9PiBxdWVyeVBhcmFtIFwiYnJhbmRcIlxuXG4gICAgaG90ZWxUeXBlT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBkZXN0aW5hdGlvbk9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgYnJhbmRPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBwZW5kaW5nRmlsdGVyU2x1Zzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBwZW5kaW5nRGVzdGluYXRpb25TbHVnOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHBlbmRpbmdCcmFuZFNsdWc6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gc2x1ZyAtPiBsYWJlbCAoaGlkcmF0YXIgc2VsZWN0cyBkZXNkZSBVUkwpXG4gICAgcHJpdmF0ZSBmaWx0ZXJTbHVnVG9MYWJlbCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBkZXN0aW5hdGlvblNsdWdUb0xhYmVsID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBwcml2YXRlIGJyYW5kU2x1Z1RvTGFiZWwgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgLy8gbGFiZWwgLT4gc2x1ZyAoZXNjcml0dXJhIGVzdGFibGUpXG4gICAgcHJpdmF0ZSBmaWx0ZXJMYWJlbFRvU2x1ZyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBkZXN0aW5hdGlvbkxhYmVsVG9TbHVnID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBwcml2YXRlIGJyYW5kTGFiZWxUb1NsdWcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBwcml2YXRlIHFwU3ViPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHByaXZhdGUgaXNTeW5jaW5nRnJvbVVybCA9IGZhbHNlO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucXBTdWIgPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNTeW5jaW5nRnJvbVVybCA9IHRydWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclNsdWcgPSBwYXJhbXMuZ2V0KCdmaWx0ZXInKSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uU2x1ZyA9IHBhcmFtcy5nZXQoJ2Rlc3RpbmF0aW9uJykgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBicmFuZFNsdWcgPSBwYXJhbXMuZ2V0KCdicmFuZCcpID8/ICcnO1xuXG4gICAgICAgICAgICB0aGlzLnJlc29sdmVQZW5kaW5nRnJvbU1hcHMoKTtcblxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRmlsdGVyU2x1ZyA9IHBhcmFtcy5nZXQoJ2ZpbHRlcicpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRGVzdGluYXRpb25TbHVnID0gcGFyYW1zLmdldCgnZGVzdGluYXRpb24nKTtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0JyYW5kU2x1ZyA9IHBhcmFtcy5nZXQoJ2JyYW5kJyk7XG5cbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZVBlbmRpbmdGcm9tTWFwcygpO1xuXG4gICAgICAgICAgICAvLyBTaSBhw7puIG5vIGhheSBtYXBzIChpdGVtcyBubyBsbGVnw7MpLCBpbnRlbnRhIGZhbGxiYWNrIChtYW50ZW5lciBhbGdvIGRlY2VudGUpXG4gICAgICAgICAgICAvLyBOb3RhOiBubyBuYXZlZ2Ftb3MgYXF1w60uXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgJiYgZmlsdGVyU2x1ZylcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID0gZmlsdGVyU2x1ZztcbiAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uICYmIGRlc3RpbmF0aW9uU2x1ZylcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPSBkZXN0aW5hdGlvblNsdWc7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRCcmFuZCAmJiBicmFuZFNsdWcpXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kID0gYnJhbmRTbHVnO1xuXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+ICh0aGlzLmlzU3luY2luZ0Zyb21VcmwgPSBmYWxzZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydpdGVtcyddKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmlsdGVyT3B0aW9ucygpO1xuXG4gICAgICAgICAgICAvLyByZWhpZHJhdGEgZGVzZGUgVVJMIHlhIGNvbiBtYXBzIGxpc3RvcyAoc2luIG5hdmVnYXIpXG4gICAgICAgICAgICBjb25zdCBxcCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcDtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclNsdWcgPSBxcC5nZXQoJ2ZpbHRlcicpID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb25TbHVnID0gcXAuZ2V0KCdkZXN0aW5hdGlvbicpID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgYnJhbmRTbHVnID0gcXAuZ2V0KCdicmFuZCcpID8/ICcnO1xuXG4gICAgICAgICAgICB0aGlzLmlzU3luY2luZ0Zyb21VcmwgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID1cbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNsdWdUb0xhYmVsLmdldChmaWx0ZXJTbHVnKSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvblNsdWdUb0xhYmVsLmdldChkZXN0aW5hdGlvblNsdWcpID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kID0gdGhpcy5icmFuZFNsdWdUb0xhYmVsLmdldChicmFuZFNsdWcpID8/ICcnO1xuXG4gICAgICAgICAgICB0aGlzLmZvcmNlT3B0aW9uTWF0Y2goKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gKHRoaXMuaXNTeW5jaW5nRnJvbVVybCA9IGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5xcFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkRmlsdGVyT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zID8/IFtdO1xuXG4gICAgICAgIHRoaXMuaG90ZWxUeXBlT3B0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGkpID0+IChpIGFzIGFueSk/LmhvdGVsdHlwZSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgKVxuICAgICAgICApLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG5cbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IFNldChcbiAgICAgICAgICAgICAgICBpdGVtc1xuICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcCgoaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgoaSBhcyBhbnkpPy5kZXN0aW5hdGlvbnMgPz8gW10pLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDogYW55KSA9PiBkPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgKVxuICAgICAgICApLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG5cbiAgICAgICAgdGhpcy5icmFuZE9wdGlvbnMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IHRoaXMuZ2V0SXRlbUJyYW5kKGkpKS5maWx0ZXIoQm9vbGVhbikpXG4gICAgICAgICkuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcblxuICAgICAgICAvLyBSZXNldCBtYXBzXG4gICAgICAgIHRoaXMuZmlsdGVyU2x1Z1RvTGFiZWwuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvblNsdWdUb0xhYmVsLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuYnJhbmRTbHVnVG9MYWJlbC5jbGVhcigpO1xuICAgICAgICB0aGlzLmZpbHRlckxhYmVsVG9TbHVnLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb25MYWJlbFRvU2x1Zy5jbGVhcigpO1xuICAgICAgICB0aGlzLmJyYW5kTGFiZWxUb1NsdWcuY2xlYXIoKTtcblxuICAgICAgICAvLyB1c2VkIHNldHMgcGFyYSBzdWZpam9zIC0yIC0zLi4uXG4gICAgICAgIGNvbnN0IHVzZWRGaWx0ZXIgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgY29uc3QgdXNlZERlc3QgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgY29uc3QgdXNlZEJyYW5kID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgICAgLy8gRklMVEVSIChxdWVyeSBwYXJhbSBcImZpbHRlclwiKSA9PiBzbHVnIENBTsOTTklDTyAoc2luZ3VsYXIgZ2Vuw6lyaWNvKVxuICAgICAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIHRoaXMuaG90ZWxUeXBlT3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuY2Fub25pY2FsU2x1ZyhsYWJlbCk7XG4gICAgICAgICAgICBjb25zdCBzbHVnID0gVXRpbHMudW5pcXVlU2x1ZyhiYXNlLCB1c2VkRmlsdGVyKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyU2x1Z1RvTGFiZWwuc2V0KHNsdWcsIGxhYmVsKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyTGFiZWxUb1NsdWcuc2V0KGxhYmVsLCBzbHVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERFU1RJTkFUSU9OU1xuICAgICAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIHRoaXMuZGVzdGluYXRpb25PcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gVXRpbHMudG9TbHVnKGxhYmVsKSB8fCAnZGVzdGluYXRpb24nO1xuICAgICAgICAgICAgY29uc3Qgc2x1ZyA9IFV0aWxzLnVuaXF1ZVNsdWcoYmFzZSwgdXNlZERlc3QpO1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvblNsdWdUb0xhYmVsLnNldChzbHVnLCBsYWJlbCk7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uTGFiZWxUb1NsdWcuc2V0KGxhYmVsLCBzbHVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJSQU5EU1xuICAgICAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIHRoaXMuYnJhbmRPcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gVXRpbHMudG9TbHVnKGxhYmVsKSB8fCAnYnJhbmQnO1xuICAgICAgICAgICAgY29uc3Qgc2x1ZyA9IFV0aWxzLnVuaXF1ZVNsdWcoYmFzZSwgdXNlZEJyYW5kKTtcbiAgICAgICAgICAgIHRoaXMuYnJhbmRTbHVnVG9MYWJlbC5zZXQoc2x1ZywgbGFiZWwpO1xuICAgICAgICAgICAgdGhpcy5icmFuZExhYmVsVG9TbHVnLnNldChsYWJlbCwgc2x1Zyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEl0ZW1CcmFuZChpdDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbDFMaWtlTWFyY2EpXG4gICAgICAgICAgICByZXR1cm4gKGl0Py50ZXh0cz8uYWRkaXRpb25hbDEgPz8gJycpLnRyaW0oKTtcbiAgICAgICAgcmV0dXJuIChpdD8ubWFyY2EgPz8gaXQ/LmJyYW5kID8/IGl0Py5ncm91cCA/PyAnJykudHJpbSgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBGSUxUUkFET1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGdldCBmaWx0ZXJlZEl0ZW1zKCk6IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcyA/PyBbXTtcblxuICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbUhvdGVsVHlwZSA9IChpdCBhcyBhbnkpPy5ob3RlbHR5cGUgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBpdGVtQnJhbmQgPSB0aGlzLmdldEl0ZW1CcmFuZChpdCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGhvdGVsVHlwZU9rID1cbiAgICAgICAgICAgICAgICAhdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuY2Fub25pY2FsU2x1ZyhpdGVtSG90ZWxUeXBlKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5vbmljYWxTbHVnKHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUpO1xuXG4gICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvbk9rID1cbiAgICAgICAgICAgICAgICAhdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uIHx8XG4gICAgICAgICAgICAgICAgKCgoaXQgYXMgYW55KT8uZGVzdGluYXRpb25zID8/IFtdKSBhcyBhbnlbXSkuc29tZShcbiAgICAgICAgICAgICAgICAgICAgKGQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBVdGlscy50b1NsdWcoZD8ubmFtZSA/PyAnJykgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICBVdGlscy50b1NsdWcodGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJyYW5kT2sgPVxuICAgICAgICAgICAgICAgICF0aGlzLnNlbGVjdGVkQnJhbmQgfHxcbiAgICAgICAgICAgICAgICBVdGlscy50b1NsdWcoaXRlbUJyYW5kKSA9PT0gVXRpbHMudG9TbHVnKHRoaXMuc2VsZWN0ZWRCcmFuZCk7XG5cbiAgICAgICAgICAgIHJldHVybiBob3RlbFR5cGVPayAmJiBkZXN0aW5hdGlvbk9rICYmIGJyYW5kT2s7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBoYXNBY3RpdmVGaWx0ZXJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlIHx8XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gfHxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBIQU5ETEVSUyBVSVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIG9uSG90ZWxUeXBlQ2hhbmdlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSA9IHZhbHVlID8/ICcnO1xuICAgICAgICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tVXJsKSByZXR1cm47XG4gICAgICAgIHRoaXMuc3luY1F1ZXJ5UGFyYW1zKCk7XG4gICAgfVxuXG4gICAgb25EZXN0aW5hdGlvbkNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9IHZhbHVlID8/ICcnO1xuICAgICAgICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tVXJsKSByZXR1cm47XG4gICAgICAgIHRoaXMuc3luY1F1ZXJ5UGFyYW1zKCk7XG4gICAgfVxuXG4gICAgb25CcmFuZENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9IHZhbHVlID8/ICcnO1xuICAgICAgICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tVXJsKSByZXR1cm47XG4gICAgICAgIHRoaXMuc3luY1F1ZXJ5UGFyYW1zKCk7XG4gICAgfVxuXG4gICAgY2xlYXJGaWx0ZXJzKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID0gJyc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSAnJztcbiAgICAgICAgdGhpcy5zeW5jUXVlcnlQYXJhbXModHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFVSTCBTWU5DIChTSUVNUFJFIFNMVUcpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJpdmF0ZSBzeW5jUXVlcnlQYXJhbXMoY2xlYXJBbGwgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBxcCA9IGNsZWFyQWxsXG4gICAgICAgICAgICA/IHsgZmlsdGVyOiBudWxsLCBkZXN0aW5hdGlvbjogbnVsbCwgYnJhbmQ6IG51bGwgfVxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXI6IHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICA/ICh0aGlzLmZpbHRlckxhYmVsVG9TbHVnLmdldCh0aGlzLnNlbGVjdGVkSG90ZWxUeXBlKSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5vbmljYWxTbHVnKHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUpKVxuICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcblxuICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb246IHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gKHRoaXMuZGVzdGluYXRpb25MYWJlbFRvU2x1Zy5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICApID8/IFV0aWxzLnRvU2x1Zyh0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24pKVxuICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcblxuICAgICAgICAgICAgICAgICAgYnJhbmQ6IHRoaXMuc2VsZWN0ZWRCcmFuZFxuICAgICAgICAgICAgICAgICAgICAgID8gKHRoaXMuYnJhbmRMYWJlbFRvU2x1Zy5nZXQodGhpcy5zZWxlY3RlZEJyYW5kKSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMudG9TbHVnKHRoaXMuc2VsZWN0ZWRCcmFuZCkpXG4gICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHFwLFxuICAgICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIENBTk9OSUNBTCBTTFVHIChzaW4gdHJhZHVjdG9yKVxuICAgIC8vIC0gR2FyYW50aXphIHNpbmd1bGFyL3BsdXJhbCBnZW7DqXJpY29cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIGNhbm9uaWNhbFNsdWcodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzID0gVXRpbHMudG9TbHVnKHZhbHVlKTtcbiAgICAgICAgaWYgKCFzKSByZXR1cm4gJyc7XG5cbiAgICAgICAgLy8gUmVnbGEgLWVzIChob3RlbGVzIC0+IGhvdGVsLCBsdWNlcyAtPiBsdXosIHBlY2VzIC0+IHBleilcbiAgICAgICAgaWYgKHMubGVuZ3RoID4gMyAmJiBzLmVuZHNXaXRoKCdlcycpKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gcy5zbGljZSgwLCAtMik7XG4gICAgICAgICAgICBpZiAoYmFzZS5lbmRzV2l0aCgnYycpKSByZXR1cm4gYmFzZS5zbGljZSgwLCAtMSkgKyAneic7XG4gICAgICAgICAgICByZXR1cm4gYmFzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlZ2xhIC1zIChhcGFydGFtZW50b3MgLT4gYXBhcnRhbWVudG8pXG4gICAgICAgIGlmIChzLmxlbmd0aCA+IDMgJiYgcy5lbmRzV2l0aCgncycpKSByZXR1cm4gcy5zbGljZSgwLCAtMSk7XG5cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFVJIHV0aWxzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgZ2V0S2V5c0FycmF5KGNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBjb3VudCA/IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0pIDogW107XG4gICAgfVxuXG4gICAgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgZ2V0Rmlyc3RJbWFnZUJ5VGFnKHRhZ05hbWU6IHN0cmluZywgaW1hZ2VuZXM6IEJhYnlsb25JbWFnZUlbXSkge1xuICAgICAgICByZXR1cm4gZ2V0Rmlyc3RJbWFnZUJ5VGFnRnJvbUltYWdlcyhpbWFnZW5lcywgdGFnTmFtZSk7XG4gICAgfVxuXG4gICAgZ2V0TnVtYmVyKHRleHQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIFV0aWxzLmV4dHJhY3ROdW1iZXJSYW5nZSh0ZXh0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVQZW5kaW5nRnJvbU1hcHMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBlbmRpbmdGaWx0ZXJTbHVnICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsdWcgPSB0aGlzLmNhbm9uaWNhbFNsdWcodGhpcy5wZW5kaW5nRmlsdGVyU2x1Zyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5maWx0ZXJTbHVnVG9MYWJlbC5nZXQoc2x1Zyk7XG4gICAgICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID0gbGFiZWw7XG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nRmlsdGVyU2x1ZyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBERVNUSU5BVElPTlxuICAgICAgICBpZiAodGhpcy5wZW5kaW5nRGVzdGluYXRpb25TbHVnICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsdWcgPSBVdGlscy50b1NsdWcodGhpcy5wZW5kaW5nRGVzdGluYXRpb25TbHVnKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5kZXN0aW5hdGlvblNsdWdUb0xhYmVsLmdldChzbHVnKTtcbiAgICAgICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9IGxhYmVsO1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0Rlc3RpbmF0aW9uU2x1ZyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCUkFORFxuICAgICAgICBpZiAodGhpcy5wZW5kaW5nQnJhbmRTbHVnICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsdWcgPSBVdGlscy50b1NsdWcodGhpcy5wZW5kaW5nQnJhbmRTbHVnKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5icmFuZFNsdWdUb0xhYmVsLmdldChzbHVnKTtcbiAgICAgICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9IGxhYmVsO1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0JyYW5kU2x1ZyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcmNlT3B0aW9uTWF0Y2goKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSG90ZWxUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCB3YW50ZWQgPSB0aGlzLmNhbm9uaWNhbFNsdWcodGhpcy5zZWxlY3RlZEhvdGVsVHlwZSk7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuaG90ZWxUeXBlT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvKSA9PiB0aGlzLmNhbm9uaWNhbFNsdWcobykgPT09IHdhbnRlZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPSBtYXRjaCA/PyAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQnJhbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdhbnRlZCA9IFV0aWxzLnRvU2x1Zyh0aGlzLnNlbGVjdGVkQnJhbmQpO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmJyYW5kT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvKSA9PiBVdGlscy50b1NsdWcobykgPT09IHdhbnRlZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9IG1hdGNoID8/ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbikge1xuICAgICAgICAgICAgY29uc3Qgd2FudGVkID0gVXRpbHMudG9TbHVnKHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbik7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuZGVzdGluYXRpb25PcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKG8pID0+IFV0aWxzLnRvU2x1ZyhvKSA9PT0gd2FudGVkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uID0gbWF0Y2ggPz8gJyc7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKGl0ZW1zPy5sZW5ndGgpIHtcbiAgICA8c2VjdGlvbiBjbGFzcz1cIm1kbC1tZDAwMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tY29udGVudC10b3BcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHRleHRzPy50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJtLXRpdGxlXCIgW2lubmVySFRNTF09XCJ0ZXh0cz8udGl0bGVcIj48L2gyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3RzXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzQWN0aXZlRmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1jbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0cz8uY2xlYW5GaWx0ZXJzID8/ICdMaW1waWFyIGZpbHRyb3MnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjQnJhbmRTZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHRzPy5tYXJjYSA/PyAnbWFyY2EnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQnJhbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnJhbmRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0cz8ubWFyY2EgPz8gJ0FsbCcgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHQgb2YgYnJhbmRPcHRpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0XCI+e3sgb3B0IH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaG90ZWxUeXBlU2VsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0cz8uaG90ZWxUeXBlID8/ICdob3RlbGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEhvdGVsVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Ib3RlbFR5cGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPnt7IHRleHRzPy5ob3RlbFR5cGUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHQgb2YgaG90ZWxUeXBlT3B0aW9uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdFwiPnt7IG9wdCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjRGVzdGluYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0cz8uZGVzdGluYXRpb25zID8/ICdkZXN0aW5vcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREZXN0aW5hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25EZXN0aW5hdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3sgdGV4dHM/LmRlc3RpbmF0aW9ucyB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdCBvZiBkZXN0aW5hdGlvbk9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRcIj57eyBvcHQgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tY2FyZHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgQGlmIChmaWx0ZXJlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tY2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkZW1wdHk6ICFnZXRGaXJzdEltYWdlQnlUYWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaW1hZ2VzID8/IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Rmlyc3RJbWFnZUJ5VGFnKHRhZ05hbWUsIGl0ZW0uaW1hZ2VzID8/IFtdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tY2FyZC10b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCgnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaXJzdEltYWdlQnlUYWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaW1hZ2VzID8/IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uaW1nPy5zcmMgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tdGFnLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaG90ZWx0eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uaG90ZWx0eXBlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWtleXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmhvdGVsdHlwZSA9PT0gJ0hvdGVsJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaG90ZWxjYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtIG9mIGdldE51bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmhvdGVsY2F0ZWdvcnkgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTQwNC4wMDAwMDAsIC01OTIyLjAwMDAwMCkgdHJhbnNsYXRlKDE5MS4wMDAwMDAsIDU4NjUuMDAwMDAwKSB0cmFuc2xhdGUoMTEwOS4wMDAwMDAsIDU3LjAwMDAwMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNmZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJub256ZXJvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAgMGwyLjI5NCA3LjEwNGMuMDM0LjEwNi4xMzMuMTc4LjI0NS4xNzhMMjAgNy4yNjdsLTYuMDQ2IDQuMzc0di4wMDFjLS4wOS4wNjYtLjEyOC4xODItLjA5My4yODlsMi4zMjIgNy4wOTUtNi4wMzItNC40Yy0uMDktLjA2NS0uMjEzLS4wNjUtLjMwMyAwbC02LjAyOSA0LjQgMi4zMjItNy4wOTVINi4xNGMuMDM1LS4xMDctLjAwMy0uMjIzLS4wOTQtLjI4OUwwIDcuMjY4bDcuNDYxLjAxNS4wMDEtLjAwMWMuMTEyIDAgLjIxMS0uMDcyLjI0NS0uMTc4TDEwIDB6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMDQuMDAwMDAwLCAwLjAwMDAwMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaG90ZWx0eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBcGFydGFtZW50bycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmhvdGVsY2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSBvZiBnZXROdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbGNhdGVnb3J5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMyAxM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTAuMTQ2Mjk2IDQuMjY0NzlMMS4xNDAxNSAyLjAxNjkyQzEuMzEyODkgMS42MjU1OSAxLjYyNTU5IDEuMzEyODkgMi4wMTY5MiAxLjE0MDE1TDQuMjY0NzkgMC4xNDYyOTdDNC41ODE3NCAwLjAwNjQxODI2IDQuOTMzNTYgLTAuMDM0Mzk0NCA1LjI3NDEyIDAuMDI5MjEyN0M1LjYxNDY3IDAuMDkyODE5OCA1LjkyODA1IDAuMjU3ODc2IDYuMTczMTQgMC41MDI3M0w3Ljk0NzUgMi4yNzgzOUM4LjE2MDYgMi40OTE1NSA4LjMxMzg4IDIuNzU3MDEgOC4zOTE5NyAzLjA0ODEzQzguNDcwMDYgMy4zMzkyNSA4LjQ3MDIgMy42NDU3OCA4LjM5MjM5IDMuOTM2OThMNy45MzU3OSA1LjY0MTA5TDEyLjg2NiAxMC41NzEzQzEyLjkwODUgMTAuNjEzNiAxMi45NDIyIDEwLjY2MzkgMTIuOTY1MiAxMC43MTkzQzEyLjk4ODIgMTAuNzc0NiAxMyAxMC44MzQgMTMgMTAuODkzOVYxMi41NDQ3QzEyLjk5OTMgMTIuNjY1MiAxMi45NTExIDEyLjc4MDcgMTIuODY1OSAxMi44NjU5QzEyLjc4MDcgMTIuOTUxMSAxMi42NjUyIDEyLjk5OTMgMTIuNTQ0NyAxM0gxMC44OTM5QzEwLjc5MjYgMTIuOTk5OCAxMC42OTQyIDEyLjk2NTkgMTAuNjE0MiAxMi45MDM4QzEwLjUzNDEgMTIuODQxNiAxMC40NzcgMTIuNzU0NyAxMC40NTE2IDEyLjY1NjZMMTAuMjA0NSAxMS42Nzk2TDkuMzMwMyAxMS41MTMxQzkuMjQzMjIgMTEuNDk2OCA5LjE2MjgyIDExLjQ1NTMgOS4wOTkwMyAxMS4zOTM4QzkuMDM1MjMgMTEuMzMyMyA4Ljk5MDgyIDExLjI1MzUgOC45NzEyNyAxMS4xNjcxTDguNzMzMjEgMTAuMTE3M0w3Ljg5MDI2IDEwLjAzNjdDNy43ODQ3OSAxMC4wMjc0IDcuNjg2MDggOS45ODA4IDcuNjExODggOS45MDUyOEw1LjY0MTA5IDcuOTM1NzlMMy45MzY5NyA4LjM5MjM5QzMuNjQ1OCA4LjQ3MDQ3IDMuMzM5MTkgOC40NzA0NiAzLjA0ODAyIDguMzkyMzZDMi43NTY4NSA4LjMxNDI2IDIuNDkxNCA4LjE2MDgyIDIuMjc4MzkgNy45NDc1TDAuNTAyNzI5IDYuMTczMTRDMC4yNTc4NzUgNS45MjgwNSAwLjA5MjgyMDIgNS42MTQ2NyAwLjAyOTIxMyA1LjI3NDEyQy0wLjAzNDM5NDMgNC45MzM1NyAwLjAwNjQxNzI3IDQuNTgxNzQgMC4xNDYyOTYgNC4yNjQ3OVpNMy42NzAzIDUuMDg5NTNDMy44MTA2MSA1LjIyOTY4IDMuOTg5MzIgNS4zMjUwOCA0LjE4Mzg1IDUuMzYzNjlDNC4zNzgzNyA1LjQwMjI5IDQuNTc5OTcgNS4zODIzNiA0Ljc2MzE3IDUuMzA2NDFDNC45NDYzNiA1LjIzMDQ3IDUuMTAyOTQgNS4xMDE5MSA1LjIxMzA5IDQuOTM3QzUuMzIzMjQgNC43NzIxIDUuMzgyMDMgNC41NzgyMyA1LjM4MjAzIDQuMzc5OTFDNS4zODIwMyA0LjE4MTYgNS4zMjMyNCAzLjk4NzczIDUuMjEzMDkgMy44MjI4M0M1LjEwMjk0IDMuNjU3OTIgNC45NDYzNiAzLjUyOTM2IDQuNzYzMTcgMy40NTM0MkM0LjU3OTk3IDMuMzc3NDcgNC4zNzgzNyAzLjM1NzU0IDQuMTgzODUgMy4zOTYxNEMzLjk4OTMyIDMuNDM0NzUgMy44MTA2MSAzLjUzMDE1IDMuNjcwMyAzLjY3MDNDMy41NzY4OSAzLjc2MzM2IDMuNTAyNzcgMy44NzM5NSAzLjQ1MjE5IDMuOTk1NzJDMy40MDE2MiA0LjExNzUgMy4zNzU1OCA0LjI0ODA2IDMuMzc1NTggNC4zNzk5MUMzLjM3NTU4IDQuNTExNzcgMy40MDE2MiA0LjY0MjMzIDMuNDUyMTkgNC43NjQxMUMzLjUwMjc3IDQuODg1ODggMy41NzY4OSA0Ljk5NjQ3IDMuNjcwMyA1LjA4OTUzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNmZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS10YWctcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uc3R5bGVzPy5wcmltYXJ5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2ZmNDMzOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGV4dHM/LnRpdGxlIHx8IGl0ZW0udGV4dHM/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnRleHRzPy50aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGV4dHM/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ubG9jYWxpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5sb2NhbGl0eSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ubG9jYWxpdHkgJiYgaXRlbS5wcm92aW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5wcm92aW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnByb3ZpbmNlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5idXR0b25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuIG9mIGl0ZW0uYnV0dG9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbS1idXR0b24tc20nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5kZXggJSAyID09PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtLWJ1dCBtLXVuZGVybGluZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRleCAlIDIgIT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWJ0bi1wcmltYXJ5LWR5bmFtaWNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdHlsZXM/LnByaW1hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1idG4taG92ZXItZHluYW1pY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN0eWxlcz8ucHJpbWFyeUhvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiYnRuLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuLnRhcmdldCB8fCAnX3NlbGYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ0bi5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGJ0bi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM/Lm5vdEZvdW5kID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdObyBzZSBlbmNvbnRyYXJvbiByZXN1bHRhZG9zIGNvbiBlc29zIGZpbHRyb3MuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbn1cbiJdfQ==