valtech-components 2.0.504 → 2.0.506
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/molecules/ad-slot/ad-slot.component.mjs +75 -107
- package/esm2022/lib/services/ads/ads-loader.service.mjs +47 -87
- package/esm2022/lib/services/ads/ads.service.mjs +62 -246
- package/esm2022/lib/services/ads/config.mjs +12 -49
- package/esm2022/lib/services/ads/index.mjs +3 -4
- package/esm2022/lib/services/ads/types.mjs +4 -4
- package/esm2022/lib/services/firebase/analytics-types.mjs +1 -1
- package/esm2022/lib/services/firebase/analytics.service.mjs +33 -10
- package/fesm2022/valtech-components.mjs +247 -667
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/ad-slot/ad-slot.component.d.ts +25 -39
- package/lib/services/ads/ads-loader.service.d.ts +12 -17
- package/lib/services/ads/ads.service.d.ts +26 -44
- package/lib/services/ads/config.d.ts +9 -25
- package/lib/services/ads/index.d.ts +3 -4
- package/lib/services/ads/types.d.ts +34 -99
- package/lib/services/firebase/analytics-types.d.ts +3 -1
- package/lib/services/firebase/analytics.service.d.ts +1 -1
- package/package.json +1 -1
- package/esm2022/lib/services/ads/ads-consent.service.mjs +0 -152
- package/lib/services/ads/ads-consent.service.d.ts +0 -59
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Ad Slot Component
|
|
3
3
|
*
|
|
4
|
-
* Componente standalone para mostrar ads de Google
|
|
4
|
+
* Componente standalone para mostrar ads de Google AdSense.
|
|
5
5
|
* Se integra automaticamente con el servicio de Ads y respeta consent + premium.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
@@ -9,46 +9,38 @@
|
|
|
9
9
|
* <!-- Banner basico -->
|
|
10
10
|
* <val-ad-slot
|
|
11
11
|
* slotId="homepage-top"
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* format="horizontal"
|
|
13
|
+
* [fullWidth]="true"
|
|
14
14
|
* />
|
|
15
15
|
*
|
|
16
|
-
* <!--
|
|
16
|
+
* <!-- Rectangle ad -->
|
|
17
17
|
* <val-ad-slot
|
|
18
18
|
* slotId="sidebar-ad"
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* [sizeMapping]="[
|
|
22
|
-
* { viewportWidth: 1024, sizes: [[300, 600]] },
|
|
23
|
-
* { viewportWidth: 768, sizes: [[300, 250]] },
|
|
24
|
-
* { viewportWidth: 0, sizes: [[320, 50]] }
|
|
25
|
-
* ]"
|
|
19
|
+
* adSlot="1234567890"
|
|
20
|
+
* format="rectangle"
|
|
26
21
|
* />
|
|
27
22
|
*
|
|
28
|
-
* <!--
|
|
23
|
+
* <!-- Auto format (Google decides) -->
|
|
29
24
|
* <val-ad-slot
|
|
30
|
-
* slotId="article-
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* [isNative]="true"
|
|
25
|
+
* slotId="article-ad"
|
|
26
|
+
* format="auto"
|
|
27
|
+
* [fullWidth]="true"
|
|
34
28
|
* />
|
|
35
29
|
* ```
|
|
36
30
|
*/
|
|
37
|
-
import { Component, Input, inject, signal, computed, PLATFORM_ID, ChangeDetectionStrategy, } from '@angular/core';
|
|
31
|
+
import { Component, Input, inject, signal, computed, PLATFORM_ID, ChangeDetectionStrategy, ElementRef, } from '@angular/core';
|
|
38
32
|
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
39
33
|
import { AdsService } from '../../../services/ads/ads.service';
|
|
40
|
-
import { AD_SIZE_MAP } from '../../../services/ads/types';
|
|
41
34
|
import * as i0 from "@angular/core";
|
|
42
35
|
export class AdSlotComponent {
|
|
43
36
|
constructor() {
|
|
44
37
|
this.adsService = inject(AdsService);
|
|
45
38
|
this.platformId = inject(PLATFORM_ID);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
this.isNative = false;
|
|
39
|
+
this.elementRef = inject(ElementRef);
|
|
40
|
+
/** Formato del ad */
|
|
41
|
+
this.format = 'auto';
|
|
42
|
+
/** Full width responsive */
|
|
43
|
+
this.fullWidth = true;
|
|
52
44
|
/** CSS class adicional */
|
|
53
45
|
this.cssClass = '';
|
|
54
46
|
/** Altura minima */
|
|
@@ -60,6 +52,7 @@ export class AdSlotComponent {
|
|
|
60
52
|
// ===========================================================================
|
|
61
53
|
this._state = signal('idle');
|
|
62
54
|
this.state = this._state.asReadonly();
|
|
55
|
+
this.adInitialized = false;
|
|
63
56
|
/** Indica si el componente debe renderizarse */
|
|
64
57
|
this.shouldRender = computed(() => {
|
|
65
58
|
// No renderizar en SSR
|
|
@@ -76,16 +69,6 @@ export class AdSlotComponent {
|
|
|
76
69
|
}
|
|
77
70
|
return true;
|
|
78
71
|
});
|
|
79
|
-
/** Ancho del skeleton */
|
|
80
|
-
this.skeletonWidth = computed(() => {
|
|
81
|
-
const firstSize = this.getFirstSize();
|
|
82
|
-
return firstSize ? `${firstSize[0]}px` : '100%';
|
|
83
|
-
});
|
|
84
|
-
/** Altura del skeleton */
|
|
85
|
-
this.skeletonHeight = computed(() => {
|
|
86
|
-
const firstSize = this.getFirstSize();
|
|
87
|
-
return firstSize ? `${firstSize[1]}px` : this.minHeight;
|
|
88
|
-
});
|
|
89
72
|
}
|
|
90
73
|
// ===========================================================================
|
|
91
74
|
// LIFECYCLE
|
|
@@ -94,59 +77,47 @@ export class AdSlotComponent {
|
|
|
94
77
|
if (!this.shouldRender()) {
|
|
95
78
|
return;
|
|
96
79
|
}
|
|
97
|
-
|
|
80
|
+
this._state.set('loading');
|
|
98
81
|
}
|
|
99
|
-
|
|
100
|
-
if (
|
|
101
|
-
|
|
82
|
+
async ngAfterViewInit() {
|
|
83
|
+
if (!this.shouldRender() || this.adInitialized) {
|
|
84
|
+
return;
|
|
102
85
|
}
|
|
86
|
+
await this.initializeAd();
|
|
87
|
+
}
|
|
88
|
+
ngOnDestroy() {
|
|
89
|
+
// AdSense no requiere cleanup manual como GPT
|
|
90
|
+
this.adInitialized = false;
|
|
103
91
|
}
|
|
104
92
|
// ===========================================================================
|
|
105
93
|
// PRIVATE
|
|
106
94
|
// ===========================================================================
|
|
107
|
-
async
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const result = await this.adsService.defineSlot(config);
|
|
122
|
-
if (result) {
|
|
123
|
-
this._state.set('rendered');
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
this._state.set(this.adsService.getSlotState(this.slotId));
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
getFirstSize() {
|
|
130
|
-
if (typeof this.size === 'string') {
|
|
131
|
-
const mapped = AD_SIZE_MAP[this.size];
|
|
132
|
-
return mapped === 'fluid' ? null : mapped;
|
|
133
|
-
}
|
|
134
|
-
if (Array.isArray(this.size)) {
|
|
135
|
-
if (typeof this.size[0] === 'number') {
|
|
136
|
-
return this.size;
|
|
95
|
+
async initializeAd() {
|
|
96
|
+
try {
|
|
97
|
+
// Registrar slot y cargar AdSense si no esta cargado
|
|
98
|
+
const success = await this.adsService.registerSlot(this.slotId);
|
|
99
|
+
if (success) {
|
|
100
|
+
this._state.set('rendered');
|
|
101
|
+
this.adInitialized = true;
|
|
102
|
+
if (this.adsService.isDebugMode()) {
|
|
103
|
+
console.log(`[ValtechAds] Ad slot '${this.slotId}' rendered`, {
|
|
104
|
+
format: this.format,
|
|
105
|
+
adSlot: this.adSlot,
|
|
106
|
+
fullWidth: this.fullWidth,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
137
109
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return first === 'fluid' ? null : first;
|
|
141
|
-
}
|
|
142
|
-
if (Array.isArray(this.size[0])) {
|
|
143
|
-
return this.size[0];
|
|
110
|
+
else {
|
|
111
|
+
this._state.set('empty');
|
|
144
112
|
}
|
|
145
113
|
}
|
|
146
|
-
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error(`[ValtechAds] Error initializing ad slot '${this.slotId}':`, error);
|
|
116
|
+
this._state.set('error');
|
|
117
|
+
}
|
|
147
118
|
}
|
|
148
119
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
149
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AdSlotComponent, isStandalone: true, selector: "val-ad-slot", inputs: { slotId: "slotId",
|
|
120
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AdSlotComponent, isStandalone: true, selector: "val-ad-slot", inputs: { slotId: "slotId", adSlot: "adSlot", format: "format", fullWidth: "fullWidth", cssClass: "cssClass", minHeight: "minHeight", showSkeleton: "showSkeleton" }, ngImport: i0, template: `
|
|
150
121
|
@if (shouldRender()) {
|
|
151
122
|
<div
|
|
152
123
|
class="val-ad-slot"
|
|
@@ -154,7 +125,6 @@ export class AdSlotComponent {
|
|
|
154
125
|
[class.val-ad-slot--rendered]="state() === 'rendered'"
|
|
155
126
|
[class.val-ad-slot--empty]="state() === 'empty'"
|
|
156
127
|
[class.val-ad-slot--hidden]="state() === 'hidden'"
|
|
157
|
-
[class.val-ad-slot--native]="isNative"
|
|
158
128
|
[class]="cssClass"
|
|
159
129
|
[style.min-height]="minHeight"
|
|
160
130
|
>
|
|
@@ -162,27 +132,30 @@ export class AdSlotComponent {
|
|
|
162
132
|
@if (showSkeleton && state() === 'loading') {
|
|
163
133
|
<div
|
|
164
134
|
class="val-ad-slot__skeleton"
|
|
165
|
-
[style.
|
|
166
|
-
[style.height]="skeletonHeight()"
|
|
135
|
+
[style.height]="minHeight"
|
|
167
136
|
></div>
|
|
168
137
|
}
|
|
169
138
|
|
|
170
|
-
<!--
|
|
171
|
-
<
|
|
172
|
-
|
|
173
|
-
class="val-ad-slot__container"
|
|
139
|
+
<!-- AdSense ins element -->
|
|
140
|
+
<ins
|
|
141
|
+
class="adsbygoogle val-ad-slot__container"
|
|
174
142
|
[class.val-ad-slot__container--hidden]="state() === 'loading' && showSkeleton"
|
|
175
|
-
|
|
143
|
+
[style.display]="'block'"
|
|
144
|
+
[attr.data-ad-client]="adsService.adClient()"
|
|
145
|
+
[attr.data-ad-slot]="adSlot || null"
|
|
146
|
+
[attr.data-ad-format]="format"
|
|
147
|
+
[attr.data-full-width-responsive]="fullWidth ? 'true' : null"
|
|
148
|
+
></ins>
|
|
176
149
|
|
|
177
150
|
<!-- Debug info -->
|
|
178
151
|
@if (adsService.isDebugMode()) {
|
|
179
152
|
<div class="val-ad-slot__debug">
|
|
180
|
-
<small>{{ slotId }} | {{
|
|
153
|
+
<small>{{ slotId }} | {{ format }} | {{ state() }}</small>
|
|
181
154
|
</div>
|
|
182
155
|
}
|
|
183
156
|
</div>
|
|
184
157
|
}
|
|
185
|
-
`, isInline: true, styles: [".val-ad-slot{position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden}.val-ad-slot--loading{background-color:var(--ion-color-light, #f4f4f4)}.val-ad-slot--empty,.val-ad-slot--hidden{display:none!important}.val-ad-
|
|
158
|
+
`, isInline: true, styles: [".val-ad-slot{position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden;width:100%}.val-ad-slot--loading{background-color:var(--ion-color-light, #f4f4f4)}.val-ad-slot--empty,.val-ad-slot--hidden{display:none!important}.val-ad-slot__skeleton{width:100%;background:linear-gradient(90deg,var(--ion-color-light, #f4f4f4) 25%,var(--ion-color-light-shade, #e0e0e0) 50%,var(--ion-color-light, #f4f4f4) 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite;border-radius:4px}.val-ad-slot__container{width:100%}.val-ad-slot__container--hidden{visibility:hidden;position:absolute}.val-ad-slot__debug{position:absolute;bottom:0;left:0;background:#000000b3;color:#fff;padding:2px 6px;font-size:10px;z-index:1000;font-family:monospace}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
186
159
|
}
|
|
187
160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdSlotComponent, decorators: [{
|
|
188
161
|
type: Component,
|
|
@@ -194,7 +167,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
194
167
|
[class.val-ad-slot--rendered]="state() === 'rendered'"
|
|
195
168
|
[class.val-ad-slot--empty]="state() === 'empty'"
|
|
196
169
|
[class.val-ad-slot--hidden]="state() === 'hidden'"
|
|
197
|
-
[class.val-ad-slot--native]="isNative"
|
|
198
170
|
[class]="cssClass"
|
|
199
171
|
[style.min-height]="minHeight"
|
|
200
172
|
>
|
|
@@ -202,42 +174,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
202
174
|
@if (showSkeleton && state() === 'loading') {
|
|
203
175
|
<div
|
|
204
176
|
class="val-ad-slot__skeleton"
|
|
205
|
-
[style.
|
|
206
|
-
[style.height]="skeletonHeight()"
|
|
177
|
+
[style.height]="minHeight"
|
|
207
178
|
></div>
|
|
208
179
|
}
|
|
209
180
|
|
|
210
|
-
<!--
|
|
211
|
-
<
|
|
212
|
-
|
|
213
|
-
class="val-ad-slot__container"
|
|
181
|
+
<!-- AdSense ins element -->
|
|
182
|
+
<ins
|
|
183
|
+
class="adsbygoogle val-ad-slot__container"
|
|
214
184
|
[class.val-ad-slot__container--hidden]="state() === 'loading' && showSkeleton"
|
|
215
|
-
|
|
185
|
+
[style.display]="'block'"
|
|
186
|
+
[attr.data-ad-client]="adsService.adClient()"
|
|
187
|
+
[attr.data-ad-slot]="adSlot || null"
|
|
188
|
+
[attr.data-ad-format]="format"
|
|
189
|
+
[attr.data-full-width-responsive]="fullWidth ? 'true' : null"
|
|
190
|
+
></ins>
|
|
216
191
|
|
|
217
192
|
<!-- Debug info -->
|
|
218
193
|
@if (adsService.isDebugMode()) {
|
|
219
194
|
<div class="val-ad-slot__debug">
|
|
220
|
-
<small>{{ slotId }} | {{
|
|
195
|
+
<small>{{ slotId }} | {{ format }} | {{ state() }}</small>
|
|
221
196
|
</div>
|
|
222
197
|
}
|
|
223
198
|
</div>
|
|
224
199
|
}
|
|
225
|
-
`, styles: [".val-ad-slot{position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden}.val-ad-slot--loading{background-color:var(--ion-color-light, #f4f4f4)}.val-ad-slot--empty,.val-ad-slot--hidden{display:none!important}.val-ad-
|
|
200
|
+
`, styles: [".val-ad-slot{position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden;width:100%}.val-ad-slot--loading{background-color:var(--ion-color-light, #f4f4f4)}.val-ad-slot--empty,.val-ad-slot--hidden{display:none!important}.val-ad-slot__skeleton{width:100%;background:linear-gradient(90deg,var(--ion-color-light, #f4f4f4) 25%,var(--ion-color-light-shade, #e0e0e0) 50%,var(--ion-color-light, #f4f4f4) 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite;border-radius:4px}.val-ad-slot__container{width:100%}.val-ad-slot__container--hidden{visibility:hidden;position:absolute}.val-ad-slot__debug{position:absolute;bottom:0;left:0;background:#000000b3;color:#fff;padding:2px 6px;font-size:10px;z-index:1000;font-family:monospace}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}\n"] }]
|
|
226
201
|
}], propDecorators: { slotId: [{
|
|
227
202
|
type: Input,
|
|
228
203
|
args: [{ required: true }]
|
|
229
|
-
}],
|
|
230
|
-
type: Input,
|
|
231
|
-
args: [{ required: true }]
|
|
232
|
-
}], size: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], sizeMapping: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], targeting: [{
|
|
204
|
+
}], adSlot: [{
|
|
237
205
|
type: Input
|
|
238
|
-
}],
|
|
206
|
+
}], format: [{
|
|
239
207
|
type: Input
|
|
240
|
-
}],
|
|
208
|
+
}], fullWidth: [{
|
|
241
209
|
type: Input
|
|
242
210
|
}], cssClass: [{
|
|
243
211
|
type: Input
|
|
@@ -246,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
246
214
|
}], showSkeleton: [{
|
|
247
215
|
type: Input
|
|
248
216
|
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWQtc2xvdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2FkLXNsb3QvYWQtc2xvdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsV0FBVyxFQUNYLHVCQUF1QixHQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBc0QsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBMkc5RyxNQUFNLE9BQU8sZUFBZTtJQXpHNUI7UUEwR1csZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBWWxELG9CQUFvQjtRQUNYLFNBQUksR0FBc0Usa0JBQWtCLENBQUM7UUFRdEcsd0JBQXdCO1FBQ2Ysa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFOUIsbUJBQW1CO1FBQ1YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQiwwQkFBMEI7UUFDakIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUV2QixvQkFBb0I7UUFDWCxjQUFTLEdBQUcsTUFBTSxDQUFDO1FBRTVCLHVCQUF1QjtRQUNkLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRTdCLDhFQUE4RTtRQUM5RSxTQUFTO1FBQ1QsOEVBQThFO1FBRTdELFdBQU0sR0FBRyxNQUFNLENBQWMsTUFBTSxDQUFDLENBQUM7UUFDN0MsVUFBSyxH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NULDg0QkF0Q1MsWUFBWTs7NEZBc0dYLGVBQWU7a0JBekczQixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBQ04sdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NUOzhCQXlFMEIsTUFBTTtzQkFBaEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBR0UsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBR2hCLElBQUk7c0JBQVosS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZCBTbG90IENvbXBvbmVudFxuICpcbiAqIENvbXBvbmVudGUgc3RhbmRhbG9uZSBwYXJhIG1vc3RyYXIgYWRzIGRlIEdvb2dsZSBBZCBNYW5hZ2VyLlxuICogU2UgaW50ZWdyYSBhdXRvbWF0aWNhbWVudGUgY29uIGVsIHNlcnZpY2lvIGRlIEFkcyB5IHJlc3BldGEgY29uc2VudCArIHByZW1pdW0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDwhLS0gQmFubmVyIGJhc2ljbyAtLT5cbiAqIDx2YWwtYWQtc2xvdFxuICogICBzbG90SWQ9XCJob21lcGFnZS10b3BcIlxuICogICBhZFVuaXRQYXRoPVwiL2hvbWVwYWdlL3RvcFwiXG4gKiAgIHNpemU9XCJsZWFkZXJib2FyZFwiXG4gKiAvPlxuICpcbiAqIDwhLS0gQ29uIHJlc3BvbnNpdm8gLS0+XG4gKiA8dmFsLWFkLXNsb3RcbiAqICAgc2xvdElkPVwic2lkZWJhci1hZFwiXG4gKiAgIGFkVW5pdFBhdGg9XCIvc2lkZWJhclwiXG4gKiAgIFtzaXplXT1cIlsnbWVkaXVtLXJlY3RhbmdsZScsICdoYWxmLXBhZ2UnXVwiXG4gKiAgIFtzaXplTWFwcGluZ109XCJbXG4gKiAgICAgeyB2aWV3cG9ydFdpZHRoOiAxMDI0LCBzaXplczogW1szMDAsIDYwMF1dIH0sXG4gKiAgICAgeyB2aWV3cG9ydFdpZHRoOiA3NjgsIHNpemVzOiBbWzMwMCwgMjUwXV0gfSxcbiAqICAgICB7IHZpZXdwb3J0V2lkdGg6IDAsIHNpemVzOiBbWzMyMCwgNTBdXSB9XG4gKiAgIF1cIlxuICogLz5cbiAqXG4gKiA8IS0tIE5hdGl2ZSBhZCAtLT5cbiAqIDx2YWwtYWQtc2xvdFxuICogICBzbG90SWQ9XCJhcnRpY2xlLW5hdGl2ZVwiXG4gKiAgIGFkVW5pdFBhdGg9XCIvYXJ0aWNsZS9uYXRpdmVcIlxuICogICBzaXplPVwibmF0aXZlXCJcbiAqICAgW2lzTmF0aXZlXT1cInRydWVcIlxuICogLz5cbiAqIGBgYFxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIFBMQVRGT1JNX0lELFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFkc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hZHMvYWRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRTbG90Q29uZmlnLCBBZFNsb3RTaXplLCBBZFNsb3RTdGF0ZSwgU2l6ZU1hcHBpbmcsIEFEX1NJWkVfTUFQIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWRzL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWFkLXNsb3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChzaG91bGRSZW5kZXIoKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInZhbC1hZC1zbG90XCJcbiAgICAgICAgW2NsYXNzLnZhbC1hZC1zbG90LS1sb2FkaW5nXT1cInN0YXRlKCkgPT09ICdsb2FkaW5nJ1wiXG4gICAgICAgIFtjbGFzcy52YWwtYWQtc2xvdC0tcmVuZGVyZWRdPVwic3RhdGUoKSA9PT0gJ3JlbmRlcmVkJ1wiXG4gICAgICAgIFtjbGFzcy52YWwtYWQtc2xvdC0tZW1wdHldPVwic3RhdGUoKSA9PT0gJ2VtcHR5J1wiXG4gICAgICAgIFtjbGFzcy52YWwtYWQtc2xvdC0taGlkZGVuXT1cInN0YXRlKCkgPT09ICdoaWRkZW4nXCJcbiAgICAgICAgW2NsYXNzLnZhbC1hZC1zbG90LS1uYXRpdmVdPVwiaXNOYXRpdmVcIlxuICAgICAgICBbY2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICBbc3R5bGUubWluLWhlaWdodF09XCJtaW5IZWlnaHRcIlxuICAgICAgPlxuICAgICAgICA8IS0tIFNrZWxldG9uIG1pZW50cmFzIGNhcmdhIC0tPlxuICAgICAgICBAaWYgKHNob3dTa2VsZXRvbiAmJiBzdGF0ZSgpID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZhbC1hZC1zbG90X19za2VsZXRvblwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwic2tlbGV0b25XaWR0aCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwic2tlbGV0b25IZWlnaHQoKVwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBDb250YWluZXIgZGVsIGFkIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW2lkXT1cInNsb3RJZFwiXG4gICAgICAgICAgY2xhc3M9XCJ2YWwtYWQtc2xvdF9fY29udGFpbmVyXCJcbiAgICAgICAgICBbY2xhc3MudmFsLWFkLXNsb3RfX2NvbnRhaW5lci0taGlkZGVuXT1cInN0YXRlKCkgPT09ICdsb2FkaW5nJyAmJiBzaG93U2tlbGV0b25cIlxuICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgPCEtLSBEZWJ1ZyBpbmZvIC0tPlxuICAgICAgICBAaWYgKGFkc1NlcnZpY2UuaXNEZWJ1Z01vZGUoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtYWQtc2xvdF9fZGVidWdcIj5cbiAgICAgICAgICAgIDxzbWFsbD57eyBzbG90SWQgfX0gfCB7eyBhZFVuaXRQYXRoIH19IHwge3sgc3RhdGUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnZhbC1hZC1zbG90IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLnZhbC1hZC1zbG90LS1sb2FkaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNGY0KTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1hZC1zbG90LS1lbXB0eSxcbiAgICAgIC52YWwtYWQtc2xvdC0taGlkZGVuIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAudmFsLWFkLXNsb3QtLW5hdGl2ZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAudmFsLWFkLXNsb3RfX3NrZWxldG9uIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgIDkwZGVnLFxuICAgICAgICAgIHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjRmNCkgMjUlLFxuICAgICAgICAgIHZhcigtLWlvbi1jb2xvci1saWdodC1zaGFkZSwgI2UwZTBlMCkgNTAlLFxuICAgICAgICAgIHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjRmNCkgNzUlXG4gICAgICAgICk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlO1xuICAgICAgICBhbmltYXRpb246IHNrZWxldG9uLWxvYWRpbmcgMS41cyBpbmZpbml0ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgfVxuXG4gICAgICAudmFsLWFkLXNsb3RfX2NvbnRhaW5lci0taGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB9XG5cbiAgICAgIC52YWwtYWQtc2xvdF9fZGVidWcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjcpO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBza2VsZXRvbi1sb2FkaW5nIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDIwMCUgMDtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjAwJSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWRTbG90Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICByZWFkb25seSBhZHNTZXJ2aWNlID0gaW5qZWN0KEFkc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTlBVVFMgKENvbmZpZ3VyYWNpb24gZGVsIHNsb3QpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBJRCB1bmljbyBkZWwgc2xvdCAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzbG90SWQhOiBzdHJpbmc7XG5cbiAgLyoqIEFkIHVuaXQgcGF0aCAoc2luIGVsIG5ldHdvcmsgSUQpICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGFkVW5pdFBhdGghOiBzdHJpbmc7XG5cbiAgLyoqIFRhbWFubyBkZWwgYWQgKi9cbiAgQElucHV0KCkgc2l6ZTogQWRTbG90U2l6ZSB8IEFkU2xvdFNpemVbXSB8IFtudW1iZXIsIG51bWJlcl0gfCBbbnVtYmVyLCBudW1iZXJdW10gPSAnbWVkaXVtLXJlY3RhbmdsZSc7XG5cbiAgLyoqIE1hcHBpbmcgcmVzcG9uc2l2byAqL1xuICBASW5wdXQoKSBzaXplTWFwcGluZz86IFNpemVNYXBwaW5nW107XG5cbiAgLyoqIFRhcmdldGluZyBlc3BlY2lmaWNvICovXG4gIEBJbnB1dCgpIHRhcmdldGluZz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPjtcblxuICAvKiogQ29sYXBzYXIgc2kgdmFjaW8gKi9cbiAgQElucHV0KCkgY29sbGFwc2VFbXB0eSA9IHRydWU7XG5cbiAgLyoqIEVzIG5hdGl2ZSBhZCAqL1xuICBASW5wdXQoKSBpc05hdGl2ZSA9IGZhbHNlO1xuXG4gIC8qKiBDU1MgY2xhc3MgYWRpY2lvbmFsICovXG4gIEBJbnB1dCgpIGNzc0NsYXNzID0gJyc7XG5cbiAgLyoqIEFsdHVyYSBtaW5pbWEgKi9cbiAgQElucHV0KCkgbWluSGVpZ2h0ID0gJzkwcHgnO1xuXG4gIC8qKiBNb3N0cmFyIHNrZWxldG9uICovXG4gIEBJbnB1dCgpIHNob3dTa2VsZXRvbiA9IHRydWU7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVTVEFET1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSA9IHNpZ25hbDxBZFNsb3RTdGF0ZT4oJ2lkbGUnKTtcbiAgcmVhZG9ubHkgc3RhdGUgPSB0aGlzLl9zdGF0ZS5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIEluZGljYSBzaSBlbCBjb21wb25lbnRlIGRlYmUgcmVuZGVyaXphcnNlICovXG4gIHJlYWRvbmx5IHNob3VsZFJlbmRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAvLyBObyByZW5kZXJpemFyIGVuIFNTUlxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE5vIHJlbmRlcml6YXIgc2kgdXN1YXJpbyBlcyBwcmVtaXVtXG4gICAgaWYgKHRoaXMuYWRzU2VydmljZS5pc1ByZW1pdW1Vc2VyKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBObyByZW5kZXJpemFyIHNpIGFkcyBlc3RhbiBkZXNoYWJpbGl0YWRvcyB5IGF1biBubyBpbmljaWFsaXphZG9cbiAgICBpZiAoIXRoaXMuYWRzU2VydmljZS5pc0luaXRpYWxpemVkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgLyoqIEFuY2hvIGRlbCBza2VsZXRvbiAqL1xuICByZWFkb25seSBza2VsZXRvbldpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGZpcnN0U2l6ZSA9IHRoaXMuZ2V0Rmlyc3RTaXplKCk7XG4gICAgcmV0dXJuIGZpcnN0U2l6ZSA/IGAke2ZpcnN0U2l6ZVswXX1weGAgOiAnMTAwJSc7XG4gIH0pO1xuXG4gIC8qKiBBbHR1cmEgZGVsIHNrZWxldG9uICovXG4gIHJlYWRvbmx5IHNrZWxldG9uSGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGZpcnN0U2l6ZSA9IHRoaXMuZ2V0Rmlyc3RTaXplKCk7XG4gICAgcmV0dXJuIGZpcnN0U2l6ZSA/IGAke2ZpcnN0U2l6ZVsxXX1weGAgOiB0aGlzLm1pbkhlaWdodDtcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExJRkVDWUNMRVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVuZGVyKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVTbG90KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5hZHNTZXJ2aWNlLmRlc3Ryb3lTbG90KHRoaXMuc2xvdElkKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJJVkFURVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemVTbG90KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX3N0YXRlLnNldCgnbG9hZGluZycpO1xuXG4gICAgY29uc3QgY29uZmlnOiBBZFNsb3RDb25maWcgPSB7XG4gICAgICBzbG90SWQ6IHRoaXMuc2xvdElkLFxuICAgICAgYWRVbml0UGF0aDogdGhpcy5hZFVuaXRQYXRoLFxuICAgICAgc2l6ZTogdGhpcy5zaXplLFxuICAgICAgc2l6ZU1hcHBpbmc6IHRoaXMuc2l6ZU1hcHBpbmcsXG4gICAgICB0YXJnZXRpbmc6IHRoaXMudGFyZ2V0aW5nLFxuICAgICAgY29sbGFwc2VFbXB0eTogdGhpcy5jb2xsYXBzZUVtcHR5LFxuICAgICAgaXNOYXRpdmU6IHRoaXMuaXNOYXRpdmUsXG4gICAgICBjc3NDbGFzczogdGhpcy5jc3NDbGFzcyxcbiAgICAgIG1pbkhlaWdodDogdGhpcy5taW5IZWlnaHQsXG4gICAgICBzaG93U2tlbGV0b246IHRoaXMuc2hvd1NrZWxldG9uLFxuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFkc1NlcnZpY2UuZGVmaW5lU2xvdChjb25maWcpO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgdGhpcy5fc3RhdGUuc2V0KCdyZW5kZXJlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zdGF0ZS5zZXQodGhpcy5hZHNTZXJ2aWNlLmdldFNsb3RTdGF0ZSh0aGlzLnNsb3RJZCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rmlyc3RTaXplKCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuc2l6ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IG1hcHBlZCA9IEFEX1NJWkVfTUFQW3RoaXMuc2l6ZSBhcyBBZFNsb3RTaXplXTtcbiAgICAgIHJldHVybiBtYXBwZWQgPT09ICdmbHVpZCcgPyBudWxsIDogbWFwcGVkO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuc2l6ZSkpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5zaXplWzBdID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdGhpcy5zaXplIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHRoaXMuc2l6ZVswXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSBBRF9TSVpFX01BUFt0aGlzLnNpemVbMF0gYXMgQWRTbG90U2l6ZV07XG4gICAgICAgIHJldHVybiBmaXJzdCA9PT0gJ2ZsdWlkJyA/IG51bGwgOiBmaXJzdDtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuc2l6ZVswXSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZVswXSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWQtc2xvdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2FkLXNsb3QvYWQtc2xvdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsV0FBVyxFQUNYLHVCQUF1QixFQUN2QixVQUFVLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFnSC9ELE1BQU0sT0FBTyxlQUFlO0lBN0c1QjtRQThHVyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQVlqRCxxQkFBcUI7UUFDWixXQUFNLEdBQWEsTUFBTSxDQUFDO1FBRW5DLDRCQUE0QjtRQUNuQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRTFCLDBCQUEwQjtRQUNqQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRXZCLG9CQUFvQjtRQUNYLGNBQVMsR0FBRyxNQUFNLENBQUM7UUFFNUIsdUJBQXVCO1FBQ2QsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFN0IsOEVBQThFO1FBQzlFLFNBQVM7UUFDVCw4RUFBOEU7UUFFN0QsV0FBTSxHQUFHLE1BQU0sQ0FBYyxNQUFNLENBQUMsQ0FBQztRQUM3QyxVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztR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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NUOzhCQTRFMEIsTUFBTTtzQkFBaEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBR2hCLE1BQU07c0JBQWQsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWQgU2xvdCBDb21wb25lbnRcbiAqXG4gKiBDb21wb25lbnRlIHN0YW5kYWxvbmUgcGFyYSBtb3N0cmFyIGFkcyBkZSBHb29nbGUgQWRTZW5zZS5cbiAqIFNlIGludGVncmEgYXV0b21hdGljYW1lbnRlIGNvbiBlbCBzZXJ2aWNpbyBkZSBBZHMgeSByZXNwZXRhIGNvbnNlbnQgKyBwcmVtaXVtLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8IS0tIEJhbm5lciBiYXNpY28gLS0+XG4gKiA8dmFsLWFkLXNsb3RcbiAqICAgc2xvdElkPVwiaG9tZXBhZ2UtdG9wXCJcbiAqICAgZm9ybWF0PVwiaG9yaXpvbnRhbFwiXG4gKiAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gKiAvPlxuICpcbiAqIDwhLS0gUmVjdGFuZ2xlIGFkIC0tPlxuICogPHZhbC1hZC1zbG90XG4gKiAgIHNsb3RJZD1cInNpZGViYXItYWRcIlxuICogICBhZFNsb3Q9XCIxMjM0NTY3ODkwXCJcbiAqICAgZm9ybWF0PVwicmVjdGFuZ2xlXCJcbiAqIC8+XG4gKlxuICogPCEtLSBBdXRvIGZvcm1hdCAoR29vZ2xlIGRlY2lkZXMpIC0tPlxuICogPHZhbC1hZC1zbG90XG4gKiAgIHNsb3RJZD1cImFydGljbGUtYWRcIlxuICogICBmb3JtYXQ9XCJhdXRvXCJcbiAqICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBQTEFURk9STV9JRCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWRzL2Fkcy5zZXJ2aWNlJztcbmltcG9ydCB7IEFkRm9ybWF0LCBBZFNsb3RTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Fkcy90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hZC1zbG90JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIEBpZiAoc2hvdWxkUmVuZGVyKCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ2YWwtYWQtc2xvdFwiXG4gICAgICAgIFtjbGFzcy52YWwtYWQtc2xvdC0tbG9hZGluZ109XCJzdGF0ZSgpID09PSAnbG9hZGluZydcIlxuICAgICAgICBbY2xhc3MudmFsLWFkLXNsb3QtLXJlbmRlcmVkXT1cInN0YXRlKCkgPT09ICdyZW5kZXJlZCdcIlxuICAgICAgICBbY2xhc3MudmFsLWFkLXNsb3QtLWVtcHR5XT1cInN0YXRlKCkgPT09ICdlbXB0eSdcIlxuICAgICAgICBbY2xhc3MudmFsLWFkLXNsb3QtLWhpZGRlbl09XCJzdGF0ZSgpID09PSAnaGlkZGVuJ1wiXG4gICAgICAgIFtjbGFzc109XCJjc3NDbGFzc1wiXG4gICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cIm1pbkhlaWdodFwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gU2tlbGV0b24gbWllbnRyYXMgY2FyZ2EgLS0+XG4gICAgICAgIEBpZiAoc2hvd1NrZWxldG9uICYmIHN0YXRlKCkgPT09ICdsb2FkaW5nJykge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWFkLXNsb3RfX3NrZWxldG9uXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwibWluSGVpZ2h0XCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEFkU2Vuc2UgaW5zIGVsZW1lbnQgLS0+XG4gICAgICAgIDxpbnNcbiAgICAgICAgICBjbGFzcz1cImFkc2J5Z29vZ2xlIHZhbC1hZC1zbG90X19jb250YWluZXJcIlxuICAgICAgICAgIFtjbGFzcy52YWwtYWQtc2xvdF9fY29udGFpbmVyLS1oaWRkZW5dPVwic3RhdGUoKSA9PT0gJ2xvYWRpbmcnICYmIHNob3dTa2VsZXRvblwiXG4gICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiJ2Jsb2NrJ1wiXG4gICAgICAgICAgW2F0dHIuZGF0YS1hZC1jbGllbnRdPVwiYWRzU2VydmljZS5hZENsaWVudCgpXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWFkLXNsb3RdPVwiYWRTbG90IHx8IG51bGxcIlxuICAgICAgICAgIFthdHRyLmRhdGEtYWQtZm9ybWF0XT1cImZvcm1hdFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1mdWxsLXdpZHRoLXJlc3BvbnNpdmVdPVwiZnVsbFdpZHRoID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgID48L2lucz5cblxuICAgICAgICA8IS0tIERlYnVnIGluZm8gLS0+XG4gICAgICAgIEBpZiAoYWRzU2VydmljZS5pc0RlYnVnTW9kZSgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1hZC1zbG90X19kZWJ1Z1wiPlxuICAgICAgICAgICAgPHNtYWxsPnt7IHNsb3RJZCB9fSB8IHt7IGZvcm1hdCB9fSB8IHt7IHN0YXRlKCkgfX08L3NtYWxsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC52YWwtYWQtc2xvdCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAudmFsLWFkLXNsb3QtLWxvYWRpbmcge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY0ZjQpO1xuICAgICAgfVxuXG4gICAgICAudmFsLWFkLXNsb3QtLWVtcHR5LFxuICAgICAgLnZhbC1hZC1zbG90LS1oaWRkZW4ge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC52YWwtYWQtc2xvdF9fc2tlbGV0b24ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgIDkwZGVnLFxuICAgICAgICAgIHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjRmNCkgMjUlLFxuICAgICAgICAgIHZhcigtLWlvbi1jb2xvci1saWdodC1zaGFkZSwgI2UwZTBlMCkgNTAlLFxuICAgICAgICAgIHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjRmNCkgNzUlXG4gICAgICAgICk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlO1xuICAgICAgICBhbmltYXRpb246IHNrZWxldG9uLWxvYWRpbmcgMS41cyBpbmZpbml0ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgfVxuXG4gICAgICAudmFsLWFkLXNsb3RfX2NvbnRhaW5lciB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAudmFsLWFkLXNsb3RfX2NvbnRhaW5lci0taGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB9XG5cbiAgICAgIC52YWwtYWQtc2xvdF9fZGVidWcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjcpO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBza2VsZXRvbi1sb2FkaW5nIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDIwMCUgMDtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjAwJSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWRTbG90Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICByZWFkb25seSBhZHNTZXJ2aWNlID0gaW5qZWN0KEFkc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIElOUFVUUyAoQ29uZmlndXJhY2lvbiBkZWwgc2xvdClcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIElEIHVuaWNvIGRlbCBzbG90IChwYXJhIHRyYWNraW5nIGludGVybm8pICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNsb3RJZCE6IHN0cmluZztcblxuICAvKiogQWQgU2xvdCBJRCBkZSBBZFNlbnNlIChvcGNpb25hbCwgcGFyYSB1bmlkYWRlcyBtYW51YWxlcykgKi9cbiAgQElucHV0KCkgYWRTbG90Pzogc3RyaW5nO1xuXG4gIC8qKiBGb3JtYXRvIGRlbCBhZCAqL1xuICBASW5wdXQoKSBmb3JtYXQ6IEFkRm9ybWF0ID0gJ2F1dG8nO1xuXG4gIC8qKiBGdWxsIHdpZHRoIHJlc3BvbnNpdmUgKi9cbiAgQElucHV0KCkgZnVsbFdpZHRoID0gdHJ1ZTtcblxuICAvKiogQ1NTIGNsYXNzIGFkaWNpb25hbCAqL1xuICBASW5wdXQoKSBjc3NDbGFzcyA9ICcnO1xuXG4gIC8qKiBBbHR1cmEgbWluaW1hICovXG4gIEBJbnB1dCgpIG1pbkhlaWdodCA9ICc5MHB4JztcblxuICAvKiogTW9zdHJhciBza2VsZXRvbiAqL1xuICBASW5wdXQoKSBzaG93U2tlbGV0b24gPSB0cnVlO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFU1RBRE9cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGUgPSBzaWduYWw8QWRTbG90U3RhdGU+KCdpZGxlJyk7XG4gIHJlYWRvbmx5IHN0YXRlID0gdGhpcy5fc3RhdGUuYXNSZWFkb25seSgpO1xuICBwcml2YXRlIGFkSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAvKiogSW5kaWNhIHNpIGVsIGNvbXBvbmVudGUgZGViZSByZW5kZXJpemFyc2UgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVuZGVyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vIE5vIHJlbmRlcml6YXIgZW4gU1NSXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gTm8gcmVuZGVyaXphciBzaSB1c3VhcmlvIGVzIHByZW1pdW1cbiAgICBpZiAodGhpcy5hZHNTZXJ2aWNlLmlzUHJlbWl1bVVzZXIoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE5vIHJlbmRlcml6YXIgc2kgYWRzIGVzdGFuIGRlc2hhYmlsaXRhZG9zIHkgYXVuIG5vIGluaWNpYWxpemFkb1xuICAgIGlmICghdGhpcy5hZHNTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTElGRUNZQ0xFXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5zaG91bGRSZW5kZXIoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlLnNldCgnbG9hZGluZycpO1xuICB9XG5cbiAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5zaG91bGRSZW5kZXIoKSB8fCB0aGlzLmFkSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVBZCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gQWRTZW5zZSBubyByZXF1aWVyZSBjbGVhbnVwIG1hbnVhbCBjb21vIEdQVFxuICAgIHRoaXMuYWRJbml0aWFsaXplZCA9IGZhbHNlO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEVcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0aWFsaXplQWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFJlZ2lzdHJhciBzbG90IHkgY2FyZ2FyIEFkU2Vuc2Ugc2kgbm8gZXN0YSBjYXJnYWRvXG4gICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgdGhpcy5hZHNTZXJ2aWNlLnJlZ2lzdGVyU2xvdCh0aGlzLnNsb3RJZCk7XG5cbiAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlLnNldCgncmVuZGVyZWQnKTtcbiAgICAgICAgdGhpcy5hZEluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy5hZHNTZXJ2aWNlLmlzRGVidWdNb2RlKCkpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgW1ZhbHRlY2hBZHNdIEFkIHNsb3QgJyR7dGhpcy5zbG90SWR9JyByZW5kZXJlZGAsIHtcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5mb3JtYXQsXG4gICAgICAgICAgICBhZFNsb3Q6IHRoaXMuYWRTbG90LFxuICAgICAgICAgICAgZnVsbFdpZHRoOiB0aGlzLmZ1bGxXaWR0aCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0KCdlbXB0eScpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbVmFsdGVjaEFkc10gRXJyb3IgaW5pdGlhbGl6aW5nIGFkIHNsb3QgJyR7dGhpcy5zbG90SWR9JzpgLCBlcnJvcik7XG4gICAgICB0aGlzLl9zdGF0ZS5zZXQoJ2Vycm9yJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Ads Loader Service
|
|
3
3
|
*
|
|
4
|
-
* Maneja la carga lazy del script
|
|
4
|
+
* Maneja la carga lazy del script de Google AdSense.
|
|
5
5
|
* Solo carga el script cuando se necesita el primer ad.
|
|
6
6
|
*/
|
|
7
7
|
import { Injectable, Inject, PLATFORM_ID, signal } from '@angular/core';
|
|
8
8
|
import { isPlatformBrowser } from '@angular/common';
|
|
9
9
|
import { VALTECH_ADS_CONFIG } from './config';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const GPT_SCRIPT_URL = 'https://securepubads.g.doubleclick.net/tag/js/gpt.js';
|
|
11
|
+
/** URL del script AdSense */
|
|
12
|
+
const ADSENSE_SCRIPT_URL = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
|
|
14
13
|
/**
|
|
15
|
-
* Servicio para cargar el script de Google
|
|
14
|
+
* Servicio para cargar el script de Google AdSense.
|
|
16
15
|
*
|
|
17
16
|
* Implementa lazy loading: el script solo se carga cuando
|
|
18
17
|
* se solicita renderizar el primer ad slot.
|
|
19
18
|
*/
|
|
20
19
|
export class AdsLoaderService {
|
|
21
|
-
constructor(config, platformId
|
|
20
|
+
constructor(config, platformId) {
|
|
22
21
|
this.config = config;
|
|
23
22
|
this.platformId = platformId;
|
|
24
|
-
this.consentService = consentService;
|
|
25
23
|
this._isLoading = signal(false);
|
|
26
24
|
this._isLoaded = signal(false);
|
|
27
25
|
this._error = signal(null);
|
|
@@ -34,19 +32,19 @@ export class AdsLoaderService {
|
|
|
34
32
|
this.loadPromise = null;
|
|
35
33
|
}
|
|
36
34
|
/**
|
|
37
|
-
* Carga el script
|
|
38
|
-
* Retorna
|
|
35
|
+
* Carga el script AdSense de forma lazy.
|
|
36
|
+
* Retorna true si se cargo correctamente, false si fallo.
|
|
39
37
|
*
|
|
40
|
-
* @returns Promise
|
|
38
|
+
* @returns Promise<boolean>
|
|
41
39
|
*/
|
|
42
|
-
|
|
40
|
+
loadAdSense() {
|
|
43
41
|
// SSR check
|
|
44
42
|
if (!isPlatformBrowser(this.platformId)) {
|
|
45
|
-
return Promise.resolve(
|
|
43
|
+
return Promise.resolve(false);
|
|
46
44
|
}
|
|
47
45
|
// Ya cargado
|
|
48
|
-
if (this._isLoaded()
|
|
49
|
-
return Promise.resolve(
|
|
46
|
+
if (this._isLoaded()) {
|
|
47
|
+
return Promise.resolve(true);
|
|
50
48
|
}
|
|
51
49
|
// Ya hay una carga en progreso
|
|
52
50
|
if (this.loadPromise) {
|
|
@@ -55,96 +53,58 @@ export class AdsLoaderService {
|
|
|
55
53
|
this._isLoading.set(true);
|
|
56
54
|
this._error.set(null);
|
|
57
55
|
this.loadPromise = new Promise((resolve) => {
|
|
58
|
-
// Inicializar
|
|
59
|
-
window.
|
|
60
|
-
const googletag = window.googletag;
|
|
56
|
+
// Inicializar adsbygoogle array
|
|
57
|
+
window.adsbygoogle = window.adsbygoogle || [];
|
|
61
58
|
// Crear script
|
|
62
59
|
const script = document.createElement('script');
|
|
63
60
|
script.async = true;
|
|
64
|
-
script.src =
|
|
61
|
+
script.src = ADSENSE_SCRIPT_URL;
|
|
62
|
+
script.crossOrigin = 'anonymous';
|
|
63
|
+
// Agregar data-ad-client (Publisher ID)
|
|
64
|
+
script.setAttribute('data-ad-client', this.config.adClient);
|
|
65
|
+
// Test mode para desarrollo
|
|
66
|
+
if (this.config.testMode) {
|
|
67
|
+
script.setAttribute('data-adtest', 'on');
|
|
68
|
+
}
|
|
65
69
|
script.onload = () => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
this._isLoaded.set(true);
|
|
71
|
+
this._isLoading.set(false);
|
|
72
|
+
if (this.config.debugMode) {
|
|
73
|
+
console.log('[ValtechAds] Script AdSense cargado', {
|
|
74
|
+
adClient: this.config.adClient,
|
|
75
|
+
testMode: this.config.testMode,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
resolve(true);
|
|
75
79
|
};
|
|
76
80
|
script.onerror = (error) => {
|
|
77
|
-
console.error('[ValtechAds] Error cargando
|
|
78
|
-
this._error.set(new Error('Error cargando Google
|
|
81
|
+
console.error('[ValtechAds] Error cargando AdSense:', error);
|
|
82
|
+
this._error.set(new Error('Error cargando Google AdSense'));
|
|
79
83
|
this._isLoading.set(false);
|
|
80
84
|
this.loadPromise = null;
|
|
81
|
-
resolve(
|
|
85
|
+
resolve(false);
|
|
82
86
|
};
|
|
83
|
-
// Insertar script
|
|
84
|
-
|
|
85
|
-
firstScript.parentNode?.insertBefore(script, firstScript);
|
|
87
|
+
// Insertar script en head
|
|
88
|
+
document.head.appendChild(script);
|
|
86
89
|
});
|
|
87
90
|
return this.loadPromise;
|
|
88
91
|
}
|
|
89
92
|
/**
|
|
90
|
-
*
|
|
91
|
-
*/
|
|
92
|
-
configureGPT(googletag) {
|
|
93
|
-
const pubads = googletag.pubads();
|
|
94
|
-
// Single Request Architecture para mejor performance
|
|
95
|
-
pubads.enableSingleRequest();
|
|
96
|
-
// Colapsar divs vacios antes de fetch
|
|
97
|
-
pubads.collapseEmptyDivs(true);
|
|
98
|
-
// Lazy loading nativo de GPT
|
|
99
|
-
if (this.config.lazyLoad && this.config.lazyLoadConfig) {
|
|
100
|
-
pubads.enableLazyLoad({
|
|
101
|
-
fetchMarginPercent: this.config.lazyLoadConfig.fetchMarginPercent,
|
|
102
|
-
renderMarginPercent: this.config.lazyLoadConfig.renderMarginPercent,
|
|
103
|
-
mobileScaling: 2.0,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
// Targeting global
|
|
107
|
-
if (this.config.globalTargeting) {
|
|
108
|
-
for (const [key, value] of Object.entries(this.config.globalTargeting)) {
|
|
109
|
-
pubads.setTargeting(key, value);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Non-personalized ads segun consent
|
|
113
|
-
if (!this.consentService.canPersonalize()) {
|
|
114
|
-
pubads.setRequestNonPersonalizedAds(1);
|
|
115
|
-
}
|
|
116
|
-
// Event listeners
|
|
117
|
-
pubads.addEventListener('slotRenderEnded', (event) => {
|
|
118
|
-
const slotId = event.slot.getSlotElementId();
|
|
119
|
-
if (this.config.debugMode) {
|
|
120
|
-
console.log(`[ValtechAds] Slot ${slotId} rendered, empty: ${event.isEmpty}`);
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
// Debug mode
|
|
124
|
-
if (this.config.debugMode) {
|
|
125
|
-
console.log('[ValtechAds] GPT configurado:', {
|
|
126
|
-
lazyLoad: this.config.lazyLoad,
|
|
127
|
-
personalized: this.consentService.canPersonalize(),
|
|
128
|
-
targeting: this.config.globalTargeting,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Verifica si el script GPT esta disponible.
|
|
93
|
+
* Verifica si el script AdSense esta disponible.
|
|
134
94
|
*/
|
|
135
|
-
|
|
136
|
-
return isPlatformBrowser(this.platformId) && !!window.
|
|
95
|
+
isAdSenseAvailable() {
|
|
96
|
+
return isPlatformBrowser(this.platformId) && !!window.adsbygoogle && this._isLoaded();
|
|
137
97
|
}
|
|
138
98
|
/**
|
|
139
|
-
*
|
|
99
|
+
* Ejecuta un comando AdSense (push a la queue).
|
|
100
|
+
* Usado internamente para activar ad slots.
|
|
140
101
|
*/
|
|
141
|
-
|
|
142
|
-
if (this.
|
|
143
|
-
|
|
102
|
+
pushAdCommand() {
|
|
103
|
+
if (this.isAdSenseAvailable() && window.adsbygoogle) {
|
|
104
|
+
window.adsbygoogle.push({});
|
|
144
105
|
}
|
|
145
|
-
return null;
|
|
146
106
|
}
|
|
147
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdsLoaderService, deps: [{ token: VALTECH_ADS_CONFIG }, { token: PLATFORM_ID }
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdsLoaderService, deps: [{ token: VALTECH_ADS_CONFIG }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
148
108
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdsLoaderService, providedIn: 'root' }); }
|
|
149
109
|
}
|
|
150
110
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdsLoaderService, decorators: [{
|
|
@@ -156,5 +116,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
156
116
|
}] }, { type: Object, decorators: [{
|
|
157
117
|
type: Inject,
|
|
158
118
|
args: [PLATFORM_ID]
|
|
159
|
-
}] }
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRzLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hZHMvYWRzLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUk5Qyx5QkFBeUI7QUFDekIsTUFBTSxjQUFjLEdBQUcsc0RBQXNELENBQUM7QUFFOUU7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBZ0IzQixZQUNzQyxNQUF3QixFQUMvQixVQUFrQixFQUN2QyxjQUFpQztRQUZMLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQy9CLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDdkMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBbEIxQixlQUFVLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkMsV0FBTSxHQUFHLE1BQU0sQ0FBZSxJQUFJLENBQUMsQ0FBQztRQUVyRCx3Q0FBd0M7UUFDL0IsY0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEQsdUNBQXVDO1FBQzlCLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWhELGlDQUFpQztRQUN4QixVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxnQkFBVyxHQUF3QyxJQUFJLENBQUM7SUFNN0QsQ0FBQztJQUVKOzs7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QUUsQ0FBQztnQkFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsTUFBTSxxQkFBcUIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDL0UsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFO2dCQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2dCQUM5QixZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUU7Z0JBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWU7YUFDdkMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDMUIsT0FBTyxNQUFNLENBQUMsU0FBVSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBekpVLGdCQUFnQixrQkFpQmpCLGtCQUFrQixhQUNsQixXQUFXO21IQWxCVixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBa0I3QixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWRzIExvYWRlciBTZXJ2aWNlXG4gKlxuICogTWFuZWphIGxhIGNhcmdhIGxhenkgZGVsIHNjcmlwdCBHUFQgKEdvb2dsZSBQdWJsaXNoZXIgVGFnKS5cbiAqIFNvbG8gY2FyZ2EgZWwgc2NyaXB0IGN1YW5kbyBzZSBuZWNlc2l0YSBlbCBwcmltZXIgYWQuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IFZBTFRFQ0hfQURTX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IFZhbHRlY2hBZHNDb25maWcsIEdQVE5hbWVzcGFjZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQWRzQ29uc2VudFNlcnZpY2UgfSBmcm9tICcuL2Fkcy1jb25zZW50LnNlcnZpY2UnO1xuXG4vKiogVVJMIGRlbCBzY3JpcHQgR1BUICovXG5jb25zdCBHUFRfU0NSSVBUX1VSTCA9ICdodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC90YWcvanMvZ3B0LmpzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIGNhcmdhciBlbCBzY3JpcHQgZGUgR29vZ2xlIFB1Ymxpc2hlciBUYWdzLlxuICpcbiAqIEltcGxlbWVudGEgbGF6eSBsb2FkaW5nOiBlbCBzY3JpcHQgc29sbyBzZSBjYXJnYSBjdWFuZG9cbiAqIHNlIHNvbGljaXRhIHJlbmRlcml6YXIgZWwgcHJpbWVyIGFkIHNsb3QuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQWRzTG9hZGVyU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzTG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzTG9hZGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXJyb3IgPSBzaWduYWw8RXJyb3IgfCBudWxsPihudWxsKTtcblxuICAvKiogSW5kaWNhIHNpIGVsIHNjcmlwdCBlc3RhIGNhcmdhbmRvICovXG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IHRoaXMuX2lzTG9hZGluZy5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIEluZGljYSBzaSBlbCBzY3JpcHQgZXN0YSBjYXJnYWRvICovXG4gIHJlYWRvbmx5IGlzTG9hZGVkID0gdGhpcy5faXNMb2FkZWQuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBFcnJvciBkZSBjYXJnYSAoc2kgZXhpc3RlKSAqL1xuICByZWFkb25seSBlcnJvciA9IHRoaXMuX2Vycm9yLmFzUmVhZG9ubHkoKTtcblxuICBwcml2YXRlIGxvYWRQcm9taXNlOiBQcm9taXNlPEdQVE5hbWVzcGFjZSB8IG51bGw+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWQUxURUNIX0FEU19DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQWRzQ29uZmlnLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIHByaXZhdGUgY29uc2VudFNlcnZpY2U6IEFkc0NvbnNlbnRTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2FyZ2EgZWwgc2NyaXB0IEdQVCBkZSBmb3JtYSBsYXp5LlxuICAgKiBSZXRvcm5hIGxhIGluc3RhbmNpYSBkZSBnb29nbGV0YWcgbyBudWxsIHNpIGZhbGxhLlxuICAgKlxuICAgKiBAcmV0dXJucyBQcm9taXNlIGNvbiBnb29nbGV0YWcgbyBudWxsXG4gICAqL1xuICBsb2FkR1BUKCk6IFByb21pc2U8R1BUTmFtZXNwYWNlIHwgbnVsbD4ge1xuICAgIC8vIFNTUiBjaGVja1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG5cbiAgICAvLyBZYSBjYXJnYWRvXG4gICAgaWYgKHRoaXMuX2lzTG9hZGVkKCkgJiYgd2luZG93Lmdvb2dsZXRhZykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh3aW5kb3cuZ29vZ2xldGFnKTtcbiAgICB9XG5cbiAgICAvLyBZYSBoYXkgdW5hIGNhcmdhIGVuIHByb2dyZXNvXG4gICAgaWYgKHRoaXMubG9hZFByb21pc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvYWRQcm9taXNlO1xuICAgIH1cblxuICAgIHRoaXMuX2lzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5fZXJyb3Iuc2V0KG51bGwpO1xuXG4gICAgdGhpcy5sb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlPEdQVE5hbWVzcGFjZSB8IG51bGw+KChyZXNvbHZlKSA9PiB7XG4gICAgICAvLyBJbmljaWFsaXphciBjbWQgcXVldWVcbiAgICAgIHdpbmRvdy5nb29nbGV0YWcgPSB3aW5kb3cuZ29vZ2xldGFnIHx8ICh7IGNtZDogW10gfSBhcyBHUFROYW1lc3BhY2UpO1xuICAgICAgY29uc3QgZ29vZ2xldGFnID0gd2luZG93Lmdvb2dsZXRhZztcblxuICAgICAgLy8gQ3JlYXIgc2NyaXB0XG4gICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgICBzY3JpcHQuc3JjID0gR1BUX1NDUklQVF9VUkw7XG5cbiAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGdvb2dsZXRhZy5jbWQucHVzaCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmVHUFQoZ29vZ2xldGFnKTtcbiAgICAgICAgICB0aGlzLl9pc0xvYWRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5faXNMb2FkaW5nLnNldChmYWxzZSk7XG5cbiAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWdNb2RlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW1ZhbHRlY2hBZHNdIFNjcmlwdCBHUFQgY2FyZ2FkbyB5IGNvbmZpZ3VyYWRvJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShnb29nbGV0YWcpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHNjcmlwdC5vbmVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tWYWx0ZWNoQWRzXSBFcnJvciBjYXJnYW5kbyBHUFQ6JywgZXJyb3IpO1xuICAgICAgICB0aGlzLl9lcnJvci5zZXQobmV3IEVycm9yKCdFcnJvciBjYXJnYW5kbyBHb29nbGUgUHVibGlzaGVyIFRhZycpKTtcbiAgICAgICAgdGhpcy5faXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMubG9hZFByb21pc2UgPSBudWxsO1xuICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgfTtcblxuICAgICAgLy8gSW5zZXJ0YXIgc2NyaXB0XG4gICAgICBjb25zdCBmaXJzdFNjcmlwdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgIGZpcnN0U2NyaXB0LnBhcmVudE5vZGU/Lmluc2VydEJlZm9yZShzY3JpcHQsIGZpcnN0U2NyaXB0KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmxvYWRQcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYSBHUFQgY29uIGxhcyBvcGNpb25lcyBkZSBsYSBhcGxpY2FjaW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBjb25maWd1cmVHUFQoZ29vZ2xldGFnOiBHUFROYW1lc3BhY2UpOiB2b2lkIHtcbiAgICBjb25zdCBwdWJhZHMgPSBnb29nbGV0YWcucHViYWRzKCk7XG5cbiAgICAvLyBTaW5nbGUgUmVxdWVzdCBBcmNoaXRlY3R1cmUgcGFyYSBtZWpvciBwZXJmb3JtYW5jZVxuICAgIHB1YmFkcy5lbmFibGVTaW5nbGVSZXF1ZXN0KCk7XG5cbiAgICAvLyBDb2xhcHNhciBkaXZzIHZhY2lvcyBhbnRlcyBkZSBmZXRjaFxuICAgIHB1YmFkcy5jb2xsYXBzZUVtcHR5RGl2cyh0cnVlKTtcblxuICAgIC8vIExhenkgbG9hZGluZyBuYXRpdm8gZGUgR1BUXG4gICAgaWYgKHRoaXMuY29uZmlnLmxhenlMb2FkICYmIHRoaXMuY29uZmlnLmxhenlMb2FkQ29uZmlnKSB7XG4gICAgICBwdWJhZHMuZW5hYmxlTGF6eUxvYWQoe1xuICAgICAgICBmZXRjaE1hcmdpblBlcmNlbnQ6IHRoaXMuY29uZmlnLmxhenlMb2FkQ29uZmlnLmZldGNoTWFyZ2luUGVyY2VudCxcbiAgICAgICAgcmVuZGVyTWFyZ2luUGVyY2VudDogdGhpcy5jb25maWcubGF6eUxvYWRDb25maWcucmVuZGVyTWFyZ2luUGVyY2VudCxcbiAgICAgICAgbW9iaWxlU2NhbGluZzogMi4wLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVGFyZ2V0aW5nIGdsb2JhbFxuICAgIGlmICh0aGlzLmNvbmZpZy5nbG9iYWxUYXJnZXRpbmcpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnLmdsb2JhbFRhcmdldGluZykpIHtcbiAgICAgICAgcHViYWRzLnNldFRhcmdldGluZyhrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOb24tcGVyc29uYWxpemVkIGFkcyBzZWd1biBjb25zZW50XG4gICAgaWYgKCF0aGlzLmNvbnNlbnRTZXJ2aWNlLmNhblBlcnNvbmFsaXplKCkpIHtcbiAgICAgIHB1YmFkcy5zZXRSZXF1ZXN0Tm9uUGVyc29uYWxpemVkQWRzKDEpO1xuICAgIH1cblxuICAgIC8vIEV2ZW50IGxpc3RlbmVyc1xuICAgIHB1YmFkcy5hZGRFdmVudExpc3RlbmVyKCdzbG90UmVuZGVyRW5kZWQnLCAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHNsb3RJZCA9IGV2ZW50LnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpO1xuICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnTW9kZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgW1ZhbHRlY2hBZHNdIFNsb3QgJHtzbG90SWR9IHJlbmRlcmVkLCBlbXB0eTogJHtldmVudC5pc0VtcHR5fWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gRGVidWcgbW9kZVxuICAgIGlmICh0aGlzLmNvbmZpZy5kZWJ1Z01vZGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbVmFsdGVjaEFkc10gR1BUIGNvbmZpZ3VyYWRvOicsIHtcbiAgICAgICAgbGF6eUxvYWQ6IHRoaXMuY29uZmlnLmxhenlMb2FkLFxuICAgICAgICBwZXJzb25hbGl6ZWQ6IHRoaXMuY29uc2VudFNlcnZpY2UuY2FuUGVyc29uYWxpemUoKSxcbiAgICAgICAgdGFyZ2V0aW5nOiB0aGlzLmNvbmZpZy5nbG9iYWxUYXJnZXRpbmcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgZWwgc2NyaXB0IEdQVCBlc3RhIGRpc3BvbmlibGUuXG4gICAqL1xuICBpc0dQVEF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiAhIXdpbmRvdy5nb29nbGV0YWcgJiYgdGhpcy5faXNMb2FkZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIGluc3RhbmNpYSBkZSBnb29nbGV0YWcgc2kgZXN0YSBjYXJnYWRhLlxuICAgKi9cbiAgZ2V0R1BUKCk6IEdQVE5hbWVzcGFjZSB8IG51bGwge1xuICAgIGlmICh0aGlzLmlzR1BUQXZhaWxhYmxlKCkpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZ29vZ2xldGFnITtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
119
|
+
}] }] });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRzLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hZHMvYWRzLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRzlDLDZCQUE2QjtBQUM3QixNQUFNLGtCQUFrQixHQUFHLGdFQUFnRSxDQUFDO0FBRTVGOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQWdCM0IsWUFDc0MsTUFBd0IsRUFDL0IsVUFBa0I7UUFEWCxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBakJoQyxlQUFVLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkMsV0FBTSxHQUFHLE1BQU0sQ0FBZSxJQUFJLENBQUMsQ0FBQztRQUVyRCx3Q0FBd0M7UUFDL0IsY0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEQsdUNBQXVDO1FBQzlCLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWhELGlDQUFpQztRQUN4QixVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxnQkFBVyxHQUE0QixJQUFJLENBQUM7SUFLakQsQ0FBQztJQUVKOzs7OztPQUtHO0lBQ0gsV0FBVztRQUNULFlBQVk7UUFDWixJQUFJLENB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QUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN4RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDOytHQTVHVSxnQkFBZ0Isa0JBaUJqQixrQkFBa0IsYUFDbEIsV0FBVzttSEFsQlYsZ0JBQWdCLGNBREgsTUFBTTs7NEZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQWtCN0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFkcyBMb2FkZXIgU2VydmljZVxuICpcbiAqIE1hbmVqYSBsYSBjYXJnYSBsYXp5IGRlbCBzY3JpcHQgZGUgR29vZ2xlIEFkU2Vuc2UuXG4gKiBTb2xvIGNhcmdhIGVsIHNjcmlwdCBjdWFuZG8gc2UgbmVjZXNpdGEgZWwgcHJpbWVyIGFkLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgUExBVEZPUk1fSUQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBWQUxURUNIX0FEU19DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBWYWx0ZWNoQWRzQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKiBVUkwgZGVsIHNjcmlwdCBBZFNlbnNlICovXG5jb25zdCBBRFNFTlNFX1NDUklQVF9VUkwgPSAnaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanMnO1xuXG4vKipcbiAqIFNlcnZpY2lvIHBhcmEgY2FyZ2FyIGVsIHNjcmlwdCBkZSBHb29nbGUgQWRTZW5zZS5cbiAqXG4gKiBJbXBsZW1lbnRhIGxhenkgbG9hZGluZzogZWwgc2NyaXB0IHNvbG8gc2UgY2FyZ2EgY3VhbmRvXG4gKiBzZSBzb2xpY2l0YSByZW5kZXJpemFyIGVsIHByaW1lciBhZCBzbG90LlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFkc0xvYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0xvYWRlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vycm9yID0gc2lnbmFsPEVycm9yIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqIEluZGljYSBzaSBlbCBzY3JpcHQgZXN0YSBjYXJnYW5kbyAqL1xuICByZWFkb25seSBpc0xvYWRpbmcgPSB0aGlzLl9pc0xvYWRpbmcuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBJbmRpY2Egc2kgZWwgc2NyaXB0IGVzdGEgY2FyZ2FkbyAqL1xuICByZWFkb25seSBpc0xvYWRlZCA9IHRoaXMuX2lzTG9hZGVkLmFzUmVhZG9ubHkoKTtcblxuICAvKiogRXJyb3IgZGUgY2FyZ2EgKHNpIGV4aXN0ZSkgKi9cbiAgcmVhZG9ubHkgZXJyb3IgPSB0aGlzLl9lcnJvci5hc1JlYWRvbmx5KCk7XG5cbiAgcHJpdmF0ZSBsb2FkUHJvbWlzZTogUHJvbWlzZTxib29sZWFuPiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVkFMVEVDSF9BRFNfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVmFsdGVjaEFkc0NvbmZpZyxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdFxuICApIHt9XG5cbiAgLyoqXG4gICAqIENhcmdhIGVsIHNjcmlwdCBBZFNlbnNlIGRlIGZvcm1hIGxhenkuXG4gICAqIFJldG9ybmEgdHJ1ZSBzaSBzZSBjYXJnbyBjb3JyZWN0YW1lbnRlLCBmYWxzZSBzaSBmYWxsby5cbiAgICpcbiAgICogQHJldHVybnMgUHJvbWlzZTxib29sZWFuPlxuICAgKi9cbiAgbG9hZEFkU2Vuc2UoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gU1NSIGNoZWNrXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBZYSBjYXJnYWRvXG4gICAgaWYgKHRoaXMuX2lzTG9hZGVkKCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gWWEgaGF5IHVuYSBjYXJnYSBlbiBwcm9ncmVzb1xuICAgIGlmICh0aGlzLmxvYWRQcm9taXNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkUHJvbWlzZTtcbiAgICB9XG5cbiAgICB0aGlzLl9pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuX2Vycm9yLnNldChudWxsKTtcblxuICAgIHRoaXMubG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSkgPT4ge1xuICAgICAgLy8gSW5pY2lhbGl6YXIgYWRzYnlnb29nbGUgYXJyYXlcbiAgICAgIHdpbmRvdy5hZHNieWdvb2dsZSA9IHdpbmRvdy5hZHNieWdvb2dsZSB8fCBbXTtcblxuICAgICAgLy8gQ3JlYXIgc2NyaXB0XG4gICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgICBzY3JpcHQuc3JjID0gQURTRU5TRV9TQ1JJUFRfVVJMO1xuICAgICAgc2NyaXB0LmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XG5cbiAgICAgIC8vIEFncmVnYXIgZGF0YS1hZC1jbGllbnQgKFB1Ymxpc2hlciBJRClcbiAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYWQtY2xpZW50JywgdGhpcy5jb25maWcuYWRDbGllbnQpO1xuXG4gICAgICAvLyBUZXN0IG1vZGUgcGFyYSBkZXNhcnJvbGxvXG4gICAgICBpZiAodGhpcy5jb25maWcudGVzdE1vZGUpIHtcbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnZGF0YS1hZHRlc3QnLCAnb24nKTtcbiAgICAgIH1cblxuICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5faXNMb2FkZWQuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLl9pc0xvYWRpbmcuc2V0KGZhbHNlKTtcblxuICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWdNb2RlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1tWYWx0ZWNoQWRzXSBTY3JpcHQgQWRTZW5zZSBjYXJnYWRvJywge1xuICAgICAgICAgICAgYWRDbGllbnQ6IHRoaXMuY29uZmlnLmFkQ2xpZW50LFxuICAgICAgICAgICAgdGVzdE1vZGU6IHRoaXMuY29uZmlnLnRlc3RNb2RlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIHNjcmlwdC5vbmVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tWYWx0ZWNoQWRzXSBFcnJvciBjYXJnYW5kbyBBZFNlbnNlOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5fZXJyb3Iuc2V0KG5ldyBFcnJvcignRXJyb3IgY2FyZ2FuZG8gR29vZ2xlIEFkU2Vuc2UnKSk7XG4gICAgICAgIHRoaXMuX2lzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmxvYWRQcm9taXNlID0gbnVsbDtcbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9O1xuXG4gICAgICAvLyBJbnNlcnRhciBzY3JpcHQgZW4gaGVhZFxuICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMubG9hZFByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgZWwgc2NyaXB0IEFkU2Vuc2UgZXN0YSBkaXNwb25pYmxlLlxuICAgKi9cbiAgaXNBZFNlbnNlQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmICEhd2luZG93LmFkc2J5Z29vZ2xlICYmIHRoaXMuX2lzTG9hZGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogRWplY3V0YSB1biBjb21hbmRvIEFkU2Vuc2UgKHB1c2ggYSBsYSBxdWV1ZSkuXG4gICAqIFVzYWRvIGludGVybmFtZW50ZSBwYXJhIGFjdGl2YXIgYWQgc2xvdHMuXG4gICAqL1xuICBwdXNoQWRDb21tYW5kKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQWRTZW5zZUF2YWlsYWJsZSgpICYmIHdpbmRvdy5hZHNieWdvb2dsZSkge1xuICAgICAgd2luZG93LmFkc2J5Z29vZ2xlLnB1c2goe30pO1xuICAgIH1cbiAgfVxufVxuIl19
|