valtech-components 4.0.493 → 4.0.495
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/organisms/mini-games/chessimals-game.component.mjs +53 -19
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +53 -19
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +4 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -236,6 +236,10 @@ export class ChessimalsGameComponent {
|
|
|
236
236
|
return undefined;
|
|
237
237
|
return this.challengeLadder[Math.max(0, run.currentRound - 1)];
|
|
238
238
|
});
|
|
239
|
+
this.resumableChallengeRun = computed(() => {
|
|
240
|
+
const run = this.activeStoredChallengeRun();
|
|
241
|
+
return this.isResumableChallengeRun(run) ? run : undefined;
|
|
242
|
+
});
|
|
239
243
|
this.miniGamesRoute = '/mini-games';
|
|
240
244
|
this.projectionMode = false;
|
|
241
245
|
this.replayEntries = computed(() => this.game().moveHistory ?? []);
|
|
@@ -772,11 +776,15 @@ export class ChessimalsGameComponent {
|
|
|
772
776
|
return Math.min(100, Math.max(0, Math.round(raw)));
|
|
773
777
|
}
|
|
774
778
|
startChallenge() {
|
|
775
|
-
if (!this.isChallengeActive() && this.
|
|
779
|
+
if (!this.isChallengeActive() && this.resumableChallengeRun()) {
|
|
776
780
|
this.confirmAction.set('challenge-new');
|
|
777
781
|
this.audio.flip();
|
|
778
782
|
return;
|
|
779
783
|
}
|
|
784
|
+
const staleRun = this.activeStoredChallengeRun();
|
|
785
|
+
if (staleRun && !this.isResumableChallengeRun(staleRun)) {
|
|
786
|
+
this.abandonChallengeRun(staleRun);
|
|
787
|
+
}
|
|
780
788
|
this.createNewChallengeRun();
|
|
781
789
|
}
|
|
782
790
|
openChallengeView() {
|
|
@@ -817,8 +825,10 @@ export class ChessimalsGameComponent {
|
|
|
817
825
|
});
|
|
818
826
|
}
|
|
819
827
|
resumeChallenge(run = this.activeStoredChallengeRun()) {
|
|
820
|
-
if (!run
|
|
828
|
+
if (!this.isResumableChallengeRun(run)) {
|
|
829
|
+
this.activeStoredChallengeRun.set(undefined);
|
|
821
830
|
return;
|
|
831
|
+
}
|
|
822
832
|
this.challengeRun.set(run);
|
|
823
833
|
this.challengeLastWon.set(undefined);
|
|
824
834
|
this.challengeLastBot.set(undefined);
|
|
@@ -882,6 +892,19 @@ export class ChessimalsGameComponent {
|
|
|
882
892
|
this.focusBoardSoon();
|
|
883
893
|
this.queueBotTurnIfNeeded();
|
|
884
894
|
}
|
|
895
|
+
isResumableChallengeRun(run) {
|
|
896
|
+
if (!run || run.status !== 'active')
|
|
897
|
+
return false;
|
|
898
|
+
if (run.livesRemaining <= 0)
|
|
899
|
+
return false;
|
|
900
|
+
if (run.currentRound < 1 || run.currentRound > this.challengeLadder.length)
|
|
901
|
+
return false;
|
|
902
|
+
if (run.wins >= this.challengeLadder.length)
|
|
903
|
+
return false;
|
|
904
|
+
if (run.currentRound !== run.wins + 1)
|
|
905
|
+
return false;
|
|
906
|
+
return !!this.challengeLadder[run.currentRound - 1];
|
|
907
|
+
}
|
|
885
908
|
startGame() {
|
|
886
909
|
this.onlineSubscription?.unsubscribe();
|
|
887
910
|
this.openedOnlineGameId = undefined;
|
|
@@ -2305,7 +2328,7 @@ export class ChessimalsGameComponent {
|
|
|
2305
2328
|
error: () => this.challengeHistory.set([]),
|
|
2306
2329
|
});
|
|
2307
2330
|
this.challengeActiveRunSubscription = this.challengeProgress.watchActiveRun().subscribe({
|
|
2308
|
-
next: (run) => this.activeStoredChallengeRun.set(run),
|
|
2331
|
+
next: (run) => this.activeStoredChallengeRun.set(this.isResumableChallengeRun(run) ? run : undefined),
|
|
2309
2332
|
error: () => this.activeStoredChallengeRun.set(undefined),
|
|
2310
2333
|
});
|
|
2311
2334
|
}
|
|
@@ -2350,6 +2373,10 @@ export class ChessimalsGameComponent {
|
|
|
2350
2373
|
return this.challengeLadder[0];
|
|
2351
2374
|
}
|
|
2352
2375
|
challengeMenuBot() {
|
|
2376
|
+
const activeRun = this.resumableChallengeRun();
|
|
2377
|
+
if (activeRun) {
|
|
2378
|
+
return this.challengeLadder[Math.max(0, activeRun.currentRound - 1)] ?? this.challengeLadder[0];
|
|
2379
|
+
}
|
|
2353
2380
|
const bestRound = this.challengeStats().bestRoundReached;
|
|
2354
2381
|
const nextRoundIndex = Math.min(Math.max(bestRound, 0), this.challengeLadder.length - 1);
|
|
2355
2382
|
return this.challengeLadder[nextRoundIndex];
|
|
@@ -2357,6 +2384,12 @@ export class ChessimalsGameComponent {
|
|
|
2357
2384
|
challengeMenuRoundLabel() {
|
|
2358
2385
|
return `${this.challengeMenuBot().round}/${this.challengeLadder.length}`;
|
|
2359
2386
|
}
|
|
2387
|
+
challengeMenuClearedRound() {
|
|
2388
|
+
const activeRun = this.resumableChallengeRun();
|
|
2389
|
+
if (activeRun)
|
|
2390
|
+
return Math.max(0, activeRun.currentRound - 1);
|
|
2391
|
+
return this.challengeStats().bestRoundReached;
|
|
2392
|
+
}
|
|
2360
2393
|
challengeBotName(bot) {
|
|
2361
2394
|
const profile = this.challengeBotProfile(bot);
|
|
2362
2395
|
return profile ? this.botProfileLabel(profile) : this.t('chessimalsBotName');
|
|
@@ -2369,10 +2402,11 @@ export class ChessimalsGameComponent {
|
|
|
2369
2402
|
return profile ? this.botProfileTendency(profile) : this.t(bot.introKey);
|
|
2370
2403
|
}
|
|
2371
2404
|
challengeBotStatusLabel(bot) {
|
|
2372
|
-
const
|
|
2373
|
-
|
|
2405
|
+
const clearedRound = this.challengeMenuClearedRound();
|
|
2406
|
+
const currentRound = this.challengeMenuBot().round;
|
|
2407
|
+
if (clearedRound >= bot.round)
|
|
2374
2408
|
return this.t('chessimalsChallengeRivalCleared');
|
|
2375
|
-
if (
|
|
2409
|
+
if (currentRound === bot.round)
|
|
2376
2410
|
return this.t('chessimalsChallengeRivalCurrent');
|
|
2377
2411
|
if (bot.round === this.challengeLadder.length)
|
|
2378
2412
|
return this.t('chessimalsChallengeRivalFinal');
|
|
@@ -3017,7 +3051,7 @@ export class ChessimalsGameComponent {
|
|
|
3017
3051
|
</span>
|
|
3018
3052
|
</div>
|
|
3019
3053
|
<button class="chessimals-primary" type="button" (click)="openChallengeView()">
|
|
3020
|
-
{{
|
|
3054
|
+
{{ resumableChallengeRun() ? t('chessimalsChallengeResume') : t('chessimalsChallengeOpen') }}
|
|
3021
3055
|
</button>
|
|
3022
3056
|
</article>
|
|
3023
3057
|
|
|
@@ -3192,13 +3226,13 @@ export class ChessimalsGameComponent {
|
|
|
3192
3226
|
<p>{{ t('chessimalsChallengeBody') }}</p>
|
|
3193
3227
|
</div>
|
|
3194
3228
|
<div class="chessimals-challenge-card__actions chessimals-challenge-card__actions--hero">
|
|
3195
|
-
@if (
|
|
3229
|
+
@if (resumableChallengeRun(); as activeRun) {
|
|
3196
3230
|
<button class="chessimals-primary" type="button" (click)="resumeChallenge(activeRun)">
|
|
3197
3231
|
{{ t('chessimalsChallengeResume') }}
|
|
3198
3232
|
</button>
|
|
3199
3233
|
}
|
|
3200
3234
|
<button class="chessimals-primary" type="button" (click)="startChallenge()">
|
|
3201
|
-
{{
|
|
3235
|
+
{{ resumableChallengeRun() ? t('chessimalsChallengeStartNew') : t('chessimalsChallengeStart') }}
|
|
3202
3236
|
</button>
|
|
3203
3237
|
</div>
|
|
3204
3238
|
</div>
|
|
@@ -3242,7 +3276,7 @@ export class ChessimalsGameComponent {
|
|
|
3242
3276
|
<div class="chessimals-challenge-path" [attr.aria-label]="t('chessimalsChallengePath')">
|
|
3243
3277
|
@for (bot of challengeLadder; track bot.id) {
|
|
3244
3278
|
<span
|
|
3245
|
-
[class.is-cleared]="
|
|
3279
|
+
[class.is-cleared]="challengeMenuClearedRound() >= bot.round"
|
|
3246
3280
|
[class.is-current]="challengeMenuBot().round === bot.round"
|
|
3247
3281
|
[class.is-final]="bot.round === challengeLadder.length"
|
|
3248
3282
|
[attr.title]="challengeBotName(bot)"
|
|
@@ -3309,7 +3343,7 @@ export class ChessimalsGameComponent {
|
|
|
3309
3343
|
<div class="chessimals-challenge-roster" [attr.aria-label]="t('chessimalsChallengeRivals')">
|
|
3310
3344
|
@for (bot of challengeLadder; track bot.id) {
|
|
3311
3345
|
<article
|
|
3312
|
-
[class.is-cleared]="
|
|
3346
|
+
[class.is-cleared]="challengeMenuClearedRound() >= bot.round"
|
|
3313
3347
|
[class.is-current]="challengeMenuBot().round === bot.round"
|
|
3314
3348
|
[class.is-final]="bot.round === challengeLadder.length"
|
|
3315
3349
|
>
|
|
@@ -4354,7 +4388,7 @@ export class ChessimalsGameComponent {
|
|
|
4354
4388
|
/>
|
|
4355
4389
|
</ng-template>
|
|
4356
4390
|
</ion-modal>
|
|
4357
|
-
`, isInline: true, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__paw{display:grid;place-items:center;width:clamp(4.6rem,16vw,5.6rem);height:clamp(4.6rem,16vw,5.6rem);border-radius:1.55rem;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.96),transparent 34%),linear-gradient(145deg,#fffffff5,rgba(var(--chessimals-secondary-rgb),.22)),color-mix(in srgb,var(--chessimals-panel) 82%,white);border:.12rem solid rgba(var(--chessimals-primary-rgb),.22);box-shadow:0 1.15rem 2.6rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.16),0 0 0 .42rem var(--chessimals-elevated-soft),inset 0 -.25rem .6rem rgba(var(--chessimals-primary-rgb),.08);animation:chessimals-resume-pulse 1.2s ease-in-out infinite;font-size:clamp(2.45rem,9vw,3.35rem);line-height:1;filter:drop-shadow(0 .28rem .38rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;width:min(22rem,82vw);max-width:100%;padding:.5rem;border-radius:1.35rem;background:#fff;box-shadow:0 1rem 2.5rem #2e3a2c1a,inset 0 0 0 1px #2e3a2c14}.chessimals-hero__logo img{display:block;width:100%;height:auto;max-height:12rem;object-fit:contain;border-radius:1rem}.chessimals-hero h1{margin:0;font-size:clamp(2.4rem,9vw,4.5rem);line-height:.95;font-weight:950}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-game,.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-game{display:grid;gap:.875rem}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>span{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-challenge-rival>span{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>span{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-progress{display:grid;gap:.75rem}.chessimals-progress-hero{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:.75rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.8rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated-soft)}.chessimals-progress-hero>div:first-child{display:grid;gap:.14rem;align-content:center;min-width:0}.chessimals-progress-hero small,.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress-hero strong{color:var(--chessimals-text);font-size:clamp(1.45rem,5vw,2.1rem);font-weight:1000;line-height:1}.chessimals-progress-hero p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820}.chessimals-progress-hero__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-progress-hero__stats span{display:grid;gap:.08rem;align-content:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated)}.chessimals-progress-hero__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-progress__panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:8px;padding:.75rem;background:var(--chessimals-elevated-soft)}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-progress__panel>small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.chessimals-progress__metrics span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.5rem;background:var(--chessimals-elevated)}.chessimals-progress__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-progress__metrics strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-mode-winrates--modal,.chessimals-achievements--modal{width:100%}.chessimals-mode-winrates--modal{grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-achievements--modal{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-challenge-history--modal{border-top:0;padding-top:0}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1rem;padding:.8rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),var(--chessimals-elevated-soft)}.chessimals-challenge-summary.is-victory{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.32);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.12),transparent),var(--chessimals-elevated)}.chessimals-challenge-summary.is-defeat{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-elevated)}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>span,.chessimals-challenge-rival-voice>span{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-rival-voice>span{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>span{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>span{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}.chessimals-power-callout{--power-accent-rgb: var(--chessimals-magic-rgb);position:absolute;left:50%;bottom:.75rem;z-index:7;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.55rem;align-items:center;width:min(21rem,calc(100% - 1rem));border:1px solid rgba(var(--power-accent-rgb),.48);border-radius:8px;padding:.56rem .62rem;background:linear-gradient(135deg,rgba(var(--power-accent-rgb),.2),rgba(var(--power-accent-rgb),.06) 54%,transparent),var(--chessimals-elevated-strong);box-shadow:0 .85rem 1.7rem rgba(var(--chessimals-shadow-rgb),.2),0 0 1.15rem rgba(var(--power-accent-rgb),.28);color:var(--chessimals-text);pointer-events:none;transform:translate(-50%);animation:chessimals-power-callout .95s ease-out both}.chessimals-power-callout.is-capture{border-color:rgba(var(--chessimals-capture-rgb),.58);background:linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.2),rgba(var(--power-accent-rgb),.1) 58%,transparent),var(--chessimals-elevated-strong);box-shadow:0 .9rem 1.7rem rgba(var(--chessimals-shadow-rgb),.24),0 0 1.25rem rgba(var(--chessimals-capture-rgb),.34)}.chessimals-power-callout.effect-eagle{--power-accent-rgb: 79, 169, 218}.chessimals-power-callout.effect-bull{--power-accent-rgb: 220, 116, 58}.chessimals-power-callout.effect-kangaroo{--power-accent-rgb: 139, 112, 222}.chessimals-power-callout.effect-lion{--power-accent-rgb: 221, 158, 26}.chessimals-power-callout>span{display:grid;place-items:center;width:2.3rem;height:2.3rem;border:1px solid rgba(var(--power-accent-rgb),.32);border-radius:8px;background:rgba(var(--power-accent-rgb),.16);color:var(--chessimals-text);font-size:1.05rem;font-weight:1000}.chessimals-power-callout div{display:grid;gap:.06rem;min-width:0}.chessimals-power-callout strong,.chessimals-power-callout small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-power-callout strong{font-size:clamp(.9rem,3vw,1.08rem);font-weight:1000}.chessimals-power-callout small{color:var(--chessimals-muted);font-size:clamp(.68rem,2.4vw,.78rem);font-weight:900;text-transform:uppercase}.chessimals-power-callout em{display:inline-flex;align-items:center;justify-content:center;min-width:4.2rem;max-width:6.4rem;min-height:1.65rem;border:1px solid rgba(var(--power-accent-rgb),.28);border-radius:999px;padding:.22rem .48rem;background:rgba(var(--power-accent-rgb),.15);color:var(--chessimals-text);font-size:.68rem;font-style:normal;font-weight:950;letter-spacing:0;line-height:1.05;text-align:center}@keyframes chessimals-power-callout{0%{opacity:0;transform:translate(-50%) translateY(.7rem) scale(.96)}18%{opacity:1;transform:translate(-50%) translateY(0) scale(1.02)}72%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-.35rem) scale(.98)}}.chessimals-score-pop{position:absolute;left:var(--score-pop-x);top:var(--score-pop-y);z-index:8;display:grid;justify-items:center;gap:.04rem;min-width:5.5rem;max-width:min(9rem,44vw);transform:translate(-50%,-92%);border:1px solid rgba(var(--chessimals-sky-rgb),.4);border-radius:.95rem;padding:.42rem .58rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.92),rgba(var(--chessimals-primary-rgb),.84));color:#fffaf0;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.24),inset 0 0 0 1px #ffffff47;pointer-events:none;animation:chessimals-score-pop 1.05s ease-out both}.chessimals-score-pop.is-combo{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.58);background:linear-gradient(135deg,rgba(var(--ion-color-warning-rgb, 255, 196, 9),.94),rgba(var(--chessimals-primary-rgb),.86))}.chessimals-score-pop strong{font-size:1.08rem;font-weight:1000;line-height:1}.chessimals-score-pop span,.chessimals-score-pop b{overflow:hidden;max-width:100%;font-size:.64rem;font-weight:950;letter-spacing:.04em;line-height:1.08;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-score-pop b{border-radius:999px;padding:.08rem .32rem;background:#ffffff38}@keyframes chessimals-score-pop{0%{opacity:0;transform:translate(-50%,-62%) scale(.82)}18%{opacity:1;transform:translate(-50%,-96%) scale(1.05)}72%{opacity:1;transform:translate(-50%,-112%) scale(1)}to{opacity:0;transform:translate(-50%,-132%) scale(.96)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;gap:.375rem;place-items:center;min-height:5.75rem;padding:.625rem;border:1px solid var(--chessimals-border);border-radius:1.125rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:3.25rem;height:3.25rem;padding:.34rem;overflow:hidden;border-radius:1.2rem;background:radial-gradient(circle at 35% 22%,rgba(255,255,255,.82),transparent 55%),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 1px var(--chessimals-animal-face-border),0 .45rem 1.15rem #2e3a2c1a}.chessimals-animal-face img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;border-radius:.72rem;background:var(--chessimals-animal-face-inner-bg);box-shadow:inset 0 0 0 1px #2e3a2c14;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{background:radial-gradient(circle at 35% 22%,rgba(255,255,255,.9),transparent 52%),radial-gradient(circle at 62% 78%,rgba(var(--chessimals-magic-rgb),.22),transparent 48%),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-magic-rgb),.34),0 0 .85rem rgba(var(--chessimals-magic-rgb),.34),0 .75rem 1.6rem rgba(var(--chessimals-magic-rgb),.16)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-cards strong{overflow:hidden;max-width:100%;font-size:.82rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:1rem}.chessimals-powers{width:min(100%,44rem);align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:1rem;padding:1rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{min-height:5rem}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem}.chessimals-settings article{display:grid;gap:.65rem;padding:.9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(30rem,100%);aspect-ratio:1280 / 698;object-fit:cover;object-position:center;border-radius:1.25rem;background:#fff;box-shadow:0 1rem 2rem #2e3a2c24}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:1.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);box-shadow:0 1rem 2.25rem #2e3a2c1f}.chessimals-rules article{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;border:1px solid var(--ion-border-color, #e7e4ea);border-radius:1.25rem;background:var(--ion-card-background, #fff);color:var(--ion-text-color, #2f2a3a)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.45rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--ion-color-medium, #6f6a7a);line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-challenge-cta{grid-template-columns:1fr}.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats,.chessimals-challenge-roster{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-mode-winrates,.chessimals-progress-hero,.chessimals-progress-hero__stats,.chessimals-achievements--modal{grid-template-columns:1fr}.chessimals-game{gap:.55rem;border-radius:1.25rem;padding:.625rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>span{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{gap:.25rem;min-height:3.95rem;border-radius:.85rem;padding:.34rem .22rem}.chessimals-animal-face{width:2.35rem;height:2.35rem;padding:.26rem;border-radius:.85rem}.chessimals-animal-face img{border-radius:.55rem}.chessimals-cards strong{font-size:.62rem}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-score-pop,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"], dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }, { kind: "component", type: RangeInputComponent, selector: "val-range-input", inputs: ["props"], outputs: ["rangeChange"] }, { kind: "component", type: ToggleInputComponent, selector: "val-toggle-input", inputs: ["preset", "props"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
|
|
4391
|
+
`, isInline: true, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__paw{display:grid;place-items:center;width:clamp(4.6rem,16vw,5.6rem);height:clamp(4.6rem,16vw,5.6rem);border-radius:1.55rem;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.96),transparent 34%),linear-gradient(145deg,#fffffff5,rgba(var(--chessimals-secondary-rgb),.22)),color-mix(in srgb,var(--chessimals-panel) 82%,white);border:.12rem solid rgba(var(--chessimals-primary-rgb),.22);box-shadow:0 1.15rem 2.6rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.16),0 0 0 .42rem var(--chessimals-elevated-soft),inset 0 -.25rem .6rem rgba(var(--chessimals-primary-rgb),.08);animation:chessimals-resume-pulse 1.2s ease-in-out infinite;font-size:clamp(2.45rem,9vw,3.35rem);line-height:1;filter:drop-shadow(0 .28rem .38rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;width:min(22rem,82vw);max-width:100%;padding:.5rem;border-radius:1.35rem;background:#fff;box-shadow:0 1rem 2.5rem #2e3a2c1a,inset 0 0 0 1px #2e3a2c14}.chessimals-hero__logo img{display:block;width:100%;height:auto;max-height:12rem;object-fit:contain;border-radius:1rem}.chessimals-hero h1{margin:0;font-size:clamp(2.4rem,9vw,4.5rem);line-height:.95;font-weight:950}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-game,.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-game{display:grid;gap:.875rem}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>span{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-card--dedicated{border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-challenge-rival>span{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>span{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-progress{display:grid;gap:.75rem}.chessimals-progress-hero{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:.75rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.8rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated-soft)}.chessimals-progress-hero>div:first-child{display:grid;gap:.14rem;align-content:center;min-width:0}.chessimals-progress-hero small,.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress-hero strong{color:var(--chessimals-text);font-size:clamp(1.45rem,5vw,2.1rem);font-weight:1000;line-height:1}.chessimals-progress-hero p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820}.chessimals-progress-hero__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-progress-hero__stats span{display:grid;gap:.08rem;align-content:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated)}.chessimals-progress-hero__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-progress__panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:8px;padding:.75rem;background:var(--chessimals-elevated-soft)}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-progress__panel>small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.chessimals-progress__metrics span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.5rem;background:var(--chessimals-elevated)}.chessimals-progress__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-progress__metrics strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-mode-winrates--modal,.chessimals-achievements--modal{width:100%}.chessimals-mode-winrates--modal{grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-achievements--modal{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-challenge-history--modal{border-top:0;padding-top:0}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1rem;padding:.8rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),var(--chessimals-elevated-soft)}.chessimals-challenge-summary.is-victory{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.32);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.12),transparent),var(--chessimals-elevated)}.chessimals-challenge-summary.is-defeat{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-elevated)}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>span,.chessimals-challenge-rival-voice>span{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-rival-voice>span{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>span{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>span{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}.chessimals-power-callout{--power-accent-rgb: var(--chessimals-magic-rgb);position:absolute;left:50%;bottom:.75rem;z-index:7;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.55rem;align-items:center;width:min(21rem,calc(100% - 1rem));border:1px solid rgba(var(--power-accent-rgb),.48);border-radius:8px;padding:.56rem .62rem;background:linear-gradient(135deg,rgba(var(--power-accent-rgb),.2),rgba(var(--power-accent-rgb),.06) 54%,transparent),var(--chessimals-elevated-strong);box-shadow:0 .85rem 1.7rem rgba(var(--chessimals-shadow-rgb),.2),0 0 1.15rem rgba(var(--power-accent-rgb),.28);color:var(--chessimals-text);pointer-events:none;transform:translate(-50%);animation:chessimals-power-callout .95s ease-out both}.chessimals-power-callout.is-capture{border-color:rgba(var(--chessimals-capture-rgb),.58);background:linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.2),rgba(var(--power-accent-rgb),.1) 58%,transparent),var(--chessimals-elevated-strong);box-shadow:0 .9rem 1.7rem rgba(var(--chessimals-shadow-rgb),.24),0 0 1.25rem rgba(var(--chessimals-capture-rgb),.34)}.chessimals-power-callout.effect-eagle{--power-accent-rgb: 79, 169, 218}.chessimals-power-callout.effect-bull{--power-accent-rgb: 220, 116, 58}.chessimals-power-callout.effect-kangaroo{--power-accent-rgb: 139, 112, 222}.chessimals-power-callout.effect-lion{--power-accent-rgb: 221, 158, 26}.chessimals-power-callout>span{display:grid;place-items:center;width:2.3rem;height:2.3rem;border:1px solid rgba(var(--power-accent-rgb),.32);border-radius:8px;background:rgba(var(--power-accent-rgb),.16);color:var(--chessimals-text);font-size:1.05rem;font-weight:1000}.chessimals-power-callout div{display:grid;gap:.06rem;min-width:0}.chessimals-power-callout strong,.chessimals-power-callout small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-power-callout strong{font-size:clamp(.9rem,3vw,1.08rem);font-weight:1000}.chessimals-power-callout small{color:var(--chessimals-muted);font-size:clamp(.68rem,2.4vw,.78rem);font-weight:900;text-transform:uppercase}.chessimals-power-callout em{display:inline-flex;align-items:center;justify-content:center;min-width:4.2rem;max-width:6.4rem;min-height:1.65rem;border:1px solid rgba(var(--power-accent-rgb),.28);border-radius:999px;padding:.22rem .48rem;background:rgba(var(--power-accent-rgb),.15);color:var(--chessimals-text);font-size:.68rem;font-style:normal;font-weight:950;letter-spacing:0;line-height:1.05;text-align:center}@keyframes chessimals-power-callout{0%{opacity:0;transform:translate(-50%) translateY(.7rem) scale(.96)}18%{opacity:1;transform:translate(-50%) translateY(0) scale(1.02)}72%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-.35rem) scale(.98)}}.chessimals-score-pop{position:absolute;left:var(--score-pop-x);top:var(--score-pop-y);z-index:8;display:grid;justify-items:center;gap:.04rem;min-width:5.5rem;max-width:min(9rem,44vw);transform:translate(-50%,-92%);border:1px solid rgba(var(--chessimals-sky-rgb),.4);border-radius:.95rem;padding:.42rem .58rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.92),rgba(var(--chessimals-primary-rgb),.84));color:#fffaf0;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.24),inset 0 0 0 1px #ffffff47;pointer-events:none;animation:chessimals-score-pop 1.05s ease-out both}.chessimals-score-pop.is-combo{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.58);background:linear-gradient(135deg,rgba(var(--ion-color-warning-rgb, 255, 196, 9),.94),rgba(var(--chessimals-primary-rgb),.86))}.chessimals-score-pop strong{font-size:1.08rem;font-weight:1000;line-height:1}.chessimals-score-pop span,.chessimals-score-pop b{overflow:hidden;max-width:100%;font-size:.64rem;font-weight:950;letter-spacing:.04em;line-height:1.08;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-score-pop b{border-radius:999px;padding:.08rem .32rem;background:#ffffff38}@keyframes chessimals-score-pop{0%{opacity:0;transform:translate(-50%,-62%) scale(.82)}18%{opacity:1;transform:translate(-50%,-96%) scale(1.05)}72%{opacity:1;transform:translate(-50%,-112%) scale(1)}to{opacity:0;transform:translate(-50%,-132%) scale(.96)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;gap:.375rem;place-items:center;min-height:5.75rem;padding:.625rem;border:1px solid var(--chessimals-border);border-radius:1.125rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:3.25rem;height:3.25rem;padding:.34rem;overflow:hidden;border-radius:1.2rem;background:radial-gradient(circle at 35% 22%,rgba(255,255,255,.82),transparent 55%),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 1px var(--chessimals-animal-face-border),0 .45rem 1.15rem #2e3a2c1a}.chessimals-animal-face img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;border-radius:.72rem;background:var(--chessimals-animal-face-inner-bg);box-shadow:inset 0 0 0 1px #2e3a2c14;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{background:radial-gradient(circle at 35% 22%,rgba(255,255,255,.9),transparent 52%),radial-gradient(circle at 62% 78%,rgba(var(--chessimals-magic-rgb),.22),transparent 48%),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-magic-rgb),.34),0 0 .85rem rgba(var(--chessimals-magic-rgb),.34),0 .75rem 1.6rem rgba(var(--chessimals-magic-rgb),.16)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-cards strong{overflow:hidden;max-width:100%;font-size:.82rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:1rem}.chessimals-powers{width:min(100%,44rem);align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:1rem;padding:1rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{min-height:5rem}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem}.chessimals-settings article{display:grid;gap:.65rem;padding:.9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(30rem,100%);aspect-ratio:1280 / 698;object-fit:cover;object-position:center;border-radius:1.25rem;background:#fff;box-shadow:0 1rem 2rem #2e3a2c24}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:1.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);box-shadow:0 1rem 2.25rem #2e3a2c1f}.chessimals-rules article{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;border:1px solid var(--ion-border-color, #e7e4ea);border-radius:1.25rem;background:var(--ion-card-background, #fff);color:var(--ion-text-color, #2f2a3a)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.45rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--ion-color-medium, #6f6a7a);line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-challenge-cta{grid-template-columns:1fr}.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats,.chessimals-challenge-roster{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-mode-winrates,.chessimals-progress-hero,.chessimals-progress-hero__stats,.chessimals-achievements--modal{grid-template-columns:1fr}.chessimals-game{gap:.55rem;border-radius:1.25rem;padding:.625rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>span{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{gap:.25rem;min-height:3.95rem;border-radius:.85rem;padding:.34rem .22rem}.chessimals-animal-face{width:2.35rem;height:2.35rem;padding:.26rem;border-radius:.85rem}.chessimals-animal-face img{border-radius:.55rem}.chessimals-cards strong{font-size:.62rem}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-score-pop,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"], dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }, { kind: "component", type: RangeInputComponent, selector: "val-range-input", inputs: ["props"], outputs: ["rangeChange"] }, { kind: "component", type: ToggleInputComponent, selector: "val-toggle-input", inputs: ["preset", "props"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
|
|
4358
4392
|
}
|
|
4359
4393
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChessimalsGameComponent, decorators: [{
|
|
4360
4394
|
type: Component,
|
|
@@ -4407,7 +4441,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4407
4441
|
</span>
|
|
4408
4442
|
</div>
|
|
4409
4443
|
<button class="chessimals-primary" type="button" (click)="openChallengeView()">
|
|
4410
|
-
{{
|
|
4444
|
+
{{ resumableChallengeRun() ? t('chessimalsChallengeResume') : t('chessimalsChallengeOpen') }}
|
|
4411
4445
|
</button>
|
|
4412
4446
|
</article>
|
|
4413
4447
|
|
|
@@ -4582,13 +4616,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4582
4616
|
<p>{{ t('chessimalsChallengeBody') }}</p>
|
|
4583
4617
|
</div>
|
|
4584
4618
|
<div class="chessimals-challenge-card__actions chessimals-challenge-card__actions--hero">
|
|
4585
|
-
@if (
|
|
4619
|
+
@if (resumableChallengeRun(); as activeRun) {
|
|
4586
4620
|
<button class="chessimals-primary" type="button" (click)="resumeChallenge(activeRun)">
|
|
4587
4621
|
{{ t('chessimalsChallengeResume') }}
|
|
4588
4622
|
</button>
|
|
4589
4623
|
}
|
|
4590
4624
|
<button class="chessimals-primary" type="button" (click)="startChallenge()">
|
|
4591
|
-
{{
|
|
4625
|
+
{{ resumableChallengeRun() ? t('chessimalsChallengeStartNew') : t('chessimalsChallengeStart') }}
|
|
4592
4626
|
</button>
|
|
4593
4627
|
</div>
|
|
4594
4628
|
</div>
|
|
@@ -4632,7 +4666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4632
4666
|
<div class="chessimals-challenge-path" [attr.aria-label]="t('chessimalsChallengePath')">
|
|
4633
4667
|
@for (bot of challengeLadder; track bot.id) {
|
|
4634
4668
|
<span
|
|
4635
|
-
[class.is-cleared]="
|
|
4669
|
+
[class.is-cleared]="challengeMenuClearedRound() >= bot.round"
|
|
4636
4670
|
[class.is-current]="challengeMenuBot().round === bot.round"
|
|
4637
4671
|
[class.is-final]="bot.round === challengeLadder.length"
|
|
4638
4672
|
[attr.title]="challengeBotName(bot)"
|
|
@@ -4699,7 +4733,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4699
4733
|
<div class="chessimals-challenge-roster" [attr.aria-label]="t('chessimalsChallengeRivals')">
|
|
4700
4734
|
@for (bot of challengeLadder; track bot.id) {
|
|
4701
4735
|
<article
|
|
4702
|
-
[class.is-cleared]="
|
|
4736
|
+
[class.is-cleared]="challengeMenuClearedRound() >= bot.round"
|
|
4703
4737
|
[class.is-current]="challengeMenuBot().round === bot.round"
|
|
4704
4738
|
[class.is-final]="bot.round === challengeLadder.length"
|
|
4705
4739
|
>
|
|
@@ -5744,7 +5778,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5744
5778
|
/>
|
|
5745
5779
|
</ng-template>
|
|
5746
5780
|
</ion-modal>
|
|
5747
|
-
`, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__paw{display:grid;place-items:center;width:clamp(4.6rem,16vw,5.6rem);height:clamp(4.6rem,16vw,5.6rem);border-radius:1.55rem;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.96),transparent 34%),linear-gradient(145deg,#fffffff5,rgba(var(--chessimals-secondary-rgb),.22)),color-mix(in srgb,var(--chessimals-panel) 82%,white);border:.12rem solid rgba(var(--chessimals-primary-rgb),.22);box-shadow:0 1.15rem 2.6rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.16),0 0 0 .42rem var(--chessimals-elevated-soft),inset 0 -.25rem .6rem rgba(var(--chessimals-primary-rgb),.08);animation:chessimals-resume-pulse 1.2s ease-in-out infinite;font-size:clamp(2.45rem,9vw,3.35rem);line-height:1;filter:drop-shadow(0 .28rem .38rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;width:min(22rem,82vw);max-width:100%;padding:.5rem;border-radius:1.35rem;background:#fff;box-shadow:0 1rem 2.5rem #2e3a2c1a,inset 0 0 0 1px #2e3a2c14}.chessimals-hero__logo img{display:block;width:100%;height:auto;max-height:12rem;object-fit:contain;border-radius:1rem}.chessimals-hero h1{margin:0;font-size:clamp(2.4rem,9vw,4.5rem);line-height:.95;font-weight:950}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-game,.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-game{display:grid;gap:.875rem}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>span{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-challenge-rival>span{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>span{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-progress{display:grid;gap:.75rem}.chessimals-progress-hero{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:.75rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.8rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated-soft)}.chessimals-progress-hero>div:first-child{display:grid;gap:.14rem;align-content:center;min-width:0}.chessimals-progress-hero small,.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress-hero strong{color:var(--chessimals-text);font-size:clamp(1.45rem,5vw,2.1rem);font-weight:1000;line-height:1}.chessimals-progress-hero p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820}.chessimals-progress-hero__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-progress-hero__stats span{display:grid;gap:.08rem;align-content:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated)}.chessimals-progress-hero__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-progress__panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:8px;padding:.75rem;background:var(--chessimals-elevated-soft)}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-progress__panel>small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.chessimals-progress__metrics span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.5rem;background:var(--chessimals-elevated)}.chessimals-progress__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-progress__metrics strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-mode-winrates--modal,.chessimals-achievements--modal{width:100%}.chessimals-mode-winrates--modal{grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-achievements--modal{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-challenge-history--modal{border-top:0;padding-top:0}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1rem;padding:.8rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),var(--chessimals-elevated-soft)}.chessimals-challenge-summary.is-victory{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.32);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.12),transparent),var(--chessimals-elevated)}.chessimals-challenge-summary.is-defeat{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-elevated)}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>span,.chessimals-challenge-rival-voice>span{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-rival-voice>span{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>span{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>span{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}.chessimals-power-callout{--power-accent-rgb: var(--chessimals-magic-rgb);position:absolute;left:50%;bottom:.75rem;z-index:7;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.55rem;align-items:center;width:min(21rem,calc(100% - 1rem));border:1px solid rgba(var(--power-accent-rgb),.48);border-radius:8px;padding:.56rem .62rem;background:linear-gradient(135deg,rgba(var(--power-accent-rgb),.2),rgba(var(--power-accent-rgb),.06) 54%,transparent),var(--chessimals-elevated-strong);box-shadow:0 .85rem 1.7rem rgba(var(--chessimals-shadow-rgb),.2),0 0 1.15rem rgba(var(--power-accent-rgb),.28);color:var(--chessimals-text);pointer-events:none;transform:translate(-50%);animation:chessimals-power-callout .95s ease-out both}.chessimals-power-callout.is-capture{border-color:rgba(var(--chessimals-capture-rgb),.58);background:linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.2),rgba(var(--power-accent-rgb),.1) 58%,transparent),var(--chessimals-elevated-strong);box-shadow:0 .9rem 1.7rem rgba(var(--chessimals-shadow-rgb),.24),0 0 1.25rem rgba(var(--chessimals-capture-rgb),.34)}.chessimals-power-callout.effect-eagle{--power-accent-rgb: 79, 169, 218}.chessimals-power-callout.effect-bull{--power-accent-rgb: 220, 116, 58}.chessimals-power-callout.effect-kangaroo{--power-accent-rgb: 139, 112, 222}.chessimals-power-callout.effect-lion{--power-accent-rgb: 221, 158, 26}.chessimals-power-callout>span{display:grid;place-items:center;width:2.3rem;height:2.3rem;border:1px solid rgba(var(--power-accent-rgb),.32);border-radius:8px;background:rgba(var(--power-accent-rgb),.16);color:var(--chessimals-text);font-size:1.05rem;font-weight:1000}.chessimals-power-callout div{display:grid;gap:.06rem;min-width:0}.chessimals-power-callout strong,.chessimals-power-callout small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-power-callout strong{font-size:clamp(.9rem,3vw,1.08rem);font-weight:1000}.chessimals-power-callout small{color:var(--chessimals-muted);font-size:clamp(.68rem,2.4vw,.78rem);font-weight:900;text-transform:uppercase}.chessimals-power-callout em{display:inline-flex;align-items:center;justify-content:center;min-width:4.2rem;max-width:6.4rem;min-height:1.65rem;border:1px solid rgba(var(--power-accent-rgb),.28);border-radius:999px;padding:.22rem .48rem;background:rgba(var(--power-accent-rgb),.15);color:var(--chessimals-text);font-size:.68rem;font-style:normal;font-weight:950;letter-spacing:0;line-height:1.05;text-align:center}@keyframes chessimals-power-callout{0%{opacity:0;transform:translate(-50%) translateY(.7rem) scale(.96)}18%{opacity:1;transform:translate(-50%) translateY(0) scale(1.02)}72%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-.35rem) scale(.98)}}.chessimals-score-pop{position:absolute;left:var(--score-pop-x);top:var(--score-pop-y);z-index:8;display:grid;justify-items:center;gap:.04rem;min-width:5.5rem;max-width:min(9rem,44vw);transform:translate(-50%,-92%);border:1px solid rgba(var(--chessimals-sky-rgb),.4);border-radius:.95rem;padding:.42rem .58rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.92),rgba(var(--chessimals-primary-rgb),.84));color:#fffaf0;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.24),inset 0 0 0 1px #ffffff47;pointer-events:none;animation:chessimals-score-pop 1.05s ease-out both}.chessimals-score-pop.is-combo{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.58);background:linear-gradient(135deg,rgba(var(--ion-color-warning-rgb, 255, 196, 9),.94),rgba(var(--chessimals-primary-rgb),.86))}.chessimals-score-pop strong{font-size:1.08rem;font-weight:1000;line-height:1}.chessimals-score-pop span,.chessimals-score-pop b{overflow:hidden;max-width:100%;font-size:.64rem;font-weight:950;letter-spacing:.04em;line-height:1.08;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-score-pop b{border-radius:999px;padding:.08rem .32rem;background:#ffffff38}@keyframes chessimals-score-pop{0%{opacity:0;transform:translate(-50%,-62%) scale(.82)}18%{opacity:1;transform:translate(-50%,-96%) scale(1.05)}72%{opacity:1;transform:translate(-50%,-112%) scale(1)}to{opacity:0;transform:translate(-50%,-132%) scale(.96)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;gap:.375rem;place-items:center;min-height:5.75rem;padding:.625rem;border:1px solid var(--chessimals-border);border-radius:1.125rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:3.25rem;height:3.25rem;padding:.34rem;overflow:hidden;border-radius:1.2rem;background:radial-gradient(circle at 35% 22%,rgba(255,255,255,.82),transparent 55%),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 1px var(--chessimals-animal-face-border),0 .45rem 1.15rem #2e3a2c1a}.chessimals-animal-face img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;border-radius:.72rem;background:var(--chessimals-animal-face-inner-bg);box-shadow:inset 0 0 0 1px #2e3a2c14;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{background:radial-gradient(circle at 35% 22%,rgba(255,255,255,.9),transparent 52%),radial-gradient(circle at 62% 78%,rgba(var(--chessimals-magic-rgb),.22),transparent 48%),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-magic-rgb),.34),0 0 .85rem rgba(var(--chessimals-magic-rgb),.34),0 .75rem 1.6rem rgba(var(--chessimals-magic-rgb),.16)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-cards strong{overflow:hidden;max-width:100%;font-size:.82rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:1rem}.chessimals-powers{width:min(100%,44rem);align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:1rem;padding:1rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{min-height:5rem}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem}.chessimals-settings article{display:grid;gap:.65rem;padding:.9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(30rem,100%);aspect-ratio:1280 / 698;object-fit:cover;object-position:center;border-radius:1.25rem;background:#fff;box-shadow:0 1rem 2rem #2e3a2c24}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:1.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);box-shadow:0 1rem 2.25rem #2e3a2c1f}.chessimals-rules article{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;border:1px solid var(--ion-border-color, #e7e4ea);border-radius:1.25rem;background:var(--ion-card-background, #fff);color:var(--ion-text-color, #2f2a3a)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.45rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--ion-color-medium, #6f6a7a);line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-challenge-cta{grid-template-columns:1fr}.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats,.chessimals-challenge-roster{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-mode-winrates,.chessimals-progress-hero,.chessimals-progress-hero__stats,.chessimals-achievements--modal{grid-template-columns:1fr}.chessimals-game{gap:.55rem;border-radius:1.25rem;padding:.625rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>span{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{gap:.25rem;min-height:3.95rem;border-radius:.85rem;padding:.34rem .22rem}.chessimals-animal-face{width:2.35rem;height:2.35rem;padding:.26rem;border-radius:.85rem}.chessimals-animal-face img{border-radius:.55rem}.chessimals-cards strong{font-size:.62rem}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-score-pop,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"] }]
|
|
5781
|
+
`, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__paw{display:grid;place-items:center;width:clamp(4.6rem,16vw,5.6rem);height:clamp(4.6rem,16vw,5.6rem);border-radius:1.55rem;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.96),transparent 34%),linear-gradient(145deg,#fffffff5,rgba(var(--chessimals-secondary-rgb),.22)),color-mix(in srgb,var(--chessimals-panel) 82%,white);border:.12rem solid rgba(var(--chessimals-primary-rgb),.22);box-shadow:0 1.15rem 2.6rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.16),0 0 0 .42rem var(--chessimals-elevated-soft),inset 0 -.25rem .6rem rgba(var(--chessimals-primary-rgb),.08);animation:chessimals-resume-pulse 1.2s ease-in-out infinite;font-size:clamp(2.45rem,9vw,3.35rem);line-height:1;filter:drop-shadow(0 .28rem .38rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;width:min(22rem,82vw);max-width:100%;padding:.5rem;border-radius:1.35rem;background:#fff;box-shadow:0 1rem 2.5rem #2e3a2c1a,inset 0 0 0 1px #2e3a2c14}.chessimals-hero__logo img{display:block;width:100%;height:auto;max-height:12rem;object-fit:contain;border-radius:1rem}.chessimals-hero h1{margin:0;font-size:clamp(2.4rem,9vw,4.5rem);line-height:.95;font-weight:950}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-game,.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-game{display:grid;gap:.875rem}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>span{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-card--dedicated{border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-challenge-rival>span{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>span{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-progress{display:grid;gap:.75rem}.chessimals-progress-hero{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:.75rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.8rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated-soft)}.chessimals-progress-hero>div:first-child{display:grid;gap:.14rem;align-content:center;min-width:0}.chessimals-progress-hero small,.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress-hero strong{color:var(--chessimals-text);font-size:clamp(1.45rem,5vw,2.1rem);font-weight:1000;line-height:1}.chessimals-progress-hero p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820}.chessimals-progress-hero__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-progress-hero__stats span{display:grid;gap:.08rem;align-content:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated)}.chessimals-progress-hero__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-progress__panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:8px;padding:.75rem;background:var(--chessimals-elevated-soft)}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-progress__panel>small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.chessimals-progress__metrics span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.5rem;background:var(--chessimals-elevated)}.chessimals-progress__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-progress__metrics strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-mode-winrates--modal,.chessimals-achievements--modal{width:100%}.chessimals-mode-winrates--modal{grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-achievements--modal{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-challenge-history--modal{border-top:0;padding-top:0}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1rem;padding:.8rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),var(--chessimals-elevated-soft)}.chessimals-challenge-summary.is-victory{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.32);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.12),transparent),var(--chessimals-elevated)}.chessimals-challenge-summary.is-defeat{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-elevated)}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>span,.chessimals-challenge-rival-voice>span{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-rival-voice>span{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>span{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>span{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}.chessimals-power-callout{--power-accent-rgb: var(--chessimals-magic-rgb);position:absolute;left:50%;bottom:.75rem;z-index:7;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.55rem;align-items:center;width:min(21rem,calc(100% - 1rem));border:1px solid rgba(var(--power-accent-rgb),.48);border-radius:8px;padding:.56rem .62rem;background:linear-gradient(135deg,rgba(var(--power-accent-rgb),.2),rgba(var(--power-accent-rgb),.06) 54%,transparent),var(--chessimals-elevated-strong);box-shadow:0 .85rem 1.7rem rgba(var(--chessimals-shadow-rgb),.2),0 0 1.15rem rgba(var(--power-accent-rgb),.28);color:var(--chessimals-text);pointer-events:none;transform:translate(-50%);animation:chessimals-power-callout .95s ease-out both}.chessimals-power-callout.is-capture{border-color:rgba(var(--chessimals-capture-rgb),.58);background:linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.2),rgba(var(--power-accent-rgb),.1) 58%,transparent),var(--chessimals-elevated-strong);box-shadow:0 .9rem 1.7rem rgba(var(--chessimals-shadow-rgb),.24),0 0 1.25rem rgba(var(--chessimals-capture-rgb),.34)}.chessimals-power-callout.effect-eagle{--power-accent-rgb: 79, 169, 218}.chessimals-power-callout.effect-bull{--power-accent-rgb: 220, 116, 58}.chessimals-power-callout.effect-kangaroo{--power-accent-rgb: 139, 112, 222}.chessimals-power-callout.effect-lion{--power-accent-rgb: 221, 158, 26}.chessimals-power-callout>span{display:grid;place-items:center;width:2.3rem;height:2.3rem;border:1px solid rgba(var(--power-accent-rgb),.32);border-radius:8px;background:rgba(var(--power-accent-rgb),.16);color:var(--chessimals-text);font-size:1.05rem;font-weight:1000}.chessimals-power-callout div{display:grid;gap:.06rem;min-width:0}.chessimals-power-callout strong,.chessimals-power-callout small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-power-callout strong{font-size:clamp(.9rem,3vw,1.08rem);font-weight:1000}.chessimals-power-callout small{color:var(--chessimals-muted);font-size:clamp(.68rem,2.4vw,.78rem);font-weight:900;text-transform:uppercase}.chessimals-power-callout em{display:inline-flex;align-items:center;justify-content:center;min-width:4.2rem;max-width:6.4rem;min-height:1.65rem;border:1px solid rgba(var(--power-accent-rgb),.28);border-radius:999px;padding:.22rem .48rem;background:rgba(var(--power-accent-rgb),.15);color:var(--chessimals-text);font-size:.68rem;font-style:normal;font-weight:950;letter-spacing:0;line-height:1.05;text-align:center}@keyframes chessimals-power-callout{0%{opacity:0;transform:translate(-50%) translateY(.7rem) scale(.96)}18%{opacity:1;transform:translate(-50%) translateY(0) scale(1.02)}72%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-.35rem) scale(.98)}}.chessimals-score-pop{position:absolute;left:var(--score-pop-x);top:var(--score-pop-y);z-index:8;display:grid;justify-items:center;gap:.04rem;min-width:5.5rem;max-width:min(9rem,44vw);transform:translate(-50%,-92%);border:1px solid rgba(var(--chessimals-sky-rgb),.4);border-radius:.95rem;padding:.42rem .58rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.92),rgba(var(--chessimals-primary-rgb),.84));color:#fffaf0;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.24),inset 0 0 0 1px #ffffff47;pointer-events:none;animation:chessimals-score-pop 1.05s ease-out both}.chessimals-score-pop.is-combo{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.58);background:linear-gradient(135deg,rgba(var(--ion-color-warning-rgb, 255, 196, 9),.94),rgba(var(--chessimals-primary-rgb),.86))}.chessimals-score-pop strong{font-size:1.08rem;font-weight:1000;line-height:1}.chessimals-score-pop span,.chessimals-score-pop b{overflow:hidden;max-width:100%;font-size:.64rem;font-weight:950;letter-spacing:.04em;line-height:1.08;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-score-pop b{border-radius:999px;padding:.08rem .32rem;background:#ffffff38}@keyframes chessimals-score-pop{0%{opacity:0;transform:translate(-50%,-62%) scale(.82)}18%{opacity:1;transform:translate(-50%,-96%) scale(1.05)}72%{opacity:1;transform:translate(-50%,-112%) scale(1)}to{opacity:0;transform:translate(-50%,-132%) scale(.96)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;gap:.375rem;place-items:center;min-height:5.75rem;padding:.625rem;border:1px solid var(--chessimals-border);border-radius:1.125rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:3.25rem;height:3.25rem;padding:.34rem;overflow:hidden;border-radius:1.2rem;background:radial-gradient(circle at 35% 22%,rgba(255,255,255,.82),transparent 55%),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 1px var(--chessimals-animal-face-border),0 .45rem 1.15rem #2e3a2c1a}.chessimals-animal-face img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;border-radius:.72rem;background:var(--chessimals-animal-face-inner-bg);box-shadow:inset 0 0 0 1px #2e3a2c14;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{background:radial-gradient(circle at 35% 22%,rgba(255,255,255,.9),transparent 52%),radial-gradient(circle at 62% 78%,rgba(var(--chessimals-magic-rgb),.22),transparent 48%),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-magic-rgb),.34),0 0 .85rem rgba(var(--chessimals-magic-rgb),.34),0 .75rem 1.6rem rgba(var(--chessimals-magic-rgb),.16)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-cards strong{overflow:hidden;max-width:100%;font-size:.82rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:1rem}.chessimals-powers{width:min(100%,44rem);align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:1rem;padding:1rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{min-height:5rem}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem}.chessimals-settings article{display:grid;gap:.65rem;padding:.9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(30rem,100%);aspect-ratio:1280 / 698;object-fit:cover;object-position:center;border-radius:1.25rem;background:#fff;box-shadow:0 1rem 2rem #2e3a2c24}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:1.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);box-shadow:0 1rem 2.25rem #2e3a2c1f}.chessimals-rules article{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;border:1px solid var(--ion-border-color, #e7e4ea);border-radius:1.25rem;background:var(--ion-card-background, #fff);color:var(--ion-text-color, #2f2a3a)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.45rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--ion-color-medium, #6f6a7a);line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-challenge-cta{grid-template-columns:1fr}.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats,.chessimals-challenge-roster{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-mode-winrates,.chessimals-progress-hero,.chessimals-progress-hero__stats,.chessimals-achievements--modal{grid-template-columns:1fr}.chessimals-game{gap:.55rem;border-radius:1.25rem;padding:.625rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>span{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{gap:.25rem;min-height:3.95rem;border-radius:.85rem;padding:.34rem .22rem}.chessimals-animal-face{width:2.35rem;height:2.35rem;padding:.26rem;border-radius:.85rem}.chessimals-animal-face img{border-radius:.55rem}.chessimals-cards strong{font-size:.62rem}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-score-pop,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"] }]
|
|
5748
5782
|
}], ctorParameters: () => [], propDecorators: { boardAnchor: [{
|
|
5749
5783
|
type: ViewChild,
|
|
5750
5784
|
args: ['boardAnchor']
|
|
@@ -5755,4 +5789,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5755
5789
|
}], projectionMode: [{
|
|
5756
5790
|
type: Input
|
|
5757
5791
|
}] } });
|
|
5758
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsR0FDckIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFzQjFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBR3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxJQUFJLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBc0Z6RSxNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQUN6QyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztBQUN2QyxNQUFNLG9CQUFvQixHQUEwQixPQUFPLENBQUM7QUFDNUQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFDcEMsTUFBTSw4QkFBOEIsR0FBRyxFQUFFLENBQUM7QUFDMUMsTUFBTSxpQ0FBaUMsR0FBRyxFQUFFLENBQUM7QUFDN0MsTUFBTSx1Q0FBdUMsR0FBRyxFQUFFLENBQUM7QUFFbkQsTUFBTSxPQUFPLEdBQTJCO0lBQ3RDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUM5RSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGtDQUFrQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDNUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxzQ0FBc0MsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ3BGLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsa0NBQWtDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtDQUMxRSxDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBNkI7SUFDNUQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFO0lBQ2xJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQ0FBcUMsRUFBRTtJQUN4SSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUU7SUFDbEksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFO0lBQ2xJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQ0FBcUMsRUFBRTtJQUN0SSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUU7SUFDcEksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxF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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMDJDVCx3OTlGQTMyQ1MsUUFBUSxzREFBRSxvQkFBb0IsOE1BQUUsbUJBQW1CLHlHQUFFLG9CQUFvQiwwRkFBRSxtQkFBbUI7OzRGQXNpTTdGLHVCQUF1QjtrQkF6aU1uQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsWUFDL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTAyQ1Q7d0RBa3VKaUMsV0FBVztzQkFBNUMsU0FBUzt1QkFBQyxhQUFhO2dCQTBLWCxZQUFZO3NCQUF4QixLQUFLO2dCQVFHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBhcHBseUNoZXNzaW1hbHNNb3ZlLFxuICBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZSxcbiAgQ0hFU1NJTUFMU19CT1RfUFJPRklMRVMsXG4gIGNyZWF0ZUNoZXNzaW1hbHNSZXZpZXdTdGF0ZSxcbiAgY3JlYXRlQ2hlc3NpbWFsc0dhbWUsXG4gIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzLFxuICBnZXRDaGVzc2ltYWxzUGllY2VBdCxcbiAgcG9zaXRpb25LZXksXG4gIHJlc2lnbkNoZXNzaW1hbHNHYW1lLFxufSBmcm9tICcuL2NoZXNzaW1hbHMtZW5naW5lJztcbmltcG9ydCB7IENoZXNzaW1hbHNPbmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLW9ubGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IENoZXNzaW1hbHNDaGFsbGVuZ2VQcm9ncmVzc1NlcnZpY2UgfSBmcm9tICcuL2NoZXNzaW1hbHMtY2hhbGxlbmdlLXByb2dyZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTUlOSV9HQU1FU19JMThOIH0gZnJvbSAnLi9taW5pLWdhbWVzLmkxOG4nO1xuaW1wb3J0IHsgUmV0cm9BdWRpb1NlcnZpY2UgfSBmcm9tICcuL3JldHJvLWF1ZGlvLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2hlc3NpbWFsc0FuaW1hbFR5cGUsXG4gIENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBDaGVzc2ltYWxzQm90UHJvZmlsZSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCxcbiAgQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bixcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVN0YXRzLFxuICBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5LFxuICBDaGVzc2ltYWxzTG9jYWxNb2RlLFxuICBDaGVzc2ltYWxzTW92ZSxcbiAgQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50LFxuICBDaGVzc2ltYWxzUGllY2UsXG4gIENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbiAgQ2hlc3NpbWFsc1Bvc2l0aW9uLFxuICBDaGVzc2ltYWxzU3RhdHNNb2RlLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE1vZGFsTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL21vZGFsLWxheW91dC9tb2RhbC1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFJhbmdlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFuZ2UtaW5wdXQvcmFuZ2UtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFJhbmdlSW5wdXRNZXRhZGF0YSwgUmFuZ2VWYWx1ZSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9yYW5nZS1pbnB1dC90eXBlcyc7XG5pbXBvcnQgeyBUb2dnbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90b2dnbGUtaW5wdXQvdG9nZ2xlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2dnbGVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RvZ2dsZS1pbnB1dC90eXBlcyc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdXNlci1hdmF0YXIvdXNlci1hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJBdmF0YXJNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBIYXB0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2hhcHRpY3MvaGFwdGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuL21pbmktZ2FtZS1wbGF5ZXItcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFZFUlNJT04gYXMgVkFMVEVDSF9DT01QT05FTlRTX1ZFUlNJT04gfSBmcm9tICcuLi8uLi8uLi92ZXJzaW9uJztcblxuaW50ZXJmYWNlIENoZXNzaW1hbHNBbmltYWxWaWV3IHtcbiAgdHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG4gIGFzc2V0U3JjOiBzdHJpbmc7XG4gIHRvbmU6IG51bWJlcjtcbn1cblxudHlwZSBDaGVzc2ltYWxzQ29uZmlybUFjdGlvbiA9ICdyZXN0YXJ0JyB8ICdtb2RlJyB8ICdnYW1lcycgfCAncmVzaWduJyB8ICdjaGFsbGVuZ2UtbmV3JztcbnR5cGUgQ2hlc3NpbWFsc1JlbWF0Y2hTdGF0ZSA9ICdub25lJyB8ICdyZXF1ZXN0ZWQnIHwgJ2luY29taW5nJztcbnR5cGUgQ2hlc3NpbWFsc0NoYWxsZW5nZVBoYXNlID0gJ2lkbGUnIHwgJ3BsYXlpbmcnIHwgJ2JldHdlZW4nIHwgJ2NvbXBsZXRlZCcgfCAnZmFpbGVkJztcblxuaW50ZXJmYWNlIENoZXNzaW1hbHNUdXRvcmlhbEV4cGVjdGVkTW92ZSB7XG4gIHBpZWNlSWQ6IHN0cmluZztcbiAgdG86IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgZnJvbVJvdzogbnVtYmVyO1xuICBmcm9tQ29sOiBudW1iZXI7XG4gIHRvUm93OiBudW1iZXI7XG4gIHRvQ29sOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92ZUVmZmVjdFZpZXcge1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgZnJvbTogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICB0bzogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVUcmFpbFZpZXcge1xuICB4OiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbiAgbGVuZ3RoOiBzdHJpbmc7XG4gIGFuZ2xlOiBzdHJpbmc7XG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0NoYWxsZW5nZVRlbnNpb25WaWV3IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGNyaXRpY2FsOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc1Bvd2VyQ2FsbG91dFZpZXcge1xuICB0aXRsZTogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIGltcGFjdDogc3RyaW5nO1xuICBhbmltYWw6IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0FjaGlldmVtZW50VmlldyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICB1bmxvY2tlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNQcm9ncmVzc01ldHJpY1ZpZXcge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVTY29yZVZpZXcge1xuICBjb21ibzogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nO1xuICBzY29yZTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0dhbWVTY29yZVZpZXcge1xuICBiZXN0Q29tYm86IG51bWJlcjtcbiAgYmVzdE1vdmU/OiBDaGVzc2ltYWxzTW92ZVNjb3JlVmlldztcbiAgc2NvcmU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNTY29yZVBvcFZpZXcgZXh0ZW5kcyBDaGVzc2ltYWxzTW92ZVNjb3JlVmlldyB7XG4gIHg6IHN0cmluZztcbiAgeTogc3RyaW5nO1xufVxuXG5jb25zdCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TID0gMzYwO1xuY29uc3QgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMgPSA2MjA7XG5jb25zdCBDSEVTU0lNQUxTX0JPVF9DT0xPUjogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gJ2JsYWNrJztcbmNvbnN0IENIRVNTSU1BTFNfVFVUT1JJQUxfU1RFUFMgPSA3O1xuY29uc3QgQ0hFU1NJTUFMU19PTkxJTkVfVFVSTl9TRUNPTkRTID0gNDU7XG5jb25zdCBDSEVTU0lNQUxTX0NIQUxMRU5HRV9UVVJOX1NFQ09ORFMgPSAzMDtcbmNvbnN0IENIRVNTSU1BTFNfQ0hBTExFTkdFX0ZJTkFMX1RVUk5fU0VDT05EUyA9IDIwO1xuXG5jb25zdCBBTklNQUxTOiBDaGVzc2ltYWxzQW5pbWFsVmlld1tdID0gW1xuICB7IHR5cGU6ICdlYWdsZScsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvZWFnbGUuanBnJywgdG9uZTogNjU5LjI1IH0sXG4gIHsgdHlwZTogJ2J1bGwnLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2J1bGwuanBnJywgdG9uZTogMjYxLjYzIH0sXG4gIHsgdHlwZTogJ2thbmdhcm9vJywgYXNzZXRTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9rYW5nYXJvby5qcGcnLCB0b25lOiA1MjMuMjUgfSxcbiAgeyB0eXBlOiAnbGlvbicsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbGlvbi5qcGcnLCB0b25lOiAzOTIgfSxcbl07XG5cbmNvbnN0IENIRVNTSU1BTFNfQ0hBTExFTkdFX0xBRERFUjogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdFtdID0gW1xuICB7IGlkOiAnc3Byb3V0Jywgcm91bmQ6IDEsIHByb2ZpbGVJZDogJ2V4cGxvcmVyJywgZGlmZmljdWx0eTogJ2Vhc3knLCBib2FyZFNpemU6IDYsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdFNwcm91dEludHJvJyB9LFxuICB7IGlkOiAnc2VudGluZWwnLCByb3VuZDogMiwgcHJvZmlsZUlkOiAnZ3VhcmRpYW4nLCBkaWZmaWN1bHR5OiAnbm9ybWFsJywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RTZW50aW5lbEludHJvJyB9LFxuICB7IGlkOiAnaHVudGVyJywgcm91bmQ6IDMsIHByb2ZpbGVJZDogJ2h1bnRlcicsIGRpZmZpY3VsdHk6ICdub3JtYWwnLCBib2FyZFNpemU6IDYsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdEh1bnRlckludHJvJyB9LFxuICB7IGlkOiAnanVtcGVyJywgcm91bmQ6IDQsIHByb2ZpbGVJZDogJ2p1bXBlcicsIGRpZmZpY3VsdHk6ICdub3JtYWwnLCBib2FyZFNpemU6IDYsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdEp1bXBlckludHJvJyB9LFxuICB7IGlkOiAncHJlZGF0b3InLCByb3VuZDogNSwgcHJvZmlsZUlkOiAncHJlZGF0b3InLCBkaWZmaWN1bHR5OiAnaGFyZCcsIGJvYXJkU2l6ZTogOCwgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90UHJlZGF0b3JJbnRybycgfSxcbiAgeyBpZDogJ29yYWNsZScsIHJvdW5kOiA2LCBwcm9maWxlSWQ6ICdzdHJhdGVnaXN0JywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdE9yYWNsZUludHJvJyB9LFxuICB7IGlkOiAnc3ByaW50ZXInLCByb3VuZDogNywgcHJvZmlsZUlkOiAnc3ByaW50ZXInLCBkaWZmaWN1bHR5OiAnaGFyZCcsIGJvYXJkU2l6ZTogOCwgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90U3ByaW50ZXJJbnRybycgfSxcbiAgeyBpZDogJ2NoYW1waW9uJywgcm91bmQ6IDgsIHByb2ZpbGVJZDogJ3NlbnRpbmVsJywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdENoYW1waW9uSW50cm8nIH0sXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hlc3NpbWFscy1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbk1vZGFsLCBNb2RhbExheW91dENvbXBvbmVudCwgUmFuZ2VJbnB1dENvbXBvbmVudCwgVG9nZ2xlSW5wdXRDb21wb25lbnQsIFVzZXJBdmF0YXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYWluIGNsYXNzPVwiY2hlc3NpbWFscy1zaGVsbFwiIFtjbGFzcy5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uXT1cInByb2plY3Rpb25Nb2RlXCI+XG4gICAgICBAaWYgKHNjcmVlbigpID09PSAnaG9tZScpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWhlcm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1oZXJvX19sb2dvXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2xvZ28uanBnXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aDE+e3sgdCgnY2hlc3NpbWFsc1RpdGxlJykgfX08L2gxPlxuICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNTdWJ0aXRsZScpIH19PC9wPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhbmVsXCI+XG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWhvd3RvXCI+XG4gICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0hvd1RvVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzSG93VG9Cb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ob3d0b19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1sZWFybi1tb3JlXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydFR1dG9yaWFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzVHV0b3JpYWxTdGFydCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1sZWFybi1tb3JlXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuUnVsZXNNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnbGVhcm5Nb3JlJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fY29weVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRXllYnJvdycpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBib3RQcm9maWxlQXZhdGFyKGNoYWxsZW5nZU1lbnVCb3QoKS5wcm9maWxlSWQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VCb3RTdGF0dXNMYWJlbChjaGFsbGVuZ2VNZW51Qm90KCkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUJvdE5hbWUoY2hhbGxlbmdlTWVudUJvdCgpKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fbWV0YVwiPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxpdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+Mzwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VNZW51Um91bmRMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkNoYWxsZW5nZVZpZXcoKVwiPlxuICAgICAgICAgICAgICB7eyBhY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSA/IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZXN1bWUnKSA6IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VPcGVuJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNpemVcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvYXJkU2l6ZScpXCI+XG4gICAgICAgICAgICBAZm9yIChzaXplIG9mIGJvYXJkU2l6ZXM7IHRyYWNrIHNpemUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvYXJkU2l6ZSgpID09PSBzaXplXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb2FyZFNpemUuc2V0KHNpemUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2l6ZSB9fXh7eyBzaXplIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHNpemUgPT09IDYgPyB0KCdjaGVzc2ltYWxzU2l6ZVNtYWxsJykgOiB0KCdjaGVzc2ltYWxzU2l6ZUxhcmdlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW1vZGVcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc01vZGVUaXRsZScpXCI+XG4gICAgICAgICAgICBAZm9yIChtb2RlIG9mIGxvY2FsTW9kZXM7IHRyYWNrIG1vZGUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZExvY2FsTW9kZSgpID09PSBtb2RlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRMb2NhbE1vZGUuc2V0KG1vZGUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbG9jYWxNb2RlTGFiZWwobW9kZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWRpZmZpY3VsdHlcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvdERpZmZpY3VsdHknKVwiPlxuICAgICAgICAgICAgICBAZm9yIChkaWZmaWN1bHR5IG9mIGJvdERpZmZpY3VsdGllczsgdHJhY2sgZGlmZmljdWx0eSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQm90RGlmZmljdWx0eSgpID09PSBkaWZmaWN1bHR5XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RCb3REaWZmaWN1bHR5KGRpZmZpY3VsdHkpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eSkgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ib3RzXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb3RTdHlsZScpXCI+XG4gICAgICAgICAgICAgIEBmb3IgKHByb2ZpbGUgb2YgYXZhaWxhYmxlQm90UHJvZmlsZXMoKTsgdHJhY2sgcHJvZmlsZS5pZCkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQm90UHJvZmlsZUlkKCkgPT09IHByb2ZpbGUuaWRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkQm90UHJvZmlsZUlkLnNldChwcm9maWxlLmlkKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgcHJvZmlsZS5hdmF0YXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGJvdFByb2ZpbGVEZXNjcmlwdGlvbihwcm9maWxlKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICBAaWYgKHNlbGVjdGVkQm90UHJvZmlsZUlkKCkgPT09IHByb2ZpbGUuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPHA+e3sgYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGUpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydEdhbWUoKVwiPlxuICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1N0YXJ0JykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzT25saW5lVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVCb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAob25saW5lRXJyb3IoKSkge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19lcnJvclwiPnt7IG9ubGluZUVycm9yKCkgfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKG9ubGluZUxvYWRpbmcoKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2xvYWRpbmdcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc09ubGluZUxvYWRpbmcnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fY3JlYXRlXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwib25saW5lQWN0aW9uKCkgPT09ICdjcmVhdGUnXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdjcmVhdGUnXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlT25saW5lR2FtZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAob25saW5lQWN0aW9uKCkgPT09ICdjcmVhdGUnKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDcmVhdGVPbmxpbmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDcmVhdGVPbmxpbmVIaW50JykgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2pvaW5cIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzSm9pbk9ubGluZVRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtY29kZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNKb2luQ29kZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9ubGluZUpvaW5Db2RlKClcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ2NoZXNzaW1hbHNKb2luQ29kZVBsYWNlaG9sZGVyJylcIlxuICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9ubGluZUpvaW5Db2RlLnNldChub3JtYWxpemVHYW1lSWQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSkpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwib25saW5lQWN0aW9uKCkgPT09ICdqb2luJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAnam9pbidcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvbmxpbmVMb2FkaW5nKCkgfHwgIW9ubGluZUpvaW5Db2RlKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJqb2luT25saW5lR2FtZUJ5Q29kZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAob25saW5lQWN0aW9uKCkgPT09ICdqb2luJykge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzSm9pbk9ubGluZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgQGlmIChvbmxpbmVIaXN0b3J5KCkubGVuZ3RoKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lIGNoZXNzaW1hbHMtaGlzdG9yeVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1oaXN0b3J5X19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1oaXN0b3J5X19saXN0XCI+XG4gICAgICAgICAgICAgICAgQGZvciAoZW50cnkgb2Ygb25saW5lSGlzdG9yeSgpLnNsaWNlKDAsIDYpOyB0cmFjayBlbnRyeS5nYW1lSWQpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtXCIgKGNsaWNrKT1cIm9wZW5IaXN0b3J5R2FtZShlbnRyeSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBlbnRyeS5nYW1lSWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgaGlzdG9yeU91dGNvbWVMYWJlbChlbnRyeSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxlbT57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeU9wZW4nKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1ob21lLXNldHRpbmdzXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc1NldHRpbmdzJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzU2V0dGluZ3NTdWJ0aXRsZScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ob21lLXNldHRpbmdzX19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblNldHRpbmdzTW9kYWwoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTZXR0aW5ncycpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5BYm91dE1vZGFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQWJvdXQnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSBpZiAoc2NyZWVuKCkgPT09ICdjaGFsbGVuZ2UnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utdmlld1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWJhY2stbGlua1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYmFja1RvSG9tZSgpXCI+XG4gICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQmFja1RvTWVudScpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQgY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZC0tZGVkaWNhdGVkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGVyb1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VFeWVicm93JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMgY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fYWN0aW9ucy0taGVyb1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCk7IGFzIGFjdGl2ZVJ1bikge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzdW1lQ2hhbGxlbmdlKGFjdGl2ZVJ1bilcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlc3VtZScpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRDaGFsbGVuZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAge3sgYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCkgPyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhcnROZXcnKSA6IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGFydCcpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtZm9jdXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1mZWF0dXJlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgYm90UHJvZmlsZUF2YXRhcihjaGFsbGVuZ2VNZW51Qm90KCkucHJvZmlsZUlkKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZUJvdFN0YXR1c0xhYmVsKGNoYWxsZW5nZU1lbnVCb3QoKSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKGNoYWxsZW5nZU1lbnVCb3QoKSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoY2hhbGxlbmdlTWVudUJvdCgpLmludHJvS2V5KSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIDxlbT5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJvYXJkTGFiZWwnKS5yZXBsYWNlKCd7c2l6ZX0nLCBjaGFsbGVuZ2VNZW51Qm90KCkuYm9hcmRTaXplICsgJ3gnICsgY2hhbGxlbmdlTWVudUJvdCgpLmJvYXJkU2l6ZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgLCB7eyBjaGFsbGVuZ2VCb3REaWZmaWN1bHR5TGFiZWwoY2hhbGxlbmdlTWVudUJvdCgpKSB9fVxuICAgICAgICAgICAgICAgICAgPC9lbT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMaXZlcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+Mzwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZU1lbnVSb3VuZExhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJlc3RTdHJlYWsnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFdpblN0cmVhayB8fCAnLScgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVdpblJhdGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVdpblJhdGVMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQYXRoJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3V0ZUhpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUGF0aCcpXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYm90IG9mIGNoYWxsZW5nZUxhZGRlcjsgdHJhY2sgYm90LmlkKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2xlYXJlZF09XCJjaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWQgPj0gYm90LnJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWN1cnJlbnRdPVwiY2hhbGxlbmdlTWVudUJvdCgpLnJvdW5kID09PSBib3Qucm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZmluYWxdPVwiYm90LnJvdW5kID09PSBjaGFsbGVuZ2VMYWRkZXIubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiY2hhbGxlbmdlQm90TmFtZShib3QpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZUF2YXRhcihib3QucHJvZmlsZUlkKSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1wYW5lbFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0NoYWxsZW5nZVlvdXJQYXRoJylcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGFuZWxfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlWW91clBhdGgnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZS13aW5yYXRlc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc01vZGVXaW5SYXRlcycpXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtb2RlV2luUmF0ZUxhYmVsKCdjaGFsbGVuZ2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgbW9kZVN0YXRzTGluZSgnY2hhbGxlbmdlJykgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm90TW9kZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtb2RlV2luUmF0ZUxhYmVsKCdib3QnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgbW9kZVN0YXRzTGluZSgnYm90JykgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzT25saW5lUGxheWVyJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1vZGVXaW5SYXRlTGFiZWwoJ29ubGluZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxlbT57eyBtb2RlU3RhdHNMaW5lKCdvbmxpbmUnKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgQGlmIChjaGFsbGVuZ2VIaXN0b3J5KCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeVwiPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlY2VudFJ1bnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHJ1biBvZiBjaGFsbGVuZ2VIaXN0b3J5KCk7IHRyYWNrIHJ1bi5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlUnVuU3RhdHVzTGFiZWwocnVuKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoYWxsZW5nZVJ1bkxpbmUocnVuKSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGFuZWxcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VBY2hpZXZlbWVudHNQcmV2aWV3JylcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGFuZWxfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQWNoaWV2ZW1lbnRzUHJldmlldycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1hY2hpZXZlbWVudHNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudHMnKVwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoYWNoaWV2ZW1lbnQgb2YgY2hhbGxlbmdlRmVhdHVyZWRBY2hpZXZlbWVudHMoKTsgdHJhY2sgYWNoaWV2ZW1lbnQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmlzLXVubG9ja2VkXT1cImFjaGlldmVtZW50LnVubG9ja2VkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgYWNoaWV2ZW1lbnQuaWNvbiB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgYWNoaWV2ZW1lbnQudGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBhY2hpZXZlbWVudC5ib2R5IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnkgY2hlc3NpbWFscy1zZWNvbmRhcnktLWNvbXBhY3RcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5Qcm9ncmVzc01vZGFsKClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1RpdGxlJykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm9zdGVyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxzJylcIj5cbiAgICAgICAgICAgICAgQGZvciAoYm90IG9mIGNoYWxsZW5nZUxhZGRlcjsgdHJhY2sgYm90LmlkKSB7XG4gICAgICAgICAgICAgICAgPGFydGljbGVcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jbGVhcmVkXT1cImNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZCA+PSBib3Qucm91bmRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWN1cnJlbnRdPVwiY2hhbGxlbmdlTWVudUJvdCgpLnJvdW5kID09PSBib3Qucm91bmRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWZpbmFsXT1cImJvdC5yb3VuZCA9PT0gY2hhbGxlbmdlTGFkZGVyLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgYm90UHJvZmlsZUF2YXRhcihib3QucHJvZmlsZUlkKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VCb3RTdGF0dXNMYWJlbChib3QpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKGJvdCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPGVtPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb2FyZExhYmVsJykucmVwbGFjZSgne3NpemV9JywgYm90LmJvYXJkU2l6ZSArICd4JyArIGJvdC5ib2FyZFNpemUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgLCB7eyBjaGFsbGVuZ2VCb3REaWZmaWN1bHR5TGFiZWwoYm90KSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2VtPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtZ2FtZVwiPlxuICAgICAgICAgIEBpZiAocmVzdW1lU3BsYXNoVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaF9fcGF3XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAg8J+QvlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaFRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay10dXJuXT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMteW91ci10dXJuXT1cImlzQWN0aW9uYWJsZVR1cm4oKVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtd2FpdGluZy10dXJuXT1cImlzV2FpdGluZ0ZvclR1cm4oKVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtdGltZXItbG93XT1cImlzVHVyblRpbWVyTG93KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwXCI+XG4gICAgICAgICAgICAgICAge3sgdHVyblN0YXRlTGFiZWwoKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHdpblRpdGxlKCkgOiB0dXJuVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0dXJuU3RhdGVCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwXCI+XG4gICAgICAgICAgICAgIEBpZiAobG9nZ2VkSW5Vc2VyKCkpIHtcbiAgICAgICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJsb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBsb2NhbFBsYXllckF2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdChsb2dnZWRJblVzZXIoKSA/ICdsb2dnZWRQbGF5ZXInIDogJ2xvY2FsUGxheWVyJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBsb2dnZWRQbGF5ZXJOYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICBAaWYgKGxvZ2dlZFBsYXllckhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbG9nZ2VkUGxheWVySGFuZGxlKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiBnYW1lKCkuc3RhdHVzID09PSAnd2FpdGluZycpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1vbmxpbmUtLXdhaXRpbmdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDI+e3sgd2FpdGluZ1RpdGxlKCkgfX08L2gyPlxuICAgICAgICAgICAgICAgIDxwPnt7IHdhaXRpbmdCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGNhblJldmlld1BlbmRpbmdHdWVzdCgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXJcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocGVuZGluZ0d1ZXN0QXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwicGVuZGluZ0d1ZXN0QXZhdGFyUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyIGNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXItLWluaXRpYWxzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgcGVuZGluZ0d1ZXN0SW5pdGlhbHMoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0UGxheWVyJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHBlbmRpbmdHdWVzdE5hbWUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHBlbmRpbmdHdWVzdEhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHBlbmRpbmdHdWVzdEhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtZ2FtZS1jb2RlXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNHYW1lQ29kZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5pZCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGNhblJldmlld1BlbmRpbmdHdWVzdCgpKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwib25saW5lQWN0aW9uKCkgPT09ICdyZWplY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAncmVqZWN0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvbmxpbmVMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVqZWN0T25saW5lR3Vlc3QoKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAob25saW5lQWN0aW9uKCkgPT09ICdyZWplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZWplY3RHdWVzdCcpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwib25saW5lQWN0aW9uKCkgPT09ICdhY2NlcHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAnYWNjZXB0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvbmxpbmVMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWNjZXB0T25saW5lR3Vlc3QoKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAob25saW5lQWN0aW9uKCkgPT09ICdhY2NlcHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNBY2NlcHRHdWVzdCcpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY29weU9ubGluZUxpbmsoKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ29weUxpbmsnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaGFyZU9ubGluZUxpbmsoKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2hhcmVMaW5rJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc3RhdHVzXCI+XG4gICAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlUm91bmRMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VMaXZlc0xhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc01vdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5tb3ZlQ291bnQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDYXB0dXJlcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBjYXB0dXJlc1Njb3JlTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zdGF0dXNfX3Njb3JlXCIgW2NsYXNzLmlzLXBvcF09XCIhIXNjb3JlUG9wKClcIj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNSZXN1bHRTY29yZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBsaXZlU2NvcmVMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAodHVyblNlY29uZHNSZW1haW5pbmcoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtc3RhdHVzX190aW1lclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxvd109XCJpc1R1cm5UaW1lckxvdygpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuLS10aW1lci1wcm9ncmVzc109XCJ0dXJuVGltZXJQcm9ncmVzcygpXCJcbiAgICAgICAgICAgICAgICByb2xlPVwidGltZXJcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1R1cm5UaW1lcicpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHR1cm5UaW1lckxhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHQoJ2NoZXNzaW1hbHNXaW5uZXInKSA6IHQoJ2NoZXNzaW1hbHNQb3dlcnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHBsYXllckxhYmVsKGdhbWUoKS53aW5uZXIgPz8gJ3doaXRlJykgOiB1bmxvY2tlZExhYmVsKGdhbWUoKS5jdXJyZW50VHVybikgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB0KCdjaGVzc2ltYWxzUmVzdWx0JykgOiB0KCdjaGVzc2ltYWxzUml2YWwnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHdpblJlYXNvbkxhYmVsKCkgOiBwbGF5ZXJMYWJlbChnYW1lKCkuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93Q2hhbGxlbmdlSW5HYW1lUGFuZWwoKSkge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGNoYWxsZW5nZUxpdmVBdmF0YXIoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZVJvdW5kU3RhZ2VMYWJlbCgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlTGl2ZVJpdmFsTmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8cD57eyBjaGFsbGVuZ2VMaXZlUml2YWxMaW5lKCkgfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMaXZlcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxiPnt7IGNoYWxsZW5nZUxpdmVzTGFiZWwoKSB9fTwvYj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0cmVha01ldHJpYycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxiPnt7IGNoYWxsZW5nZUxpdmVTdHJlYWtMYWJlbCgpIH19PC9iPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm9hcmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VMaXZlQm9hcmRMYWJlbCgpIH19PC9iPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzVHVyblRpbWVyJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlTGl2ZVRpbWVyTGFiZWwoKSB9fTwvYj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVRlbnNpb25Nb21lbnQoKTsgYXMgdGVuc2lvbikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uIGNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24tLWxpdmVcIiBbY2xhc3MuaXMtY3JpdGljYWxdPVwidGVuc2lvbi5jcml0aWNhbFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgdGVuc2lvbi5pY29uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0ZW5zaW9uLnRpdGxlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxwPnt7IHRlbnNpb24uYm9keSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93T25saW5lU3RhdHVzKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWVycm9yXT1cIm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InIHx8IGdhbWUoKS5zdGF0dXMgPT09ICdleHBpcmVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1zeW5jaW5nXT1cIm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnY29ubmVjdGluZycgfHwgbW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG9ubGluZVN0YXR1c1RpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyBvbmxpbmVTdGF0dXNCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAodHV0b3JpYWxNb2RlKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy10dXRvcmlhbFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0dXRvcmlhbFByb2dyZXNzTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0dXRvcmlhbFRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyB0dXRvcmlhbEJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhpdFR1dG9yaWFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzVHV0b3JpYWxFeGl0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWFyZW5hXCI+XG4gICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAjYm9hcmRBbmNob3JcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLXdyYXBcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1vcmllbnRpbmddPVwiaXNCb2FyZE9yaWVudGluZygpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXN5bmNpbmddPVwibW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWJvYXJkLXNpemVdPVwicmV2aWV3R2FtZSgpLmJvYXJkU2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay12aWV3XT1cInJldmlld0dhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtcG93ZXItYWltaW5nXT1cIiEhc2VsZWN0ZWRBbmltYWwoKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheVJvd3MoKTsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGFyay1jZWxsXT1cImlzRGFya0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1lZGdlLWNlbGxdPVwiaXNFZGdlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMF09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMV09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMl09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItM109XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItNF09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItNV09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWRDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGVnYWxdPVwiaXNMZWdhbENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jYXB0dXJlXT1cImlzQ2FwdHVyZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtdGhyZWF0XT1cImlzVGhyZWF0ZW5lZENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtY2FwdHVyZS1yZWFkeV09XCJpc0NhcHR1cmVSZWFkeUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13aW5uaW5nXT1cImlzV2lubmluZ0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sYXN0XT1cImlzTGFzdE1vdmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbW92aW5nLXNvdXJjZV09XCJpc01vdmluZ1NvdXJjZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtbW92ZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1zb3VyY2UtZWZmZWN0XT1cImlzTW92ZUVmZmVjdFNvdXJjZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtY2FwdHVyZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0Q2FwdHVyZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtZWFnbGVdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2VhZ2xlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1idWxsXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdidWxsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAna2FuZ2Fyb28nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWxpb25dPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2xpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvamVjdGlvbk1vZGUgfHwgZ2FtZSgpLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhY2FuUGxheUN1cnJlbnRUdXJuKCkgfHwgISFtb3ZpbmdQaWVjZSgpIHx8IGJvdFRoaW5raW5nKCkgfHwgbW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2VsbCh7IHJvdywgY29sIH0pXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93UmFua0xhYmVsKGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSBjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJhbmtMYWJlbChyb3cpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0ZpbGVMYWJlbChyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUgY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlTGFiZWwoY29sKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBpZWNlQXQocm93LCBjb2wpOyBhcyBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrXT1cInBpZWNlLmNvbG9yID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYXllckxhYmVsKHBpZWNlLmNvbG9yKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19oZWFkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2Jhc2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGlzTGVnYWxDZWxsKHJvdywgY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdGFyZ2V0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VudGVyLWxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmVUcmFpbCgpOyBhcyB0cmFpbCkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlci10cmFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNhcHR1cmVdPVwidHJhaWwuY2FwdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1lYWdsZV09XCJ0cmFpbC5hbmltYWwgPT09ICdlYWdsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJ0cmFpbC5hbmltYWwgPT09ICdidWxsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJ0cmFpbC5hbmltYWwgPT09ICdrYW5nYXJvbydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtbGlvbl09XCJ0cmFpbC5hbmltYWwgPT09ICdsaW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwteF09XCJ0cmFpbC54XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC15XT1cInRyYWlsLnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWxlbmd0aF09XCJ0cmFpbC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWFuZ2xlXT1cInRyYWlsLmFuZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmluZ1BpZWNlKCk7IGFzIG1vdmluZykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb3ZpbmctcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWZyb20tcm93XT1cIm1vdmluZy5mcm9tUm93XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLWNvbF09XCJtb3ZpbmcuZnJvbUNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tcm93XT1cIm1vdmluZy50b1Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tY29sXT1cIm1vdmluZy50b0NvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiIFtjbGFzcy5pcy1ibGFja109XCJtb3ZpbmcuY29sb3IgPT09ICdibGFjaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fc2lkZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19uZWNrXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChwb3dlckNhbGxvdXQoKTsgYXMgY2FsbG91dCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jYXB0dXJlXT1cImNhbGxvdXQuY2FwdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1lYWdsZV09XCJjYWxsb3V0LmFuaW1hbCA9PT0gJ2VhZ2xlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1idWxsXT1cImNhbGxvdXQuYW5pbWFsID09PSAnYnVsbCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3Qta2FuZ2Fyb29dPVwiY2FsbG91dC5hbmltYWwgPT09ICdrYW5nYXJvbydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtbGlvbl09XCJjYWxsb3V0LmFuaW1hbCA9PT0gJ2xpb24nXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgYW5pbWFsR2x5cGgoY2FsbG91dC5hbmltYWwpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNhbGxvdXQudGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjYWxsb3V0LmJvZHkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxlbT57eyBjYWxsb3V0LmltcGFjdCB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChzY29yZVBvcCgpOyBhcyBwb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zY29yZS1wb3BcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jb21ib109XCJwb3AuY29tYm8gPiAxXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1zY29yZS1wb3AteF09XCJwb3AueFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tc2NvcmUtcG9wLXldPVwicG9wLnlcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPit7eyBwb3Auc2NvcmUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBwb3AubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwb3AuY29tYm8gPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyBzY29yZUNvbWJvTGFiZWwocG9wLmNvbWJvKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChjaGFsbGVuZ2VJbnRyb1Zpc2libGUoKSAmJiBhY3RpdmVDaGFsbGVuZ2VCb3QoKTsgYXMgaW50cm9Cb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGJvdFByb2ZpbGVBdmF0YXIoaW50cm9Cb3QucHJvZmlsZUlkKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VSb3VuZFN0YWdlTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlQm90TmFtZShpbnRyb0JvdCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdChpbnRyb0JvdC5pbnRyb0tleSkgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fZmFjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNCb2FyZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyBpbnRyb0JvdC5ib2FyZFNpemUgfX14e3sgaW50cm9Cb3QuYm9hcmRTaXplIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm90RGlmZmljdWx0eScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VCb3REaWZmaWN1bHR5TGFiZWwoaW50cm9Cb3QpIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRpc21pc3NDaGFsbGVuZ2VJbnRybygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VJbnRyb0N0YScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKHNob3VsZFNob3dGaW5pc2hlZE92ZXJsYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy12aWN0b3J5XT1cImlzQ3VycmVudFBsYXllclZpY3RvcnkoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWRlZmVhdF09XCJpc0N1cnJlbnRQbGF5ZXJEZWZlYXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yYXlzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24gcmliYm9uLWFcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiByaWJib24tYlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uIHJpYmJvbi1jXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNHYW1lT3ZlcicpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAod2lubmVyQXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz1cImhhcy1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIndpbm5lckF2YXRhclVybCgpXCIgW2FsdF09XCJ3aW5uZXJEaXNwbGF5TmFtZSgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgd2lubmVySW5pdGlhbHMoKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgd2luVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IHdpbm5lclNpZGVMYWJlbCgpIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBtb3Zlc1N1bW1hcnkoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPGRsIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RhdCBvZiByZXN1bHRTdGF0cygpOyB0cmFjayBzdGF0LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pnt7IHN0YXQubGFiZWwgfX08L2R0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD57eyBzdGF0LnZhbHVlIH19PC9kZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICBAaWYgKG9ubGluZVJvbGUoKSAhPT0gJ3NwZWN0YXRvcicgJiYgIXByb2plY3Rpb25Nb2RlKSB7XG4gICAgICAgICAgICAgIDxzZWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXBvd2Vyc1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxvY2tlZF09XCIhcG93ZXJQbGF5ZXIoKS5wb3dlclVubG9ja2VkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtcmVhZHldPVwicG93ZXJQbGF5ZXIoKS5wb3dlclVubG9ja2VkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdW5sb2NrLXB1bHNlXT1cInBvd2VyVW5sb2NrUHVsc2UoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzQW5pbWFsQ2FyZHMnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZCA/IHQoJ2NoZXNzaW1hbHNVbmxvY2tlZCcpIDogdCgnY2hlc3NpbWFsc0xvY2tlZCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8cD57eyBwb3dlclBsYXllcigpLnBvd2VyVW5sb2NrZWQgPyB0KCdjaGVzc2ltYWxzQ2FyZHNSZWFkeScpIDogdCgnY2hlc3NpbWFsc0NhcmRzTG9ja2VkJykgfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2FyZHNcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGFuaW1hbCBvZiBhbmltYWxzOyB0cmFjayBhbmltYWwudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQW5pbWFsKCkgPT09IGFuaW1hbC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdXNlZF09XCJwb3dlclBsYXllcigpLmNhcmRzW2FuaW1hbC50eXBlXS51c2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblVzZVBvd2VyQ2FyZHMoKSB8fCBwb3dlclBsYXllcigpLmNhcmRzW2FuaW1hbC50eXBlXS51c2VkIHx8IGlzUG93ZXJDYXJkQmxvY2tlZEJ5VHV0b3JpYWwoYW5pbWFsLnR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQW5pbWFsKGFuaW1hbClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWFuaW1hbC1mYWNlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiYW5pbWFsLmFzc2V0U3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJhbmltYWxMYWJlbChhbmltYWwudHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhbmltYWxMYWJlbChhbmltYWwudHlwZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICBAaWYgKGhhc1JlcGxheUNvbnRyb2xzKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1yZXBsYXlcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgcmVwbGF5UG9zaXRpb25MYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmV2aWV3UHJldmlvdXMoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3UHJldmlvdXNNb3ZlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlQcmV2aW91cycpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmV2aWV3TmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXZpZXdOZXh0TW92ZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVwbGF5TmV4dCcpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VsdFwiPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHdpblRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgd2luQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoc3RhdCBvZiByZXN1bHRTdGF0cygpOyB0cmFjayBzdGF0LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHN0YXQubGFiZWwgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8Yj57eyBzdGF0LnZhbHVlIH19PC9iPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bHRfX2RldGFpbFwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXN1bHRQb3dlcnNVc2VkJykucmVwbGFjZSgne3Bvd2Vyc30nLCByZXN1bHRQb3dlcnNMYWJlbCgpKSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bHRfX2RldGFpbFwiPlxuICAgICAgICAgICAgICAgIHt7IHJlc3VsdEJlc3RNb3ZlTGFiZWwoKSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0JvdFJlcG9ydCgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYm90LXJlcG9ydFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgZ2FtZUJvdFByb2ZpbGUoKT8uYXZhdGFyIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBib3RSZXBvcnRUaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxwPnt7IGJvdFJlcG9ydEJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXNDaGFsbGVuZ2VBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdmljdG9yeV09XCJjaGFsbGVuZ2VMYXN0V29uKClcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWRlZmVhdF09XCJjaGFsbGVuZ2VMYXN0V29uKCkgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVyb1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBjaGFsbGVuZ2VTdW1tYXJ5QXZhdGFyKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZVJvdW5kU3RhZ2VMYWJlbCgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZU91dGNvbWVUaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHA+e3sgY2hhbGxlbmdlT3V0Y29tZUJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlSGFzTmV3UmVjb3JkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJlY29yZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPuKYhTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VOZXdSZWNvcmQnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlVGVuc2lvbk1vbWVudCgpOyBhcyB0ZW5zaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uXCIgW2NsYXNzLmlzLWNyaXRpY2FsXT1cInRlbnNpb24uY3JpdGljYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyB0ZW5zaW9uLmljb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdGVuc2lvbi50aXRsZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdGVuc2lvbi5ib2R5IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBjaGFsbGVuZ2VTdW1tYXJ5QXZhdGFyKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZVJpdmFsVm9pY2VMYWJlbCgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVJpdmFsVm9pY2VUaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHA+e3sgY2hhbGxlbmdlUml2YWxWb2ljZUJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMoKTsgYXMgcm91bmRTdGF0cykge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTY29yZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IHJvdW5kU3RhdHMuc2NvcmUgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCZXN0TW92ZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IHJvdW5kU3RhdHMuYmVzdE1vdmVTY29yZSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBvd2Vyc1VzZWQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyB0b3RhbENoYWxsZW5nZVBvd2Vycyhyb3VuZFN0YXRzKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJlc3RDb21ibycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxiPnh7eyByb3VuZFN0YXRzLmJlc3RDb21ibyB8fCAxIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ2FwdHVyZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyByb3VuZFN0YXRzLmNhcHR1cmVzIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VMaXZlc0xhYmVsKCkgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2JldHdlZW4nICYmIGFjdGl2ZUNoYWxsZW5nZUJvdCgpOyBhcyBuZXh0Qm90KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGJvdFByb2ZpbGVBdmF0YXIobmV4dEJvdC5wcm9maWxlSWQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlTmV4dFJpdmFsTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUJvdE5hbWUobmV4dEJvdCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHQobmV4dEJvdC5pbnRyb0tleSkgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgY2hhbGxlbmdlTmV4dFJpdmFsSGludCgpIH19PC9lbT5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVBoYXNlKCkgPT09ICdiZXR3ZWVuJykge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb250aW51ZUNoYWxsZW5nZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgY2hhbGxlbmdlQ29udGludWVMYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0Q2hhbGxlbmdlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUGxheUFnYWluJykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzZXJpZXNTdW1tYXJ5KCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zZXJpZXNcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzU2VyaWVzVGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNlcmllc1N1bW1hcnkoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgQGlmIChsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzU2VyaWVzTGFzdFdpbm5lcicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgbGFzdFNlcmllc1dpbm5lckxhYmVsKCkpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChyZW1hdGNoU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNcIiBbY2xhc3MuaXMtaW5jb21pbmddPVwicmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgcmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoZXNzaW1hbHNSZW1hdGNoSW5jb21pbmdUaXRsZScpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZFRpdGxlJylcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICByZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1xuICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hlc3NpbWFsc1JlbWF0Y2hJbmNvbWluZ0JvZHknKVxuICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hlc3NpbWFsc1JlbWF0Y2hSZXF1ZXN0ZWRCb2R5JylcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChzZXJpZXNTdW1tYXJ5KCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zZXJpZXMgY2hlc3NpbWFscy1zZXJpZXMtLWNvbXBhY3RcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzU2VyaWVzVGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNlcmllc1N1bW1hcnkoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgQGlmIChsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzU2VyaWVzTGFzdFdpbm5lcicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgbGFzdFNlcmllc1dpbm5lckxhYmVsKCkpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIGNoZXNzaW1hbHMtcmVtYXRjaC1wbGF5ZXJcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hPcHBvbmVudEF2YXRhclVybCgpKSB7XG4gICAgICAgICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJyZW1hdGNoT3Bwb25lbnRBdmF0YXJQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciBjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyLS1pbml0aWFsc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyByZW1hdGNoT3Bwb25lbnRJbml0aWFscygpIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1JpdmFsJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyByZW1hdGNoT3Bwb25lbnROYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIEBpZiAocmVtYXRjaE9wcG9uZW50SGFuZGxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHJlbWF0Y2hPcHBvbmVudEhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzX19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJyZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbWF0Y2hTdGF0ZSgpID09PSAncmVxdWVzdGVkJyB8fCByZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0T25saW5lUmVtYXRjaCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAge3sgcmVtYXRjaEFjdGlvbkxhYmVsKCkgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnICYmIGNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdFJlc2lnbigpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1Jlc2lnbicpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIGNhbkNvbnRyb2xDdXJyZW50R2FtZSgpICYmIHJlbWF0Y2hTdGF0ZSgpID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cInJlbWF0Y2hMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgcmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcXVlc3RPbmxpbmVSZW1hdGNoKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChyZW1hdGNoTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHt7IHJlbWF0Y2hBY3Rpb25MYWJlbCgpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChnYW1lKCkubW9kZSAhPT0gJ29ubGluZScgJiYgIWlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0UmVzdGFydEdhbWUoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ3Jlc3RhcnQnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIGdhbWUoKS5pZCAmJiAhcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaGFyZVByb2plY3Rpb25MaW5rKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2hhcmVQcm9qZWN0aW9uJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VNb2RlKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZU1vZGUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzUnVsZXNNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzUnVsZXNUaXRsZScpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwidCgnY2hlc3NpbWFsc1J1bGVzU3VidGl0bGUnKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwicnVsZXNBY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlUnVsZXNNb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiY2xvc2VSdWxlc01vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19faGVyb1wiXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3R1dG9yaWFsLXNhdmFubmEuanBnXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjE8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlR29hbFRpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlR29hbEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj4yPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZU1vdmVUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZU1vdmVCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+Mzwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVQb3dlcnNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZVBvd2Vyc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj40PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUNhcmRzVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHQoJ2NoZXNzaW1hbHNSdWxlRWFnbGUnKSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgdCgnY2hlc3NpbWFsc1J1bGVCdWxsJykgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHQoJ2NoZXNzaW1hbHNSdWxlS2FuZ2Fyb28nKSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW9uJykgfX08L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+NTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW1pdHNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZUxpbWl0c0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc1NldHRpbmdzTW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VTZXR0aW5nc01vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwidCgnY2hlc3NpbWFsc1NldHRpbmdzVGl0bGUnKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cInQoJ2NoZXNzaW1hbHNTZXR0aW5nc1N1YnRpdGxlJylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFtmb290ZXJdPVwiZmFsc2VcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVNldHRpbmdzTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2V0dGluZ3NcIj5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8dmFsLXRvZ2dsZS1pbnB1dCBbcHJvcHNdPVwibXVzaWNUb2dnbGVQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgPHZhbC1yYW5nZS1pbnB1dCBbcHJvcHNdPVwibXVzaWNWb2x1bWVQcm9wcygpXCIgKHJhbmdlQ2hhbmdlKT1cInNldE11c2ljVm9sdW1lKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDx2YWwtdG9nZ2xlLWlucHV0IFtwcm9wc109XCJzZnhUb2dnbGVQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgPHZhbC1yYW5nZS1pbnB1dCBbcHJvcHNdPVwic2Z4Vm9sdW1lUHJvcHMoKVwiIChyYW5nZUNoYW5nZSk9XCJzZXRTZnhWb2x1bWUoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc1Byb2dyZXNzTW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VQcm9ncmVzc01vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwidCgnY2hlc3NpbWFsc1Byb2dyZXNzVGl0bGUnKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cInQoJ2NoZXNzaW1hbHNQcm9ncmVzc1N1YnRpdGxlJylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFtmb290ZXJdPVwiZmFsc2VcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVByb2dyZXNzTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzcy1oZXJvXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VZb3VyUGF0aCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVdpblJhdGVMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzSGVyb0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzLWhlcm9fX3N0YXRzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJlc3RSb3VuZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxiPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZCB8fCAnLScgfX08L2I+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCZXN0U3RyZWFrJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlU3RhdHMoKS5iZXN0V2luU3RyZWFrIHx8ICctJyB9fTwvYj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzVG90YWxTY29yZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxiPnt7IGNoYWxsZW5nZVN0YXRzKCkudG90YWxTY29yZSB9fTwvYj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX3BhbmVsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNNb2RlV2luUmF0ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzTW9kZXNIaW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1tb2RlLXdpbnJhdGVzIGNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcy0tbW9kYWxcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1vZGVXaW5SYXRlTGFiZWwoJ2NoYWxsZW5nZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8ZW0+e3sgbW9kZVN0YXRzTGluZSgnY2hhbGxlbmdlJykgfX08L2VtPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm90TW9kZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbW9kZVdpblJhdGVMYWJlbCgnYm90JykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxlbT57eyBtb2RlU3RhdHNMaW5lKCdib3QnKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVQbGF5ZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1vZGVXaW5SYXRlTGFiZWwoJ29ubGluZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8ZW0+e3sgbW9kZVN0YXRzTGluZSgnb25saW5lJykgfX08L2VtPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19fcGFuZWxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVRpdGxlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc0NoYWxsZW5nZUhpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19tZXRyaWNzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJlc3RSb3VuZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkIHx8ICctJyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdFN0cmVhaycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5iZXN0V2luU3RyZWFrIHx8ICctJyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVjZW50UnVucycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5jaGFsbGVuZ2VzUGxheWVkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0dXNDb21wbGV0ZWQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuY2hhbGxlbmdlc0NvbXBsZXRlZCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NCZXN0Um91bmRTY29yZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRTY29yZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NUb3RhbFNjb3JlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLnRvdGFsU2NvcmUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX3BhbmVsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1Bvd2VycycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NQb3dlcnNIaW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19fbWV0cmljc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHBvd2VyIG9mIHByb2dyZXNzUG93ZXJTdGF0cygpOyB0cmFjayBwb3dlci5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBwb3dlci5sYWJlbCB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcG93ZXIudmFsdWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX3BhbmVsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudHMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzQWNoaWV2ZW1lbnRzSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzIGNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzLS1tb2RhbFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGFjaGlldmVtZW50IG9mIGNoYWxsZW5nZUFjaGlldmVtZW50cygpOyB0cmFjayBhY2hpZXZlbWVudC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmlzLXVubG9ja2VkXT1cImFjaGlldmVtZW50LnVubG9ja2VkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGFjaGlldmVtZW50Lmljb24gfX08L2I+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgYWNoaWV2ZW1lbnQudGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgYWNoaWV2ZW1lbnQuYm9keSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICBAaWYgKGNoYWxsZW5nZUhpc3RvcnkoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19wYW5lbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlY2VudFJ1bnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnkgY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeS0tbW9kYWxcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHJ1biBvZiBjaGFsbGVuZ2VIaXN0b3J5KCk7IHRyYWNrIHJ1bi5pZCkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VSdW5TdGF0dXNMYWJlbChydW4pIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNoYWxsZW5nZVJ1bkxpbmUocnVuKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzQWJvdXRNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZUFib3V0TW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzQWJvdXRUaXRsZScpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwidCgnY2hlc3NpbWFsc0Fib3V0U3VidGl0bGUnKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiYWJvdXRBY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlQWJvdXRNb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiY2xvc2VBYm91dE1vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWFib3V0XCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1hYm91dF9fbG9nb1wiXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL21lbnUtbG9nby5qcGdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc0Fib3V0Qm9keScpIH19PC9wPlxuICAgICAgICAgICAgPGRsPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkdD57eyB0KCdjaGVzc2ltYWxzQWJvdXRMaWJWZXJzaW9uJykgfX08L2R0PlxuICAgICAgICAgICAgICAgIDxkZD57eyB2YWx0ZWNoQ29tcG9uZW50c1ZlcnNpb24gfX08L2RkPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCIhIWNvbmZpcm1BY3Rpb24oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJoYW5kbGVDb25maXJtTW9kYWxEaXNtaXNzZWQoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJjb25maXJtVGl0bGUoKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cImNvbmZpcm1Cb2R5KClcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFthY3Rpb25zXT1cImNvbmZpcm1BY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlQ29uZmlybU1vZGFsKClcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJjb25maXJtUGVuZGluZ0FjdGlvbigkZXZlbnQuYWN0aW9uPy50b2tlbilcIlxuICAgICAgICAvPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICNmZmZmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjZmZmYWYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43Mik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogIzJlM2EyYztcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjNTE2NDNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5OiAjMmU2ZjNlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeTogI2E4YTA2YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3k6ICNjMDZhM2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3ktcmdiOiAxOTIsIDEwNiwgNjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lLXJnYjogMTQyLCAxNDcsIDk4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQ6ICMzN2YyOGE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2I6IDU1LCAyNDIsIDEzODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljOiAjZjdkNDVhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtcmdiOiAyNDcsIDIxMiwgOTA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1ob3Q6ICNmZmY1NmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwOiAjYjc3YTE4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtd2FybmluZzogI2Y0YzU0MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiOiAyNDQsIDE5NywgNjY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlLXJnYjogdmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmU6ICMxZmNkYjM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYjogMzEsIDIwNSwgMTc5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdDogIzhjNmI0ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3QtcmdiOiAxNDAsIDEwNywgNzk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjZjNmNGU4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiAjN2Y5NDRkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGU6ICNmM2VhZGI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1saW5lOiByZ2JhKDgyLCA2NSwgNDYsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSg4NCwgNjIsIDM0LCAwLjUyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xMnJlbSByZ2JhKDcyLCA1OCwgMzYsIDAuMjIpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4zNHJlbSAwLjQycmVtIHJnYmEoNzIsIDU4LCAzNiwgMC4yMikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbDogIzI0MjkzNjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGU6ICMxNzFiMjU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjFyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMzJyZW0gMC40MnJlbSByZ2JhKDAsIDAsIDAsIDAuMzYpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQ6ICNjNzlhNDI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1nb2xkLWRhcms6ICM4YTVmMjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZzogI2ZmZmRmNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWlubmVyLWJnOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6IGdyYXlzY2FsZSgwLjIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjcyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgNjByZW0pO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogIzE3MjExNjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogIzBmMTcwZjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICNjOGNmYjE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjIyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNreTogI2MwNmEzZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmUtcmdiOiAxNDIsIDE0NywgOTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNmM2Y0ZTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtZGFyazogIzdmOTQ0ZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMzQpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCB7XG4gICAgICAgIG9yZGVyOiAwO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDQyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDIycmVtKSxcbiAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgOTIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwLjlyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoX19wYXcge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogY2xhbXAoNC42cmVtLCAxNnZ3LCA1LjZyZW0pO1xuICAgICAgICBoZWlnaHQ6IGNsYW1wKDQuNnJlbSwgMTZ2dywgNS42cmVtKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS41NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSAyNSUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NiksIHRyYW5zcGFyZW50IDM0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjIyKSksXG4gICAgICAgICAgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpIDgyJSwgd2hpdGUpO1xuICAgICAgICBib3JkZXI6IDAuMTJyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAxLjE1cmVtIDIuNnJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTYpLFxuICAgICAgICAgIDAgMCAwIDAuNDJyZW0gdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KSxcbiAgICAgICAgICBpbnNldCAwIC0wLjI1cmVtIDAuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXJlc3VtZS1wdWxzZSAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDIuNDVyZW0sIDl2dywgMy4zNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC4yOHJlbSAwLjM4cmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4xOCkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS41NXJlbSwgNXZ3LCAyLjRyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBwIHtcbiAgICAgICAgbWF4LXdpZHRoOiAyNHJlbTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1yZXN1bWUtcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjI1cmVtKSBzY2FsZSgxLjA0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtc3BpbiB7XG4gICAgICAgIHRvIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1vbmxpbmUtcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgICBvcGFjaXR5OiAwLjc4O1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMjIpO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLXNoZWxsLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1zaGVsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogIzE3MjExNjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN1cmZhY2U6ICMwZjE3MGY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoMjQ2LCAyMjcsIDIxMywgMC4yMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiAjZjZmM2U5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICNjOGNmYjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zb2Z0OiByZ2JhKDExMSwgMTIyLCA2MCwgMC4yMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5OiAjMmU2ZjNlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeTogI2E4YTA2YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3k6ICNjMDZhM2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3ktcmdiOiAxOTIsIDEwNiwgNjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lLXJnYjogMTQyLCAxNDcsIDk4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1saWdodDogI2U4ZWFkYztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtZGFyazogIzVmNzA0MDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvYXJkLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM0KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmU6ICM2NmYyZDc7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYjogMTAyLCAyNDIsIDIxNTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3Q6ICNjZGJlOWI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0LXJnYjogMjA1LCAxOTAsIDE1NTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWZpbGw6ICNmZmZhZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaWRlOiAjZjBlNWQ0O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtbGluZTogcmdiYSg4MiwgNjUsIDQ2LCAwLjEyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoODQsIDYyLCAzNCwgMC40OCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMTJyZW0gcmdiYSgwLCAwLCAwLCAwLjI0KSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMzRyZW0gMC40MnJlbSByZ2JhKDAsIDAsIDAsIDAuMykpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbDogIzIwMjYzMztcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGU6ICMxMTE2MjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xcmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjM0cmVtIDAuNDRyZW0gcmdiYSgwLCAwLCAwLCAwLjUyKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZzogI2ZmZmRmNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWlubmVyLWJnOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDI0MiwgMjMwLCAyMTMsIDAuMjQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDAsIDAsIDAsIDAuMjIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6XG4gICAgICAgICAgZ3JheXNjYWxlKDAuMzIpXG4gICAgICAgICAgc2F0dXJhdGUoMC43Mik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtaW1nLW9wYWNpdHk6IDAuNTg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS43NXJlbTtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMS4yNXJlbSwgNXZ3LCAyLjVyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKSwgdHJhbnNwYXJlbnQgMjAlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmRmOGVlIDAlLCAjZmZmZmZmIDQwJSwgI2VkZjNkZiAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtaGVybyxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtaGVybyB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxOCUgMTIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxMTFhMTAgMCUsICMxNzIxMTYgNDglLCAjMGYxNzBmIDEwMCUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMjIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19sb2dvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IG1pbigyMnJlbSwgODJ2dyk7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjM1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMXJlbSAyLjVyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjEpLFxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKDQ2LCA1OCwgNDQsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19sb2dvIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMnJlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVybyBoMSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjRyZW0sIDl2dywgNC41cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIHAsXG4gICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgxcmVtLCA0dncsIDEuNXJlbSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYW5lbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMS4xMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nIHtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBoMixcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIge1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fY3JlYXRlLFxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4gPiBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fZXJyb3Ige1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nIHNwYW4ge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXI6IDAuMTVyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc3BpbiAwLjc1cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZS1jb2RlIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4zNXJlbSwgNnZ3LCAycmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3Rvcnkge1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gZW0ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLXNldHRpbmdzIHtcbiAgICAgICAgZ2FwOiAwLjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtc2V0dGluZ3NfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDlyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZm9udC1zaXplOiAxLjA1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCB7XG4gICAgICAgIG9yZGVyOiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNzVyZW07XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTUlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtYmxhY2stdHVybiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjI4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjE0KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1maW5pc2hlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuNDIpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTUlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM1KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xOCksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWZpbmlzaGVkIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy15b3VyLXR1cm4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNDgpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMTJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMiksXG4gICAgICAgICAgMCAwLjk1cmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy15b3VyLXR1cm4gLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMzJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy10dXJuLXB1bHNlIDEuNDVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtdGltZXItbG93IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuNSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4xMnJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpLFxuICAgICAgICAgIDAgMC45NXJlbSAycmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy10aW1lci1sb3cgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLWNvbnRyYXN0LCAjZmZmZmZmKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXdhaXRpbmctdHVybiAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy10dXJuLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEuMDM1KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMnJlbSAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgc3Ryb25nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxcmVtLCAzLjV2dywgMS4yNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHAge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAxMHJlbTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTdyZW0sIDQyJSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjU1cmVtIDAuM3JlbSAwLjM1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1saWdodC1yZ2IsIDI0NCwgMjQ1LCAyNDgpLCAwLjcyKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHZhbC11c2VyLWF2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZmxleDogMCAwIDIuMjVyZW07XG4gICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMjVyZW07XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyLS1pbml0aWFscyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCAuY2hlc3NpbWFscy10dXJuLWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDIuMjVyZW07XG4gICAgICAgIGhlaWdodDogMi4yNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4wNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgb3JkZXI6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8sXG4gICAgICAuY2hlc3NpbWFscy10aXAsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXksXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG9fX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1ob3d0byxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtaG93dG8ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjQ2LCAyMjcsIDIxMywgMC4yKTtcbiAgICAgICAgYmFja2dyb3VuZDogIzE3MjExNjtcbiAgICAgICAgY29sb3I6ICNmNmYzZTk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1ob3d0byBwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1ob3d0byBwIHtcbiAgICAgICAgY29sb3I6ICNjOGNmYjE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU4cmVtIDAuNnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIGIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xMjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fZGV0YWlsIHtcbiAgICAgICAgbWFyZ2luOiAwLjJyZW0gMCAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc4cmVtIDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0ID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMi41cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBmb250LXNpemU6IDEuNDVyZW07XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEuMzVyZW0gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAwLjk1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDkpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMgPiBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAwLjcycmVtO1xuICAgICAgICBoZWlnaHQ6IDAuNzJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjM4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzLmlzLXN5bmNpbmcgPiBzcGFuIHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLW9ubGluZS1wdWxzZSA5MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cy5pcy1lcnJvciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjI4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMSksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cy5pcy1lcnJvciA+IHNwYW4ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xMnJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE4cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43OHJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzLS1jb21wYWN0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHtcbiAgICAgICAgb3JkZXI6IDM7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0bztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCA+IGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xOHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3ODA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMge1xuICAgICAgICBvcmRlcjogNTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMuaXMtaW5jb21pbmcge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjM4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xNCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllcixcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtcmVtYXRjaC1wbGF5ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c19fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzX19hY3Rpb25zIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjk1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBoMixcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4yZnIpIG1pbm1heCgxMHJlbSwgYXV0bykgYXV0bztcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjdyZW0gMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zaGFkb3ctcmdiKSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMThyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fY29weSBzcGFuLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fcml2YWwgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2NvcHkgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMDVyZW0sIDIuNXZ3LCAxLjMycmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2NvcHkgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3ODA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX21ldGEge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMy44cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX21ldGEgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4wOHJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOTVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDJyZW0gMC41cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX21ldGEgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC40NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjE1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMTVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjEycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fcml2YWwgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS12aWV3IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1iYWNrLWxpbmsge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW0gMC43MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuOXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KSwgdHJhbnNwYXJlbnQgNTQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLWdsYXNzLWhpZ2hsaWdodCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDIuMnJlbSByZ2JhKDc5LCA1OCwgMzUsIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGVybyxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1mb2N1cyxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zZWNvbmRhcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxLjFmcikgbWlubWF4KDE0cmVtLCAwLjlmcik7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19jb3B5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjI4cmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19jb3B5IHNwYW4sXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3V0ZSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYW5lbF9faGVhZGluZyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4yNXJlbSwgMy41dncsIDEuOXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZCBwLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3ODA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4xMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tZmVhdHVyZSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDhyZW07XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjQ1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5IHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIHAge1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBlbSB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE2cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMtLWhlcm8ge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGUsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGFuZWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjEyNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlID4gZGl2OmZpcnN0LWNoaWxkLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsX19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3V0ZSA+IGRpdjpmaXJzdC1jaGlsZCA+IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGgge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIHBhZGRpbmctYmxvY2s6IDAuMXJlbTtcbiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBzcGFuIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjE1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMTVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmcpO1xuICAgICAgICBmb250LXNpemU6IDEuMDhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoIHNwYW4uaXMtY2xlYXJlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMzQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoIHNwYW4uaXMtY3VycmVudCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjQ4KTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoIHNwYW4uaXMtZmluYWwge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXdhcm5pbmctcmdiLCAyNTUsIDE5NiwgOSksIDAuNDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm9zdGVyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNzg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgYXJ0aWNsZS5pcy1jbGVhcmVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4yNik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMSksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm9zdGVyIGFydGljbGUuaXMtY3VycmVudCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjM4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgYXJ0aWNsZS5pcy1maW5hbCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itd2FybmluZy1yZ2IsIDI1NSwgMTk2LCA5KSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgYXJ0aWNsZSA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgYXJ0aWNsZS5pcy1jdXJyZW50ID4gc3BhbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm9zdGVyIGVtIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjJyZW07XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm9zdGVyIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgcCB7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xODtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ4cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb2RlLXdpbnJhdGVzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb2RlLXdpbnJhdGVzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOThyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb2RlLXdpbnJhdGVzIGVtIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgPiBzcGFuLmlzLXVubG9ja2VkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMyk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KSwgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCkpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgYiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxLjlyZW07XG4gICAgICAgIGhlaWdodDogMS45cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgLmlzLXVubG9ja2VkIGIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGNvbG9yOiAjZmZmYWYwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc3BhbiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA2cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42N3JlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5LS1jb21wYWN0IHtcbiAgICAgICAgbWluLWhlaWdodDogMi40NXJlbTtcbiAgICAgICAgcGFkZGluZy1ibG9jazogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3Mge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzLWhlcm8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAwLjk1ZnIpIG1pbm1heCgwLCAxLjA1ZnIpO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3MtaGVybyA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzLWhlcm8gc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3MtaGVybyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjQ1cmVtLCA1dncsIDIuMXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3MtaGVybyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3MtaGVyb19fc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3MtaGVyb19fc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4wOHJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzcy1oZXJvX19zdGF0cyBiIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19wYW5lbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX3BhbmVsID4gc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19tZXRyaWNzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19tZXRyaWNzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjhyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19tZXRyaWNzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzc19fbWV0cmljcyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcy0tbW9kYWwsXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMtLW1vZGFsIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMtLW1vZGFsIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMtLW1vZGFsIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeS0tbW9kYWwge1xuICAgICAgICBib3JkZXItdG9wOiAwO1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnkgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNnJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeS5pcy12aWN0b3J5IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4zMik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5LmlzLWRlZmVhdCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjI4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMSksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8sXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVybyA+IHNwYW4sXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2UgPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjU1cmVtO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvIGRpdixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8gc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2Ugc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2UgPiBzcGFuIHtcbiAgICAgICAgd2lkdGg6IDIuMzVyZW07XG4gICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yZWNvcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS40NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBjb2xvcjogI2ZmZmFmMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLmlzLWNyaXRpY2FsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMzgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xNiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24gPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgIGhlaWdodDogMi4yNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xOCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbi5pcy1jcml0aWNhbCA+IHNwYW4ge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTRyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24gc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiBwIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIGIge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IGVtIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWxlYXJuLW1vcmUge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuNzVyZW0gMS42cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgb3JkZXI6IDM7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMnJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuODc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjQyKSAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3RpbWVyOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogYXV0byAwIDA7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGhlaWdodDogMC4yMnJlbTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgodmFyKC0tdGltZXItcHJvZ3Jlc3MsIDEpKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxODBtcyBsaW5lYXIsIGJhY2tncm91bmQgMTgwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lci5pcy1sb3cge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC41OCkgIWltcG9ydGFudDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTYpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgIWltcG9ydGFudDtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXR1cm4tcHVsc2UgODIwbXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIuaXMtbG93OjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lci5pcy1sb3cgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3Njb3JlLmlzLXBvcCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1zY29yZS1wdWxzZSA2MjBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3RpbWVyIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lciBzdHJvbmcge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlIHtcbiAgICAgICAgb3JkZXI6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMWZyKSBtaW5tYXgoMCwgMS4zNWZyKTtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjY4cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50IDUyJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi43cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuN3JlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4wOHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgcCB7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xODtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjQycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAzcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjRyZW0gMC40NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3MgYiB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLS1saXZlIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IGJ1dHRvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDkuNXJlbSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICAgICAnYXZhdGFyIHRpdGxlJ1xuICAgICAgICAgICdhdmF0YXIgYm9keSdcbiAgICAgICAgICAnYXZhdGFyIHRlbmRlbmN5JztcbiAgICAgICAgY29sdW1uLWdhcDogMC41NXJlbTtcbiAgICAgICAgcm93LWdhcDogMC4xMnJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiA0Ljc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gPiBzcGFuIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBhdmF0YXI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjFyZW07XG4gICAgICAgIGhlaWdodDogMi4xcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gc3Ryb25nIHtcbiAgICAgICAgZ3JpZC1hcmVhOiB0aXRsZTtcbiAgICAgICAgYWxpZ24tc2VsZjogZW5kO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHNtYWxsIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBib2R5O1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHAge1xuICAgICAgICBncmlkLWFyZWE6IHRlbmRlbmN5O1xuICAgICAgICBtYXJnaW46IDAuMTJyZW0gMCAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTMpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpLFxuICAgICAgICAgIDAgMC43NXJlbSAxLjVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45NXJlbSwgMi41dncsIDEuMnJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzOiBtaW4oMC44NXJlbSwgMTRweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcC5pcy1vcmllbnRpbmcgLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtb3JpZW50LWJvYXJkIDMyMG1zIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAuaXMtZmluaXNoZWQge1xuICAgICAgICBvdmVyZmxvdy14OiB2aXNpYmxlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGZsZXg6IDAgMSA1OHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiA1OHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1yYWRpdXMpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQodmFyKC0tYm9hcmQtc2l6ZSksIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQodmFyKC0tYm9hcmQtc2l6ZSksIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgICBjb250YWluOiBwYWludDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICAgIGNsaXAtcGF0aDogaW5zZXQoMCByb3VuZCB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cykpO1xuICAgICAgICAtd2Via2l0LW1hc2staW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KHdoaXRlLCBibGFjayk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMTYlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA4MiUgNzglLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDMyJSA2OCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdG9uZS1yZ2IpLCAwLjA1KSwgdHJhbnNwYXJlbnQgMzAlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA2NiUgMzQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLFxuICAgICAgICAgIDAgMC44NXJlbSAyLjFyZW0gdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLXN5bmNpbmcgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICBjdXJzb3I6IHdhaXQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFuayB7XG4gICAgICAgIHRvcDogMC4ycmVtO1xuICAgICAgICBsZWZ0OiAwLjI0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGUge1xuICAgICAgICByaWdodDogMC4yNHJlbTtcbiAgICAgICAgYm90dG9tOiAwLjE4cmVtO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb3JpZW50LWJvYXJkIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDAuMDZyZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45ODUpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjkyO1xuICAgICAgICAgIGZpbHRlcjogYmx1cigwKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VudGVyLWxpbmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci10b3A6IDAuMDhyZW0gZGFzaGVkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNTYpO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjI0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjYpKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjg4KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40OCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmlzLWNhcHR1cmUge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQ2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWVhZ2xlIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDEyMCwgMjEwLCAyNTUsIDAuNTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtYnVsbCB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTg4LCAxMzEsIDc2LCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDE4OCwgMTMxLCA3NiwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1rYW5nYXJvbyB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTc0LCAxMjQsIDI1NSwgMC44Nik7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgxNzQsIDEyNCwgMjU1LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24ge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDI1NSwgMjIxLCAxMjAsIDAuODgpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMjU1LCAxOTAsIDU2LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwgPiBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IHZhcigtLXRyYWlsLXkpO1xuICAgICAgICBsZWZ0OiB2YXIoLS10cmFpbC14KTtcbiAgICAgICAgd2lkdGg6IHZhcigtLXRyYWlsLWxlbmd0aCk7XG4gICAgICAgIGhlaWdodDogMC40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSA0MiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MikpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHZhcigtLXRyYWlsLWdsb3cpLFxuICAgICAgICAgIDAgMCAxLjQ1cmVtIHZhcigtLXRyYWlsLWdsb3cpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDUwJTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBvd2VyLXRyYWlsIDcyMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1lYWdsZSA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDAuMjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSA0NCUsIHJnYmEoMTIwLCAyMTAsIDI1NSwgMC41OCkpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50IDAgMC43cmVtLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjYpIDAuN3JlbSAwLjkycmVtKTtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGNoZXNzaW1hbHMtZWFnbGUtdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1idWxsID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMC43MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpIDAgMC4xOHJlbSwgdHJhbnNwYXJlbnQgMC4xOHJlbSAwLjQycmVtKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCB2YXIoLS10cmFpbC1jb2xvciksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1idWxsLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3Qta2FuZ2Fyb28gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXItdG9wOiAwLjE2cmVtIGRhc2hlZCB2YXIoLS10cmFpbC1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjhyZW0gdmFyKC0tdHJhaWwtZ2xvdykpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1rYW5nYXJvby10cmFpbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NSkgMCAwLjEycmVtLCB0cmFuc3BhcmVudCAwLjEycmVtIDAuMzRyZW0pO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1saW9uLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcG93ZXItdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC43Mik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWVhZ2xlLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC44Mikgc2tld1goLTEwZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxLjA1KSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1idWxsLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBzY2FsZVkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAzOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjcpIHNjYWxlWSgxLjE4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKSBzY2FsZVkoMC44Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWthbmdhcm9vLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjRyZW0pIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM0JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuMnJlbSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1saW9uLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMzYlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS40KTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNzYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci1jYWxsb3V0IHtcbiAgICAgICAgLS1wb3dlci1hY2NlbnQtcmdiOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYik7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBib3R0b206IDAuNzVyZW07XG4gICAgICAgIHotaW5kZXg6IDc7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBtaW4oMjFyZW0sIGNhbGMoMTAwJSAtIDFyZW0pKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1wb3dlci1hY2NlbnQtcmdiKSwgMC40OCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC41NnJlbSAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tcG93ZXItYWNjZW50LXJnYiksIDAuMiksIHJnYmEodmFyKC0tcG93ZXItYWNjZW50LXJnYiksIDAuMDYpIDU0JSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAuODVyZW0gMS43cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zaGFkb3ctcmdiKSwgMC4yKSxcbiAgICAgICAgICAwIDAgMS4xNXJlbSByZ2JhKHZhcigtLXBvd2VyLWFjY2VudC1yZ2IpLCAwLjI4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1wb3dlci1jYWxsb3V0IDk1MG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQuaXMtY2FwdHVyZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC41OCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yKSwgcmdiYSh2YXIoLS1wb3dlci1hY2NlbnQtcmdiKSwgMC4xKSA1OCUsIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwLjlyZW0gMS43cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zaGFkb3ctcmdiKSwgMC4yNCksXG4gICAgICAgICAgMCAwIDEuMjVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQuZWZmZWN0LWVhZ2xlIHtcbiAgICAgICAgLS1wb3dlci1hY2NlbnQtcmdiOiA3OSwgMTY5LCAyMTg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQuZWZmZWN0LWJ1bGwge1xuICAgICAgICAtLXBvd2VyLWFjY2VudC1yZ2I6IDIyMCwgMTE2LCA1ODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItY2FsbG91dC5lZmZlY3Qta2FuZ2Fyb28ge1xuICAgICAgICAtLXBvd2VyLWFjY2VudC1yZ2I6IDEzOSwgMTEyLCAyMjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQuZWZmZWN0LWxpb24ge1xuICAgICAgICAtLXBvd2VyLWFjY2VudC1yZ2I6IDIyMSwgMTU4LCAyNjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItY2FsbG91dCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4zcmVtO1xuICAgICAgICBoZWlnaHQ6IDIuM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1wb3dlci1hY2NlbnQtcmdiKSwgMC4zMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1wb3dlci1hY2NlbnQtcmdiKSwgMC4xNik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMDVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci1jYWxsb3V0IGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4wNnJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci1jYWxsb3V0IHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItY2FsbG91dCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuOXJlbSwgM3Z3LCAxLjA4cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC42OHJlbSwgMi40dncsIDAuNzhyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci1jYWxsb3V0IGVtIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDQuMnJlbTtcbiAgICAgICAgbWF4LXdpZHRoOiA2LjRyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEuNjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tcG93ZXItYWNjZW50LXJnYiksIDAuMjgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yMnJlbSAwLjQ4cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXBvd2VyLWFjY2VudC1yZ2IpLCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwLjdyZW0pIHNjYWxlKDAuOTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDApIHNjYWxlKDEuMDIpO1xuICAgICAgICB9XG5cbiAgICAgICAgNzIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtMC4zNXJlbSkgc2NhbGUoMC45OCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2NvcmUtcG9wIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiB2YXIoLS1zY29yZS1wb3AteCk7XG4gICAgICAgIHRvcDogdmFyKC0tc2NvcmUtcG9wLXkpO1xuICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC4wNHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiA1LjVyZW07XG4gICAgICAgIG1heC13aWR0aDogbWluKDlyZW0sIDQ0dncpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtOTIlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQycmVtIDAuNThyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjkyKSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC44NCkpO1xuICAgICAgICBjb2xvcjogI2ZmZmFmMDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAuOXJlbSAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yOCk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc2NvcmUtcG9wIDEwNTBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zY29yZS1wb3AuaXMtY29tYm8ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXdhcm5pbmctcmdiLCAyNTUsIDE5NiwgOSksIDAuNTgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLXdhcm5pbmctcmdiLCAyNTUsIDE5NiwgOSksIDAuOTQpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjg2KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNjb3JlLXBvcCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDEuMDhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2NvcmUtcG9wIHNwYW4sXG4gICAgICAuY2hlc3NpbWFscy1zY29yZS1wb3AgYiB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNjb3JlLXBvcCBiIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMDhyZW0gMC4zMnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXNjb3JlLXBvcCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC02MiUpIHNjYWxlKDAuODIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC05NiUpIHNjYWxlKDEuMDUpO1xuICAgICAgICB9XG5cbiAgICAgICAgNzIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0xMTIlKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTEzMiUpIHNjYWxlKDAuOTYpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1zY29yZS1wdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCkgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICA0MiUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKSBzY2FsZSgxLjAzNSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogNztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMC43NXJlbSwgNHZ3LCAxLjM1cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAzNiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yNCksIHRyYW5zcGFyZW50IDM0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMCwgMTIsIDIyLCAwLjQ4KSwgcmdiYSg4LCAxOCwgMTMsIDAuMzQpKTtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEuNXB4KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyby1pbiAyNjBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NhcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgd2lkdGg6IG1pbigxOHJlbSwgOTIlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMS4xcmVtIDIuM3JlbSByZ2JhKDAsIDAsIDAsIDAuMjQpLFxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA0cmVtO1xuICAgICAgICBoZWlnaHQ6IDRyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSAyNCUsIHZhcigtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0KSwgdHJhbnNwYXJlbnQgMzAlKSxcbiAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KSxcbiAgICAgICAgICAwIDAuN3JlbSAxLjVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgZm9udC1zaXplOiAyLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTRyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjM1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDQ7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NvcHkgcCB7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNDtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fZmFjdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMzhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fZmFjdHMgYiB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuODZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvIC5jaGVzc2ltYWxzLXByaW1hcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjQ1cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyby1pbiB7XG4gICAgICAgIGZyb20ge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0byB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogODtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAzNCUsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC4zNCksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjM0KSwgdHJhbnNwYXJlbnQgNDIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIwLCAxMiwgMjIsIDAuODgpLCByZ2JhKDgsIDE4LCAxMywgMC43OCkpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheS5pcy1kZWZlYXQge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM0JSwgcmdiYSgxNDMsIDE2OCwgMjA2LCAwLjI2KSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEoNzIsIDg2LCAxMTUsIDAuNDIpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoOSwgMTIsIDIwLCAwLjkpLCByZ2JhKDI4LCAzMCwgNDMsIDAuOCkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5OjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjAlIDMwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU4KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA3NSUgMjUlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuNykgMCAwLjFyZW0sIHRyYW5zcGFyZW50IDAuMTJyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNjglIDcyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC41NCkgMCAwLjA4cmVtLCB0cmFuc3BhcmVudCAwLjFyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDc4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ4KSAwIDAuMDdyZW0sIHRyYW5zcGFyZW50IDAuMDlyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgODQlIDY2JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM4KSAwIDAuMDZyZW0sIHRyYW5zcGFyZW50IDAuMDhyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTQlIDY0JSwgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjQ4KSAwIDAuMDdyZW0sIHRyYW5zcGFyZW50IDAuMDlyZW0pO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgb3BhY2l0eTogMC43MjtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXZpY3Rvcnktc3BhcmtzIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JheXMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAtMTglO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KFxuICAgICAgICAgICAgZnJvbSA4ZGVnLFxuICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCA3ZGVnLFxuICAgICAgICAgICAgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjE2KSA3ZGVnIDExZGVnLFxuICAgICAgICAgICAgdHJhbnNwYXJlbnQgMTFkZWcgMjJkZWdcbiAgICAgICAgICApO1xuICAgICAgICBvcGFjaXR5OiAwLjg1O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtZmluYWxlLXJheXMgOHMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yYXlzIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBjb25pYy1ncmFkaWVudChcbiAgICAgICAgICAgIGZyb20gOGRlZyxcbiAgICAgICAgICAgIHRyYW5zcGFyZW50IDAgOGRlZyxcbiAgICAgICAgICAgIHJnYmEoMTgwLCAyMDQsIDI0MCwgMC4xKSA4ZGVnIDEyZGVnLFxuICAgICAgICAgICAgdHJhbnNwYXJlbnQgMTJkZWcgMjRkZWdcbiAgICAgICAgICApO1xuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDEycztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0yMCU7XG4gICAgICAgIHdpZHRoOiAwLjQycmVtO1xuICAgICAgICBoZWlnaHQ6IDU0JTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuNzIpLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUodmFyKC0tcmliYm9uLWFuZ2xlLCAxMmRlZykpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtZmluYWxlLXJpYmJvbiAyLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24ge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCwgcmdiYSgxODAsIDIwNCwgMjQwLCAwLjQyKSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBvcGFjaXR5OiAwLjQ4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24ucmliYm9uLWEge1xuICAgICAgICBsZWZ0OiAxOCU7XG4gICAgICAgIC0tcmliYm9uLWFuZ2xlOiAtMThkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbi5yaWJib24tYiB7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IDhkZWc7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMzIwbXM7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbi5yaWJib24tYyB7XG4gICAgICAgIHJpZ2h0OiAxOCU7XG4gICAgICAgIC0tcmliYm9uLWFuZ2xlOiAyMGRlZztcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiA2NDBtcztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSA+ICoge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgc3BhbiB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4zMnJlbSAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuNjVyZW0sIDh2dywgM3JlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDEuMjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBlbSB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogY2xhbXAoM3JlbSwgMTR2dywgNC42cmVtKTtcbiAgICAgICAgaGVpZ2h0OiBjbGFtcCgzcmVtLCAxNHZ3LCA0LjZyZW0pO1xuICAgICAgICBib3JkZXI6IDAuMTZyZW0gc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDI1JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmZlMjgxLCAjYjk4NDM2KTtcbiAgICAgICAgY29sb3I6ICMyZDI0MTI7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4xcmVtLCA1dncsIDEuNjVyZW0pO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC40NXJlbSByZ2JhKDI1NSwgMjI2LCAxMjksIDAuMTIpLFxuICAgICAgICAgIDAgMXJlbSAycmVtIHJnYmEoMCwgMCwgMCwgMC4yNik7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtbWVkYWwgMS44cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheS5pcy1kZWZlYXQgZW0ge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDI1JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ4KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZDllMmVmLCAjNjk3NThlKTtcbiAgICAgICAgY29sb3I6ICMxODIwMzI7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC40NXJlbSByZ2JhKDE4MCwgMjA0LCAyNDAsIDAuMSksXG4gICAgICAgICAgMCAxcmVtIDJyZW0gcmdiYSgwLCAwLCAwLCAwLjMyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBlbS5oYXMtYXZhdGFyIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBlbS5oYXMtYXZhdGFyIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBiIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Mik7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45cmVtLCAzdncsIDEuMXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIHdpZHRoOiBtaW4oMjZyZW0sIDkyJSk7XG4gICAgICAgIG1hcmdpbjogMC4ycmVtIGF1dG8gMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDJyZW0gMC40NnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoM3B4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZHQsXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkZCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGR0IHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42OCk7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC41MnJlbSwgMi4xdncsIDAuNjZyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkZCB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuNjhyZW0sIDIuOHZ3LCAwLjg4cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXZpY3Rvcnktc3BhcmtzIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNDY7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTgpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjk1O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4zNXJlbSkgc2NhbGUoMS4wMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWZpbmFsZS1yYXlzIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWZpbmFsZS1yaWJib24ge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC4xODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuNXJlbSkgcm90YXRlKHZhcigtLXJpYmJvbi1hbmdsZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjc1O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxLjRyZW0pIHJvdGF0ZSh2YXIoLS1yaWJib24tYW5nbGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLW1lZGFsIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjE4cmVtKSBzY2FsZSgxLjA0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDI2JSAyNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgNzglIDc2JSwgcmdiYSg2MSwgNTQsIDM2LCAwLjA2KSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpLCB0cmFuc3BhcmVudCA1MiUsIHJnYmEoNTIsIDQ0LCAyOCwgMC4wNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJhY2tncm91bmQgMTYwbXMgZWFzZSxcbiAgICAgICAgICBib3gtc2hhZG93IDE2MG1zIGVhc2UsXG4gICAgICAgICAgdHJhbnNmb3JtIDE2MG1zIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGw6OmJlZm9yZSxcbiAgICAgIC5jaGVzc2ltYWxzLWNlbGw6OmFmdGVyIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgICAgbWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IHZhcigtLXdlYXIteCwgMjglKSB2YXIoLS13ZWFyLXksIDMyJSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNiksIHRyYW5zcGFyZW50IDE3JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14MiwgNzQlKSB2YXIoLS13ZWFyLXkyLCA2OCUpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMDkpLCB0cmFuc3BhcmVudCAyNSUpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodmFyKC0td2Vhci1hbmdsZSwgMjZkZWcpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMDQ1KSAwIDFweCwgdHJhbnNwYXJlbnQgMXB4IDAuNTJyZW0pLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNiksIHRyYW5zcGFyZW50IDQyJSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA0NSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmU6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMC4wOHJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NSwgNjYsIDQyLCAwLjA1KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4xOHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwLjA4cmVtIDAuMDhyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpLFxuICAgICAgICAgIGluc2V0IC0wLjA4cmVtIC0wLjA4cmVtIDAgcmdiYSg1MiwgNDQsIDI4LCAwLjA0NSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWVkZ2UtY2VsbCAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUge1xuICAgICAgICBvcGFjaXR5OiAwLjU2O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IHZhcigtLXdlYXIteCwgMjglKSB2YXIoLS13ZWFyLXksIDMyJSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14MiwgNzQlKSB2YXIoLS13ZWFyLXkyLCA2OCUpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMTQpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNzAsIDUyLCAyOCwgMC4wNTUpLCB0cmFuc3BhcmVudCA0NCUsIHJnYmEoNTIsIDQ0LCAyOCwgMC4wOSkpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodmFyKC0td2Vhci1hbmdsZSwgMjZkZWcpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMDU1KSAwIDFweCwgdHJhbnNwYXJlbnQgMXB4IDAuNDhyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMCB7XG4gICAgICAgIC0td2Vhci14OiAyMiU7XG4gICAgICAgIC0td2Vhci15OiAyNCU7XG4gICAgICAgIC0td2Vhci14MjogNzglO1xuICAgICAgICAtLXdlYXIteTI6IDcyJTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAxOGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTEge1xuICAgICAgICAtLXdlYXIteDogNjQlO1xuICAgICAgICAtLXdlYXIteTogMTglO1xuICAgICAgICAtLXdlYXIteDI6IDMwJTtcbiAgICAgICAgLS13ZWFyLXkyOiA3NiU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogLTI0ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMiB7XG4gICAgICAgIC0td2Vhci14OiA0MiU7XG4gICAgICAgIC0td2Vhci15OiA1OCU7XG4gICAgICAgIC0td2Vhci14MjogODIlO1xuICAgICAgICAtLXdlYXIteTI6IDI2JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiA0MmRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTMge1xuICAgICAgICAtLXdlYXIteDogNzQlO1xuICAgICAgICAtLXdlYXIteTogNjglO1xuICAgICAgICAtLXdlYXIteDI6IDI0JTtcbiAgICAgICAgLS13ZWFyLXkyOiAyOCU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogLTEyZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItNCB7XG4gICAgICAgIC0td2Vhci14OiAzNCU7XG4gICAgICAgIC0td2Vhci15OiAxOCU7XG4gICAgICAgIC0td2Vhci14MjogNjIlO1xuICAgICAgICAtLXdlYXIteTI6IDg0JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiA2NGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTUge1xuICAgICAgICAtLXdlYXIteDogMTglO1xuICAgICAgICAtLXdlYXIteTogNzAlO1xuICAgICAgICAtLXdlYXIteDI6IDcwJTtcbiAgICAgICAgLS13ZWFyLXkyOiAzNCU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogLTQ4ZGVnO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUge1xuICAgICAgICBvcGFjaXR5OiAwLjM0O1xuICAgICAgICBtaXgtYmxlbmQtbW9kZTogc29mdC1saWdodDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1kYXJrLWNlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1iZzogdmFyKC0tY2hlc3NpbWFscy1jZWxsLWRhcmspO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yOCkgMCAzNiUsIHRyYW5zcGFyZW50IDYyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMjIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMThyZW0gdmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNTVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKSxcbiAgICAgICAgICBpbnNldCAwIDAgMS44cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjQyKSxcbiAgICAgICAgICAwIDAgMC41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC41NiksXG4gICAgICAgICAgMCAwIDEuNTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMzYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC5pcy1wb3dlci1haW1pbmcgLmNoZXNzaW1hbHMtY2VsbC5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4zOCkgMCAzNCUsIHRyYW5zcGFyZW50IDY0JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMiUgMjQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMThyZW0gdmFyKC0tY2hlc3NpbWFscy1tYWdpYy1ob3QpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjhyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY2KSxcbiAgICAgICAgICBpbnNldCAwIDAgMS45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjUpLFxuICAgICAgICAgIDAgMCAwLjdyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNjIpLFxuICAgICAgICAgIDAgMCAxLjc1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQuaXMtcG93ZXItYWltaW5nIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGVnYWw6bm90KC5pcy1jYXB0dXJlKTo6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjk0KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC43MnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40OCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNnJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLmlzLXBvd2VyLWFpbWluZyAuY2hlc3NpbWFscy10YXJnZXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLFxuICAgICAgICAgIDAgMCAwLjk1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjYyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1sZWdhbDpub3QoLmlzLWNhcHR1cmUpOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDEzJTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgYm9yZGVyOiBtYXgoMnB4LCAxLjglKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLW1vdmUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjU1cmVtO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgb3BhY2l0eTogMC43NDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGFzdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWxlZ2FsKTpub3QoLmlzLWNhcHR1cmUpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbGFzdC1yZ2IpLCAwLjE2KSAwIDQyJSwgdHJhbnNwYXJlbnQgNjglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmUge1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI0KSwgdHJhbnNwYXJlbnQgMzQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODQpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNCksXG4gICAgICAgICAgMCAwIDAuOTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLWF1cmEgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogNCU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjY0cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41MiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMjQpLCB0cmFuc3BhcmVudCA1OCUpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC00MiUpIHNjYWxlKDAuOSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLXN3ZWVwIDEuMzVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogOCU7XG4gICAgICAgIHotaW5kZXg6IDM7XG4gICAgICAgIGJvcmRlcjogbWF4KDJweCwgMS41NSUpIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuOSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNjJyZW07XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC41KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC43MnJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLWZyYW1lIDEuMzVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLXJlYWR5Om5vdCguaXMtc2VsZWN0ZWQpOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDE2JTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgYm9yZGVyOiBtYXgoMnB4LCAxLjQ1JSkgc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNzIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC42NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNTVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtd2lubmluZy5pcy1sZWdhbDpub3QoLmlzLWNhcHR1cmUpOjphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC45Mik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNDgpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjU4cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtd2lubmluZyAuY2hlc3NpbWFscy10YXJnZXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC4yKSxcbiAgICAgICAgICAwIDAgMC45NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjU2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC4xNiksIHRyYW5zcGFyZW50IDUyJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSkgLmNoZXNzaW1hbHMtcGllY2Uge1xuICAgICAgICBmaWx0ZXI6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDAuMzhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC41MikpXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKSAuY2hlc3NpbWFscy1waWVjZS5pcy1ibGFjayB7XG4gICAgICAgIGZpbHRlcjpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjUyKSlcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLXRocmVhdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWNhcHR1cmUpOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMC4yNnJlbTtcbiAgICAgICAgcmlnaHQ6IDAuMjZyZW07XG4gICAgICAgIHotaW5kZXg6IDQ7XG4gICAgICAgIHdpZHRoOiAwLjQ4cmVtO1xuICAgICAgICBoZWlnaHQ6IDAuNDhyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjk2KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4xOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjIyKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1jYXB0dXJlLWF1cmEge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgaW5zZXQgMCAwIDAgMC4xMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjc4KSxcbiAgICAgICAgICAgIGluc2V0IDAgMCAxcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMiksXG4gICAgICAgICAgICAwIDAgMC42NHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjMyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjIyKTtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgaW5zZXQgMCAwIDAgMC4xNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjk2KSxcbiAgICAgICAgICAgIGluc2V0IDAgMCAxLjM0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzQpLFxuICAgICAgICAgICAgMCAwIDEuMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQ4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1zd2VlcCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTIlKSBzY2FsZSgwLjg4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQyJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC42NjtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0OCUpIHNjYWxlKDAuOTIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1jYXB0dXJlLWZyYW1lIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNjg7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLXNvdXJjZS1lZmZlY3Q6bm90KC5pcy1tb3Zpbmctc291cmNlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMTIpIDAgMzQlLCB0cmFuc3BhcmVudCA2NCUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0IHtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMjIpIDAgMzQlLCB0cmFuc3BhcmVudCA2OCUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjg2KSxcbiAgICAgICAgICBpbnNldCAwIDAgMS4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMjYpLFxuICAgICAgICAgIDAgMCAxLjFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40Mik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0OjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwLjEycmVtO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ4KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDIpLCB0cmFuc3BhcmVudCA1OCUpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjcyKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBvd2VyLWltcGFjdCA3MDBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwLjI4cmVtO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYm9yZGVyOiAwLjE0cmVtIHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43Mik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNThyZW07XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzYpLFxuICAgICAgICAgIDAgMCAxcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzIpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBvd2VyLWZyYW1lIDg2MG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLWNhcHR1cmUtZWZmZWN0IHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtaGl0IDc4MG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWVhZ2xlOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHRyYW5zcGFyZW50IDEwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc4KSA0OCUsIHRyYW5zcGFyZW50IDUyJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM2KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3QtYnVsbDo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpIDAgMC4xNnJlbSwgdHJhbnNwYXJlbnQgMC4xNnJlbSAwLjM0cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzgpLCB0cmFuc3BhcmVudCA2MiUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1rYW5nYXJvbzo6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA0MiUgNDQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTglIDU2JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40KSwgdHJhbnNwYXJlbnQgNjQlKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3QtbGlvbjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBjb25pYy1ncmFkaWVudChmcm9tIDBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTYpLCB0cmFuc3BhcmVudCwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCksIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci1pbXBhY3Qge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNTQpIHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDI4JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpIHJvdGF0ZSgyZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjMpIHJvdGF0ZSg4ZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcG93ZXItZnJhbWUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuODQpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzQlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xNik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtaGl0IHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAzNSUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS4zNSkgYnJpZ2h0bmVzcygxLjA4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLW1vdmluZy1zb3VyY2UgLmNoZXNzaW1hbHMtcGllY2Uge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiA2OCU7XG4gICAgICAgIGhlaWdodDogNzQlO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGw6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1zaWRlOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtbGluZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1saW5lKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmU6IHJnYmEoODIsIDY1LCA0NiwgMC4zNCk7XG4gICAgICAgIGZpbHRlcjogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZS5pcy1ibGFjayB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZmlsbDogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1maWxsKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2lkZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1saW5lOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWxpbmUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utb3V0bGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIyKTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vdmluZy1waWVjZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB6LWluZGV4OiA2O1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gdmFyKC0tYm9hcmQtc2l6ZSkpO1xuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAvIHZhcigtLWJvYXJkLXNpemUpKTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgIGNhbGModmFyKC0tZnJvbS1jb2wpICogMTAwJSksXG4gICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLXJvdykgKiAxMDAlKVxuICAgICAgICApO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcGllY2UtdHJhdmVsIDM2MG1zIGN1YmljLWJlemllcigwLjIsIDAuODIsIDAuMjQsIDEpIGJvdGg7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1waWVjZS10cmF2ZWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tZnJvbS1jb2wpICogMTAwJSksXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tZnJvbS1yb3cpICogMTAwJSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgNjglIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBzY2FsZSgxLjA3KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1yb3cpICogMTAwJSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19zaWRlLFxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fY29sbGFyLFxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX25lY2ssXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fYmFzZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKTtcbiAgICAgICAgYm9yZGVyOiBtYXgoMXB4LCAxLjI1JSkgc29saWQgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fc2lkZSB7XG4gICAgICAgIHRvcDogNDYlO1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICB3aWR0aDogNTglO1xuICAgICAgICBoZWlnaHQ6IDQxJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMzQlIDM0JSAxMiUgMTIlO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5NmRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDM0JSwgdHJhbnNwYXJlbnQgMzUlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMjIlIDAsIDc4JSAwLCA5NiUgMTAwJSwgNCUgMTAwJSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19oZWFkIHtcbiAgICAgICAgdG9wOiAxJTtcbiAgICAgICAgei1pbmRleDogNDtcbiAgICAgICAgd2lkdGg6IDQ4JTtcbiAgICAgICAgaGVpZ2h0OiA0MCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzAlIDIyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKSAwIDEzJSwgdHJhbnNwYXJlbnQgMTQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjgpIDAgMzQlLCB0cmFuc3BhcmVudCAzNSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgLTAuMThyZW0gLTAuMTJyZW0gMCByZ2JhKDgyLCA2NSwgNDYsIDAuMDYpLFxuICAgICAgICAgIGluc2V0IDAgLTFweCAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIC5jaGVzc2ltYWxzLXBpZWNlX19oZWFkIHtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwLjE4cmVtIC0wLjEycmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSxcbiAgICAgICAgICBpbnNldCAwIC0xcHggMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fY29sbGFyIHtcbiAgICAgICAgdG9wOiAzNyU7XG4gICAgICAgIHotaW5kZXg6IDU7XG4gICAgICAgIHdpZHRoOiA3MiU7XG4gICAgICAgIGhlaWdodDogMTUlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjZjVjZDc3IDAlLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQpIDU1JSwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1nb2xkLWRhcmspIDEwMCUpO1xuICAgICAgICBib3JkZXItY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyaykgNzIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwLjEycmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI4KSxcbiAgICAgICAgICBpbnNldCAwIC0wLjA4cmVtIDAgcmdiYSg3MCwgNDYsIDE4LCAwLjIyKSxcbiAgICAgICAgICAwIDAuMDhyZW0gMC4xOHJlbSByZ2JhKDcwLCA0NiwgMTgsIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayB7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICB3aWR0aDogNTIlO1xuICAgICAgICBoZWlnaHQ6IDMxJTtcbiAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDE2JSAwLCA4NCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMDBkZWcsIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utc2lkZSkgMCAyOCUsIHRyYW5zcGFyZW50IDI5JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSwgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCkgNzglLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGUpKSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgLTAuMTJyZW0gMC4xcmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2Jhc2Uge1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHotaW5kZXg6IDY7XG4gICAgICAgIHdpZHRoOiA4NiU7XG4gICAgICAgIGhlaWdodDogMTclO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjQycmVtIDAuNDJyZW0gMC4yMnJlbSAwLjIycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMDBkZWcsIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utc2lkZSkgMCAxOCUsIHRyYW5zcGFyZW50IDE5JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCkgOTIlLCAjZmZmZmZmKSwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwLjEycmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSxcbiAgICAgICAgICBpbnNldCAwIC0wLjFyZW0gMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10YXJnZXQge1xuICAgICAgICB3aWR0aDogMTYlO1xuICAgICAgICBoZWlnaHQ6IDE2JTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW92ZSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAuOXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbW92ZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzc1cmVtO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4taGVpZ2h0OiA1Ljc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjEyNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJvcmRlci1jb2xvciAxODBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTgwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTgwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMjhyZW0gMC42MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tYWdpYy1ob3QpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDE2JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQyKSwgdHJhbnNwYXJlbnQgMzAlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA3NiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCB0cmFuc3BhcmVudCA1NiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjgpLFxuICAgICAgICAgIDAgMCAxLjM1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KSxcbiAgICAgICAgICAwIDAuOXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjE4KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtc2VsZWN0ZWQ6OmJlZm9yZSxcbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAtMC41cmVtO1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiA+ICoge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAyNCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjg4KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA3OCUgMjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODYpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4NiUgNjIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC43MikgMCAwLjA2cmVtLCB0cmFuc3BhcmVudCAwLjA4cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDI4JSA3OCUsIHJnYmEoMjU1LCAyNDUsIDExMSwgMC43OCkgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDU0JSA4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY4KSAwIDAuMDVyZW0sIHRyYW5zcGFyZW50IDAuMDdyZW0pO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc01hZ2ljUGFydGljbGVzIDEuOHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMTJkZWcsIHRyYW5zcGFyZW50IDAgMTZkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpIDE2ZGVnIDIyZGVnLCB0cmFuc3BhcmVudCAyMmRlZyA0NGRlZyk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjg7XG4gICAgICAgIGZpbHRlcjogYmx1cigwLjA0cmVtKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzTWFnaWNBdXJhIDMuMnMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtdXNlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDMuMjVyZW07XG4gICAgICAgIGhlaWdodDogMy4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4zNHJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4ycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDIyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKSwgdHJhbnNwYXJlbnQgNTUlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnKTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDkyJSwgIzAwMCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyKSxcbiAgICAgICAgICAwIDAuNDVyZW0gMS4xNXJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjcycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWlubmVyLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEoNDYsIDU4LCA0NCwgMC4wOCk7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1yZWFkeSAuY2hlc3NpbWFscy1jYXJkcyBidXR0b246bm90KC5pcy11c2VkKSAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSksIHRyYW5zcGFyZW50IDUyJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA2MiUgNzglLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yMiksIHRyYW5zcGFyZW50IDQ4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZyk7XG4gICAgICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSA5NCUsICMwMDApO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4zNCksXG4gICAgICAgICAgMCAwIDAuODVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMzQpLFxuICAgICAgICAgIDAgMC43NXJlbSAxLjZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXIpO1xuICAgICAgICBvcGFjaXR5OiAwLjg2O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyxcbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXJlYWR5IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40Nik7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjEyKSxcbiAgICAgICAgICAwIDFyZW0gMi40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXJlYWR5IC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzUG93ZXJQdWxzZSAxODAwbXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy11bmxvY2stcHVsc2Uge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlcnNVbmxvY2tlZCAxMTgwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXVubG9jay1wdWxzZSAuY2hlc3NpbWFscy1jYXJkcyBidXR0b246bm90KC5pcy11c2VkKSB7XG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICBjaGVzc2ltYWxzUG93ZXJJZ25pdGUgNzYwbXMgZWFzZS1vdXQgYm90aCxcbiAgICAgICAgICBjaGVzc2ltYWxzUG93ZXJQdWxzZSAxODAwbXMgZWFzZS1pbi1vdXQgNzYwbXMgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc1Bvd2VyUHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJzVW5sb2NrZWQge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKSxcbiAgICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzQlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgMC4xOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yOCksXG4gICAgICAgICAgICAwIDAgMi4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM4KSxcbiAgICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKSxcbiAgICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc1Bvd2VySWduaXRlIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgwLjk2KTtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICA0MiUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4wOHJlbSkgc2NhbGUoMS4wMjUpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAwIDAgMCAwLjE0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI0KSxcbiAgICAgICAgICAgIDAgMCAxLjVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNNYWdpY1BhcnRpY2xlcyB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjU0O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgwLjk0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMThyZW0pIHNjYWxlKDEuMDIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc01hZ2ljQXVyYSB7XG4gICAgICAgIHRvIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWN0aW9ucyB7XG4gICAgICAgIG9yZGVyOiA2O1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgobWluKDEwMCUsIDEycmVtKSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICBtYXgtd2lkdGg6IG1pbig5NnZ3LCA5MHJlbSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IDAuODc1cmVtIDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXN0YXR1cyxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWFjdGlvbnMsXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1vbmxpbmUsXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1yZXBsYXksXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1ib2FyZC13cmFwIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1czogbWluKDAuNjI1cmVtLCAxMHB4KTtcbiAgICAgICAgd2lkdGg6IG1pbig5NnZ3LCA4MnZoLCA1OHJlbSk7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjBweCkge1xuICAgICAgICAuY2hlc3NpbWFscy1nYW1lIHtcbiAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LFxuICAgICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMge1xuICAgICAgICAgIHdpZHRoOiBtaW4oMTAwJSwgNDRyZW0pO1xuICAgICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgxMXJlbSwgMC42OGZyKSBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgICAgbWluLWhlaWdodDogNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXR0aW5ncyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2V0dGluZ3MgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC45cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsICNmZmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dF9fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogbWluKDMwcmVtLCAxMDAlKTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxMjgwIC8gNjk4O1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXJlbSAycmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZGwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRsIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtIDAuOTVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGR0LFxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZGQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGR0IHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sIHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX2hlcm8ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMTYgLyA5O1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXJlbSAyLjI1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGFydGljbGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCAjZTdlNGVhKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzJmMmEzYSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGFydGljbGUgPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDJyZW07XG4gICAgICAgIGhlaWdodDogMnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSA+IGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBoMyxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHAsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB1bCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgaDMge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHAsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBsaSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjNmY2YTdhKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgdWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogMS4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJpbWFyeSxcbiAgICAgIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNjI1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJpbWFyeSB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMS4xMjVyZW0gMi44cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJpbWFyeS5pcy13b3JraW5nLFxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5LmlzLXdvcmtpbmcge1xuICAgICAgICBjdXJzb3I6IHdhaXQ7XG4gICAgICAgIG9wYWNpdHk6IDAuODI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyIHtcbiAgICAgICAgd2lkdGg6IDFyZW07XG4gICAgICAgIGhlaWdodDogMXJlbTtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGJvcmRlcjogMC4xNHJlbSBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc3BpbiA3MjBtcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1NjBweCkge1xuICAgICAgICAuY2hlc3NpbWFscy1zaXplLFxuICAgICAgICAuY2hlc3NpbWFscy1tb2RlLFxuICAgICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGEge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fcml2YWwge1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oZXJvLFxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtZm9jdXMsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zZWNvbmRhcnkge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQge1xuICAgICAgICAgIHBhZGRpbmc6IDAuODVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3MtaGVybyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wcm9ncmVzcy1oZXJvX19zdGF0cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzLS1tb2RhbCB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1nYW1lIHtcbiAgICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCB7XG4gICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOTVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jb3B5IHtcbiAgICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMThyZW0gMC41cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42cmVtO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0NWVtO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45MnJlbSwgNC40dncsIDEuMTJyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHAge1xuICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgICAgcGFkZGluZzogMC4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyIHtcbiAgICAgICAgICBmbGV4OiAwIDAgMS44cmVtO1xuICAgICAgICAgIHdpZHRoOiAxLjhyZW07XG4gICAgICAgICAgaGVpZ2h0OiAxLjhyZW07XG4gICAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0IDo6bmctZGVlcCAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAgLmNoZXNzaW1hbHMtdHVybi1hdmF0YXIge1xuICAgICAgICAgIHdpZHRoOiAxLjhyZW07XG4gICAgICAgICAgbWluLXdpZHRoOiAxLjhyZW07XG4gICAgICAgICAgaGVpZ2h0OiAxLjhyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgICBnYXA6IDAuM3JlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBkaXYge1xuICAgICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAyLjJyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC44MnJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjM0cmVtIDAuM3JlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzbWFsbCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjU4cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjc4cmVtLCAzLjJ2dywgMC45NHJlbSk7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgPiBzcGFuIHtcbiAgICAgICAgICB3aWR0aDogMi4zNXJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDIuMzVyZW07XG4gICAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIHAge1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyBzcGFuIHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAyLjM1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMzJyZW0gMC4zNnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIHNtYWxsIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNTZyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyBiIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8ge1xuICAgICAgICAgIHBhZGRpbmc6IDAuNTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NhcmQge1xuICAgICAgICAgIGdhcDogMC40MnJlbTtcbiAgICAgICAgICB3aWR0aDogbWluKDE1LjVyZW0sIDk0JSk7XG4gICAgICAgICAgcGFkZGluZzogMC42cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19hdmF0YXIge1xuICAgICAgICAgIHdpZHRoOiAzLjA1cmVtO1xuICAgICAgICAgIGhlaWdodDogMy4wNXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDEuNjJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NvcHkgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMDJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NvcHkgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fZmFjdHMgYiB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjc0cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvIC5jaGVzc2ltYWxzLXByaW1hcnkge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDIuMTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5LFxuICAgICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzLFxuICAgICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCB7XG4gICAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjdyZW0gMC43NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXRpcCBzdHJvbmcsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBzdHJvbmcsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSBzdHJvbmcsXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwIHAsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yODtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fc3RhdHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXlfX2FjdGlvbnMge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3RyZXRjaDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICAgIGZsZXg6IDEgMSA4cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgbWFyZ2luLWlubGluZTogMDtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcge1xuICAgICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIGgyIHtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgICAgcGFkZGluZzogMC4yMnJlbSAwLjQ4cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDMuOTVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjM0cmVtIDAuMjJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgICAgd2lkdGg6IDIuMzVyZW07XG4gICAgICAgICAgaGVpZ2h0OiAyLjM1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjZyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC41NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjU4cmVtO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjpiZWZvcmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YWZ0ZXIsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0LFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YmVmb3JlLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YWZ0ZXIsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLWNhcHR1cmUtZWZmZWN0LFxuICAgICAgICAuY2hlc3NpbWFscy1tb3ZpbmctcGllY2UsXG4gICAgICAgIC5jaGVzc2ltYWxzLXNjb3JlLXBvcCxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvLFxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3Njb3JlLmlzLXBvcCB7XG4gICAgICAgICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1tb3ZpbmctcGllY2Uge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksXG4gICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVzc2ltYWxzR2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdWRpbyA9IGluamVjdChSZXRyb0F1ZGlvU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25saW5lID0gaW5qZWN0KENoZXNzaW1hbHNPbmxpbmVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFsbGVuZ2VQcm9ncmVzcyA9IGluamVjdChDaGVzc2ltYWxzQ2hhbGxlbmdlUHJvZ3Jlc3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGhhcHRpY3MgPSBpbmplY3QoSGFwdGljc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXllclByb2ZpbGVzID0gaW5qZWN0KE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIGJvYXJkT3JpZW50YXRpb25UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUFuaW1hdGlvblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBib3RUdXJuVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIG9ubGluZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhpc3RvcnlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoaXN0b3J5VWlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGlzdG9yeVdhdGNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdmVFZmZlY3RTdGFydFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3ZlRWZmZWN0Q2xlYXJUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc2NvcmVQb3BDbGVhclRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBwb3dlclVubG9ja1RpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjaGFsbGVuZ2VJbnRyb1RpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSB0dXJuVGltZXJJbnRlcnZhbDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHR1cm5UaW1lcktleSA9ICcnO1xuICBwcml2YXRlIHR1cm5UaW1lckRlYWRsaW5lID0gMDtcbiAgcHJpdmF0ZSB0dXJuVGltZXJEdXJhdGlvbiA9IDA7XG4gIHByaXZhdGUgdHVyblRpbWVyRXhwaXJlZEtleSA9ICcnO1xuICBwcml2YXRlIHBlbmRpbmdPbmxpbmVHYW1lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvcGVuaW5nT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3BlbmVkT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbGFzdE91dGNvbWVTb3VuZEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RDaGFsbGVuZ2VIYW5kbGVkS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbGFzdE1vZGVTdGF0c0hhbmRsZWRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdib2FyZEFuY2hvcicpIHByaXZhdGUgYm9hcmRBbmNob3I/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICByZWFkb25seSBib2FyZFNpemVzOiBDaGVzc2ltYWxzQm9hcmRTaXplW10gPSBbNiwgOF07XG4gIHJlYWRvbmx5IGxvY2FsTW9kZXM6IENoZXNzaW1hbHNMb2NhbE1vZGVbXSA9IFsnb25lLWRldmljZScsICdib3QnXTtcbiAgcmVhZG9ubHkgYm90RGlmZmljdWx0aWVzOiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eVtdID0gWydlYXN5JywgJ25vcm1hbCcsICdoYXJkJ107XG4gIHJlYWRvbmx5IGJvdFByb2ZpbGVzID0gQ0hFU1NJTUFMU19CT1RfUFJPRklMRVM7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhZGRlciA9IENIRVNTSU1BTFNfQ0hBTExFTkdFX0xBRERFUjtcbiAgcmVhZG9ubHkgYW5pbWFscyA9IEFOSU1BTFM7XG4gIHJlYWRvbmx5IHZhbHRlY2hDb21wb25lbnRzVmVyc2lvbiA9IFZBTFRFQ0hfQ09NUE9ORU5UU19WRVJTSU9OO1xuICByZWFkb25seSBzY3JlZW4gPSBzaWduYWw8J2hvbWUnIHwgJ2NoYWxsZW5nZScgfCAnZ2FtZSc+KCdob21lJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm9hcmRTaXplID0gc2lnbmFsPENoZXNzaW1hbHNCb2FyZFNpemU+KDYpO1xuICByZWFkb25seSBzZWxlY3RlZExvY2FsTW9kZSA9IHNpZ25hbDxDaGVzc2ltYWxzTG9jYWxNb2RlPignb25lLWRldmljZScpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdERpZmZpY3VsdHkgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdERpZmZpY3VsdHk+KCdub3JtYWwnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb3RQcm9maWxlSWQgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZD4oJ2h1bnRlcicpO1xuICByZWFkb25seSBnYW1lQm90UHJvZmlsZUlkID0gc2lnbmFsPENoZXNzaW1hbHNCb3RQcm9maWxlSWQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGdhbWUgPSBzaWduYWw8Q2hlc3NpbWFsc0dhbWVTdGF0ZT4oY3JlYXRlQ2hlc3NpbWFsc0dhbWUoNikpO1xuICByZWFkb25seSBjaGFsbGVuZ2VQaGFzZSA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUGhhc2U+KCdpZGxlJyk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVJ1biA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VTdGF0cyA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHM+KHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MuZW1wdHlTdGF0cygpKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlSGlzdG9yeSA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuW10+KFtdKTtcbiAgcmVhZG9ubHkgYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhc3RXb24gPSBzaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFzdEJvdCA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VMYXN0Um91bmRTdGF0cyA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTmV3UmVjb3JkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlSW50cm9WaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgdHVyblNlY29uZHNSZW1haW5pbmcgPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBzZWxlY3RlZFBpZWNlSWQgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBzZWxlY3RlZEFuaW1hbCA9IHNpZ25hbDxDaGVzc2ltYWxzQW5pbWFsVHlwZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgaXNSdWxlc01vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzU2V0dGluZ3NNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc1Byb2dyZXNzTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNBYm91dE1vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHR1dG9yaWFsTW9kZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQm9hcmRPcmllbnRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZpbmdQaWVjZSA9IHNpZ25hbDxDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBtb3ZlRWZmZWN0ID0gc2lnbmFsPENoZXNzaW1hbHNNb3ZlRWZmZWN0VmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2NvcmVQb3AgPSBzaWduYWw8Q2hlc3NpbWFsc1Njb3JlUG9wVmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcG93ZXJVbmxvY2tQdWxzZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vdmVUcmFpbCA9IGNvbXB1dGVkPENoZXNzaW1hbHNNb3ZlVHJhaWxWaWV3IHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgaWYgKCFlZmZlY3QpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBib2FyZFNpemUgPSB0aGlzLmdhbWUoKS5ib2FyZFNpemU7XG4gICAgY29uc3QgZnJvbUNvbCA9IHRoaXMuZGlzcGxheUNvbEluZGV4KGVmZmVjdC5mcm9tLmNvbCkgKyAwLjU7XG4gICAgY29uc3QgZnJvbVJvdyA9IHRoaXMuZGlzcGxheVJvd0luZGV4KGVmZmVjdC5mcm9tLnJvdykgKyAwLjU7XG4gICAgY29uc3QgdG9Db2wgPSB0aGlzLmRpc3BsYXlDb2xJbmRleChlZmZlY3QudG8uY29sKSArIDAuNTtcbiAgICBjb25zdCB0b1JvdyA9IHRoaXMuZGlzcGxheVJvd0luZGV4KGVmZmVjdC50by5yb3cpICsgMC41O1xuICAgIGNvbnN0IGZyb21YID0gKGZyb21Db2wgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGZyb21ZID0gKGZyb21Sb3cgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGR4ID0gKCh0b0NvbCAtIGZyb21Db2wpIC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBkeSA9ICgodG9Sb3cgLSBmcm9tUm93KSAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoMTAsIE1hdGguaHlwb3QoZHgsIGR5KSk7XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLmF0YW4yKGR5LCBkeCkgKiAoMTgwIC8gTWF0aC5QSSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogYCR7ZnJvbVh9JWAsXG4gICAgICB5OiBgJHtmcm9tWX0lYCxcbiAgICAgIGxlbmd0aDogYCR7bGVuZ3RofSVgLFxuICAgICAgYW5nbGU6IGAke2FuZ2xlfWRlZ2AsXG4gICAgICBhbmltYWw6IGVmZmVjdC5hbmltYWwsXG4gICAgICBjYXB0dXJlOiBlZmZlY3QuY2FwdHVyZSxcbiAgICB9O1xuICB9KTtcbiAgcmVhZG9ubHkgcG93ZXJDYWxsb3V0ID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc1Bvd2VyQ2FsbG91dFZpZXcgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICBpZiAoIWVmZmVjdD8uYW5pbWFsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGFuaW1hbEtleSA9IHRoaXMuY2FwaXRhbGl6ZShlZmZlY3QuYW5pbWFsKTtcbiAgICBjb25zdCByZXN1bHRLZXkgPSBlZmZlY3QuY2FwdHVyZSA/ICdDYXB0dXJlJyA6ICcnO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogdGhpcy50KGBjaGVzc2ltYWxzUG93ZXJDYWxsb3V0JHthbmltYWxLZXl9JHtyZXN1bHRLZXl9VGl0bGVgKSxcbiAgICAgIGJvZHk6IHRoaXMudChgY2hlc3NpbWFsc1Bvd2VyQ2FsbG91dCR7YW5pbWFsS2V5fSR7cmVzdWx0S2V5fUJvZHlgKSxcbiAgICAgIGltcGFjdDogdGhpcy50KGVmZmVjdC5jYXB0dXJlID8gJ2NoZXNzaW1hbHNQb3dlckNhbGxvdXRDYXB0dXJlSW1wYWN0JyA6ICdjaGVzc2ltYWxzUG93ZXJDYWxsb3V0TW92ZUltcGFjdCcpLFxuICAgICAgYW5pbWFsOiBlZmZlY3QuYW5pbWFsLFxuICAgICAgY2FwdHVyZTogZWZmZWN0LmNhcHR1cmUsXG4gICAgfTtcbiAgfSk7XG4gIHJlYWRvbmx5IGJvdFRoaW5raW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbiA9IHNpZ25hbDxDaGVzc2ltYWxzQ29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtZWRBY3Rpb24gPSBzaWduYWw8Q2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG9ubGluZUpvaW5Db2RlID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgb25saW5lTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG9ubGluZUFjdGlvbiA9IHNpZ25hbDwnY3JlYXRlJyB8ICdqb2luJyB8ICdhY2NlcHQnIHwgJ3JlamVjdCcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG9ubGluZUVycm9yID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgb25saW5lVWlkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25saW5lSGlzdG9yeSA9IHNpZ25hbDxDaGVzc2ltYWxzSGlzdG9yeUVudHJ5W10+KFtdKTtcbiAgcmVhZG9ubHkgcmVzdW1lU3BsYXNoVmlzaWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHJlbWF0Y2hMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92ZVN5bmNpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBvbmxpbmVDb25uZWN0aW9uU3RhdGUgPSBzaWduYWw8J2lkbGUnIHwgJ2Nvbm5lY3RpbmcnIHwgJ2xpdmUnIHwgJ2Vycm9yJz4oJ2lkbGUnKTtcbiAgcmVhZG9ubHkgcmV2aWV3SW5kZXggPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBsb2dnZWRJblVzZXIgPSB0aGlzLmF1dGgudXNlcjtcbiAgcmVhZG9ubHkgbG9jYWxQbGF5ZXJQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCkpO1xuICByZWFkb25seSBsb2NhbFBsYXllckF2YXRhciA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCk/LmF2YXRhciA/PyAn8J+MnycpO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJOYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgIGlmICh1c2VyPy5uYW1lPy50cmltKCkpIHJldHVybiB1c2VyLm5hbWUudHJpbSgpO1xuICAgIGlmICh1c2VyPy5lbWFpbD8udHJpbSgpKSByZXR1cm4gdXNlci5lbWFpbC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyUHJvZmlsZXMuZGlzcGxheU5hbWUodGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKSwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllckhhbmRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICBjb25zdCBoYW5kbGUgPSB1c2VyPy5oYW5kbGU/LnRyaW0oKTtcbiAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlLnN0YXJ0c1dpdGgoJ0AnKSA/IGhhbmRsZSA6IGBAJHtoYW5kbGV9YDtcbiAgICBpZiAodXNlcj8udXNlcklkKSByZXR1cm4gYElEICR7dGhpcy5zaG9ydFVzZXJJZCh1c2VyLnVzZXJJZCl9YDtcbiAgICBjb25zdCBwcm9maWxlSWQgPSB0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpPy5pZDtcbiAgICByZXR1cm4gcHJvZmlsZUlkID8gYElEICR7dGhpcy5zaG9ydFVzZXJJZChwcm9maWxlSWQpfWAgOiAnJztcbiAgfSk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllckF2YXRhclByb3BzID0gY29tcHV0ZWQ8VXNlckF2YXRhck1ldGFkYXRhPigoKSA9PiAoe1xuICAgIHVzZXI6IHRoaXMubG9nZ2VkSW5Vc2VyKCksXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICBjc3NDbGFzczogJ2NoZXNzaW1hbHMtdHVybi1hdmF0YXInLFxuICB9KSk7XG4gIHJlYWRvbmx5IG11c2ljRW5hYmxlZENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5hdWRpby5tdXNpY0VuYWJsZWQoKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgc2Z4RW5hYmxlZENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5hdWRpby5zZnhFbmFibGVkKCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IG11c2ljVm9sdW1lQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChNYXRoLnJvdW5kKHRoaXMuYXVkaW8ubXVzaWNWb2x1bWUoKSAqIDEwMCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IHNmeFZvbHVtZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woTWF0aC5yb3VuZCh0aGlzLmF1ZGlvLnNmeFZvbHVtZSgpICogMTAwKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgbXVzaWNUb2dnbGVQcm9wcyA9IGNvbXB1dGVkPFRvZ2dsZUlucHV0TWV0YWRhdGE+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5tdXNpY0VuYWJsZWRDb250cm9sLFxuICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNNdXNpY0VuYWJsZWQnKSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGp1c3RpZnk6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSkpO1xuICByZWFkb25seSBzZnhUb2dnbGVQcm9wcyA9IGNvbXB1dGVkPFRvZ2dsZUlucHV0TWV0YWRhdGE+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5zZnhFbmFibGVkQ29udHJvbCxcbiAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzU2Z4RW5hYmxlZCcpLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAganVzdGlmeTogJ3NwYWNlLWJldHdlZW4nLFxuICB9KSk7XG4gIHJlYWRvbmx5IG11c2ljVm9sdW1lUHJvcHMgPSBjb21wdXRlZDxSYW5nZUlucHV0TWV0YWRhdGE+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5tdXNpY1ZvbHVtZUNvbnRyb2wsXG4gICAgbGFiZWw6IGAke3RoaXMudCgnY2hlc3NpbWFsc011c2ljVm9sdW1lJyl9IMK3ICR7TWF0aC5yb3VuZCh0aGlzLmF1ZGlvLm11c2ljVm9sdW1lKCkgKiAxMDApfSVgLFxuICAgIG1pbjogMCxcbiAgICBtYXg6IDEwMCxcbiAgICBzdGVwOiA1LFxuICAgIHBpbjogdHJ1ZSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIHN0YXJ0TGFiZWw6ICcwJyxcbiAgICBlbmRMYWJlbDogJzEwMCcsXG4gICAgcGluRm9ybWF0dGVyOiAodmFsdWUpID0+IGAke3ZhbHVlfSVgLFxuICB9KSk7XG4gIHJlYWRvbmx5IHNmeFZvbHVtZVByb3BzID0gY29tcHV0ZWQ8UmFuZ2VJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMuc2Z4Vm9sdW1lQ29udHJvbCxcbiAgICBsYWJlbDogYCR7dGhpcy50KCdjaGVzc2ltYWxzU2Z4Vm9sdW1lJyl9IMK3ICR7TWF0aC5yb3VuZCh0aGlzLmF1ZGlvLnNmeFZvbHVtZSgpICogMTAwKX0lYCxcbiAgICBtaW46IDAsXG4gICAgbWF4OiAxMDAsXG4gICAgc3RlcDogNSxcbiAgICBwaW46IHRydWUsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBzdGFydExhYmVsOiAnMCcsXG4gICAgZW5kTGFiZWw6ICcxMDAnLFxuICAgIHBpbkZvcm1hdHRlcjogKHZhbHVlKSA9PiBgJHt2YWx1ZX0lYCxcbiAgfSkpO1xuICByZWFkb25seSBhdmFpbGFibGVCb3RQcm9maWxlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ib3RQcm9maWxlcy5maWx0ZXIoKHByb2ZpbGUpID0+IHByb2ZpbGUuZGlmZmljdWx0eSA9PT0gdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKSksXG4gICk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm90UHJvZmlsZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ib3RQcm9maWxlcy5maW5kKChwcm9maWxlKSA9PiBwcm9maWxlLmlkID09PSB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkKCkpLFxuICApO1xuICByZWFkb25seSBnYW1lQm90UHJvZmlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlSWQgPSB0aGlzLmdhbWVCb3RQcm9maWxlSWQoKTtcbiAgICByZXR1cm4gcHJvZmlsZUlkID8gdGhpcy5ib3RQcm9maWxlcy5maW5kKChwcm9maWxlKSA9PiBwcm9maWxlLmlkID09PSBwcm9maWxlSWQpIDogdW5kZWZpbmVkO1xuICB9KTtcbiAgcmVhZG9ubHkgYWN0aXZlQ2hhbGxlbmdlQm90ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gIH0pO1xuXG4gIEBJbnB1dCgpIHNldCBvbmxpbmVHYW1lSWQodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBnYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodmFsdWUgPz8gJycpO1xuICAgIGlmICghZ2FtZUlkKSByZXR1cm47XG4gICAgdGhpcy5wZW5kaW5nT25saW5lR2FtZUlkID0gZ2FtZUlkO1xuICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCAhPT0gZ2FtZUlkICYmIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCAhPT0gZ2FtZUlkKSB7XG4gICAgICB2b2lkIHRoaXMub3Blbk9ubGluZUdhbWUoZ2FtZUlkKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgbWluaUdhbWVzUm91dGUgPSAnL21pbmktZ2FtZXMnO1xuICBASW5wdXQoKSBwcm9qZWN0aW9uTW9kZSA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHJlcGxheUVudHJpZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5tb3ZlSGlzdG9yeSA/PyBbXSk7XG4gIHJlYWRvbmx5IGFjdGl2ZVJldmlld0luZGV4ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLnJlcGxheUVudHJpZXMoKTtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IGVudHJpZXMubGVuZ3RoIDw9IDEpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJldmlld0luZGV4KCkgPz8gZW50cmllcy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChpbmRleCwgMCksIGVudHJpZXMubGVuZ3RoIC0gMSk7XG4gIH0pO1xuICByZWFkb25seSBoYXNSZXBsYXlDb250cm9scyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKSAhPT0gdW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmV2aWV3R2FtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICBjb25zdCBlbnRyeSA9IGluZGV4ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0aGlzLnJlcGxheUVudHJpZXMoKVtpbmRleF07XG4gICAgcmV0dXJuIGVudHJ5ID8gY3JlYXRlQ2hlc3NpbWFsc1Jldmlld1N0YXRlKHRoaXMuZ2FtZSgpLCBlbnRyeSkgOiB0aGlzLmdhbWUoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRQbGF5ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5wbGF5ZXJzW3RoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuXSk7XG4gIHJlYWRvbmx5IHBvd2VyUGxheWVyQ29sb3IgPSBjb21wdXRlZCgoKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICAgIHJldHVybiByb2xlID09PSAnd2hpdGUnIHx8IHJvbGUgPT09ICdibGFjaycgPyByb2xlIDogZ2FtZS5jdXJyZW50VHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHJldHVybiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgcG93ZXJQbGF5ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5wbGF5ZXJzW3RoaXMucG93ZXJQbGF5ZXJDb2xvcigpXSk7XG4gIHJlYWRvbmx5IGNhblVzZVBvd2VyQ2FyZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBnYW1lLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyAmJlxuICAgICAgdGhpcy5wb3dlclBsYXllckNvbG9yKCkgPT09IGdhbWUuY3VycmVudFR1cm4gJiZcbiAgICAgIHRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgJiZcbiAgICAgICF0aGlzLmJvdFRoaW5raW5nKCkgJiZcbiAgICAgICF0aGlzLm1vdmluZ1BpZWNlKClcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgbGVnYWxNb3ZlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwaWVjZUlkID0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgICBpZiAoIXBpZWNlSWQpIHJldHVybiBbXTtcbiAgICBpZiAoIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkpIHJldHVybiBbXTtcbiAgICBjb25zdCBtb3ZlcyA9IGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHRoaXMuZ2FtZSgpLCBwaWVjZUlkLCB0aGlzLnNlbGVjdGVkQW5pbWFsKCkpO1xuICAgIGNvbnN0IGV4cGVjdGVkID0gdGhpcy50dXRvcmlhbEV4cGVjdGVkTW92ZSgpO1xuICAgIGlmICghZXhwZWN0ZWQpIHJldHVybiBtb3ZlcztcbiAgICByZXR1cm4gbW92ZXMuZmlsdGVyKFxuICAgICAgKG1vdmUpID0+XG4gICAgICAgIG1vdmUucGllY2VJZCA9PT0gZXhwZWN0ZWQucGllY2VJZCAmJlxuICAgICAgICBwb3NpdGlvbktleShtb3ZlLnRvKSA9PT0gcG9zaXRpb25LZXkoZXhwZWN0ZWQudG8pICYmXG4gICAgICAgIChtb3ZlLmFuaW1hbCA/PyB1bmRlZmluZWQpID09PSAoZXhwZWN0ZWQuYW5pbWFsID8/IHVuZGVmaW5lZCksXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxlZ2FsTW92ZUtleXMgPSBjb21wdXRlZCgoKSA9PiBuZXcgU2V0KHRoaXMubGVnYWxNb3ZlcygpLm1hcCgobW92ZSkgPT4gcG9zaXRpb25LZXkobW92ZS50bykpKSk7XG4gIHJlYWRvbmx5IGNhcHR1cmVNb3ZlS2V5cyA9IGNvbXB1dGVkKFxuICAgICgpID0+IG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkuZmlsdGVyKChtb3ZlKSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpbm5pbmdNb3ZlS2V5cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgcHJvbW90aW9uUm93ID0gZ2FtZS5jdXJyZW50VHVybiA9PT0gJ3doaXRlJyA/IDAgOiBnYW1lLmJvYXJkU2l6ZSAtIDE7XG4gICAgcmV0dXJuIG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkuZmlsdGVyKChtb3ZlKSA9PiBtb3ZlLnRvLnJvdyA9PT0gcHJvbW90aW9uUm93KS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSk7XG4gIH0pO1xuICByZWFkb25seSBjYXB0dXJlUmVhZHlQaWVjZUlkcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKSAhPT0gdW5kZWZpbmVkIHx8IGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgbW92ZXMgPSB0aGlzLmJhc2ljTW92ZXNGb3JDb2xvcihnYW1lLCBnYW1lLmN1cnJlbnRUdXJuKS5maWx0ZXIoKG1vdmUpID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpO1xuICAgIHJldHVybiBuZXcgU2V0KG1vdmVzLm1hcCgobW92ZSkgPT4gbW92ZS5waWVjZUlkKSk7XG4gIH0pO1xuICByZWFkb25seSB0aHJlYXRlbmVkUGllY2VJZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmICh0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgIT09IHVuZGVmaW5lZCB8fCBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IG9wcG9uZW50ID0gZ2FtZS5jdXJyZW50VHVybiA9PT0gJ3doaXRlJyA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIGNvbnN0IHRocmVhdGVuZWQgPSB0aGlzLmJhc2ljTW92ZXNGb3JDb2xvcihnYW1lLCBvcHBvbmVudClcbiAgICAgIC5tYXAoKG1vdmUpID0+IG1vdmUuY2FwdHVyZXNQaWVjZUlkKVxuICAgICAgLmZpbHRlcigocGllY2VJZCk6IHBpZWNlSWQgaXMgc3RyaW5nID0+ICEhcGllY2VJZCk7XG4gICAgcmV0dXJuIG5ldyBTZXQodGhyZWF0ZW5lZCk7XG4gIH0pO1xuICByZWFkb25seSBpc0FjdGlvbmFibGVUdXJuID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiYgdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSAmJiAhdGhpcy5ib3RUaGlua2luZygpICYmICF0aGlzLm1vdmVTeW5jaW5nKCksXG4gICk7XG4gIHJlYWRvbmx5IGlzV2FpdGluZ0ZvclR1cm4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyAmJiAhdGhpcy5pc0FjdGlvbmFibGVUdXJuKCksXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkUm93cyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KSk7XG4gIHJlYWRvbmx5IGJvYXJkQ29scyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KSk7XG4gIHJlYWRvbmx5IGRpc3BsYXlSb3dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gWy4uLnRoaXMuYm9hcmRSb3dzKCldLnJldmVyc2UoKSA6IHRoaXMuYm9hcmRSb3dzKCksXG4gICk7XG4gIHJlYWRvbmx5IGRpc3BsYXlDb2xzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gWy4uLnRoaXMuYm9hcmRDb2xzKCldLnJldmVyc2UoKSA6IHRoaXMuYm9hcmRDb2xzKCksXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkT3JpZW50YXRpb25Db2xvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAodGhpcy50dXRvcmlhbE1vZGUoKSkgcmV0dXJuICd3aGl0ZSc7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB1aWQgPyB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudFNpZGUoZ2FtZSwgdWlkKSA/PyAnd2hpdGUnIDogJ3doaXRlJztcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHJldHVybiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgb25saW5lUm9sZSA9IGNvbXB1dGVkKCgpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCAnd2FpdGluZycgfCAncGVuZGluZycgfCAnc3BlY3RhdG9yJyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKCF1aWQpIHJldHVybiAnc3BlY3RhdG9yJztcbiAgICBpZiAodGhpcy5vbmxpbmUuaXNIb3N0V2FpdGluZyhnYW1lLCB1aWQpKSByZXR1cm4gJ3dhaXRpbmcnO1xuICAgIGlmICh0aGlzLm9ubGluZS5pc1BlbmRpbmdHdWVzdChnYW1lLCB1aWQpKSByZXR1cm4gJ3BlbmRpbmcnO1xuICAgIHJldHVybiB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudFNpZGUoZ2FtZSwgdWlkKSA/PyAnc3BlY3RhdG9yJztcbiAgfSk7XG4gIHJlYWRvbmx5IGNhblBsYXlDdXJyZW50VHVybiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUiAmJiAhdGhpcy5ib3RUaGlua2luZygpO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMub25saW5lUm9sZSgpID09PSBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgY2FuQ29udHJvbEN1cnJlbnRHYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgcmV0dXJuIHJvbGUgPT09ICd3aGl0ZScgfHwgcm9sZSA9PT0gJ2JsYWNrJztcbiAgfSk7XG4gIHJlYWRvbmx5IHJlbWF0Y2hTdGF0ZSA9IGNvbXB1dGVkPENoZXNzaW1hbHNSZW1hdGNoU3RhdGU+KCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybiAnbm9uZSc7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoIXVpZCB8fCB0aGlzLm9ubGluZVJvbGUoKSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiAnbm9uZSc7XG5cbiAgICBjb25zdCBoYXNNaW5lID0gdGhpcy5vbmxpbmUuaGFzQ3VycmVudFJlbWF0Y2hSZXF1ZXN0KGdhbWUsIHVpZCk7XG4gICAgY29uc3QgaGFzT3RoZXIgPSB0aGlzLm9ubGluZS5oYXNPcHBvbmVudFJlbWF0Y2hSZXF1ZXN0KGdhbWUsIHVpZCk7XG5cbiAgICBpZiAoaGFzT3RoZXIgJiYgIWhhc01pbmUpIHJldHVybiAnaW5jb21pbmcnO1xuICAgIGlmIChoYXNNaW5lKSByZXR1cm4gJ3JlcXVlc3RlZCc7XG4gICAgcmV0dXJuICdub25lJztcbiAgfSk7XG4gIHJlYWRvbmx5IHJlbWF0Y2hBY3Rpb25MYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMucmVtYXRjaFN0YXRlKCk7XG4gICAgaWYgKHRoaXMucmVtYXRjaExvYWRpbmcoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudChzdGF0ZSA9PT0gJ2luY29taW5nJyA/ICdjaGVzc2ltYWxzQWNjZXB0aW5nUmVtYXRjaCcgOiAnY2hlc3NpbWFsc1JlcXVlc3RpbmdSZW1hdGNoJyk7XG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2luY29taW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0FjY2VwdFJlbWF0Y2gnKTtcbiAgICBpZiAoc3RhdGUgPT09ICdyZXF1ZXN0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZEFjdGlvbicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZW1hdGNoJyk7XG4gIH0pO1xuICByZWFkb25seSBzaG91bGRTaG93T25saW5lU3RhdHVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAhdGhpcy5wcm9qZWN0aW9uTW9kZSAmJiB0aGlzLmdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICd3YWl0aW5nJyxcbiAgKTtcbiAgcmVhZG9ubHkgb25saW5lU3RhdHVzVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Nvbm5lY3RpbmcnIHx8IHRoaXMubW92ZVN5bmNpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVN5bmNpbmdUaXRsZScpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkVGl0bGUnKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdleHBpcmVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUV4cGlyZWRUaXRsZScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUZpbmlzaGVkVGl0bGUnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGVuZGluZ1RpdGxlJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3BlY3RhdG9yVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lQ29ubmVjdGVkVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IG9ubGluZVN0YXR1c0JvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Nvbm5lY3RpbmcnIHx8IHRoaXMubW92ZVN5bmNpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVN5bmNpbmdCb2R5Jyk7XG4gICAgaWYgKHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlKCkgPT09ICdlcnJvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVEaXNjb25uZWN0ZWRCb2R5Jyk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZXhwaXJlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFeHBpcmVkQm9keScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUZpbmlzaGVkQm9keScpO1xuICAgIGlmIChyb2xlID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ0JvZHknKTtcbiAgICBpZiAocm9sZSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVWaWV3ZXInKTtcbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09IHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm5Cb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUdXJuJyk7XG4gIH0pO1xuICByZWFkb25seSB0dXRvcmlhbFN0ZXBJbmRleCA9IGNvbXB1dGVkKCgpID0+IE1hdGgubWluKHRoaXMuZ2FtZSgpLm1vdmVDb3VudCwgQ0hFU1NJTUFMU19UVVRPUklBTF9TVEVQUykpO1xuICByZWFkb25seSB0dXRvcmlhbFByb2dyZXNzTGFiZWwgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1xuICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNUdXRvcmlhbENvbXBsZXRlUHJvZ3Jlc3MnKVxuICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXRvcmlhbFByb2dyZXNzJylcbiAgICAgICAgICAucmVwbGFjZSgne3N0ZXB9JywgU3RyaW5nKHRoaXMudHV0b3JpYWxTdGVwSW5kZXgoKSArIDEpKVxuICAgICAgICAgIC5yZXBsYWNlKCd7dG90YWx9JywgU3RyaW5nKENIRVNTSU1BTFNfVFVUT1JJQUxfU1RFUFMpKSxcbiAgKTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxEb25lVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzVHV0b3JpYWxTdGVwJHt0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxfVRpdGxlYCk7XG4gIH0pO1xuICByZWFkb25seSB0dXRvcmlhbEJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1dG9yaWFsRG9uZUJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzVHV0b3JpYWxTdGVwJHt0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxfUJvZHlgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRUdXJuVGl0bGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc0N1cnJlbnRUdXJuJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpblRpdGxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ2NoZXNzaW1hbHNXaW5UaXRsZScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy53aW5uZXJEaXNwbGF5TmFtZSgpKSxcbiAgKTtcbiAgcmVhZG9ubHkgd2luQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByZWFzb24gPSB0aGlzLmdhbWUoKS53aW5uZXJSZWFzb24gPz8gJ3Byb21vdGlvbic7XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIHJlYXNvbiA9PT0gJ2VsaW1pbmF0aW9uJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzV2luRWxpbWluYXRpb24nXG4gICAgICAgIDogcmVhc29uID09PSAncmVzaWduYXRpb24nXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc1dpblJlc2lnbmF0aW9uJ1xuICAgICAgICAgIDogJ2NoZXNzaW1hbHNXaW5Qcm9tb3Rpb24nO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KTtcbiAgfSk7XG4gIHJlYWRvbmx5IHdpblJlYXNvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlYXNvbiA9IHRoaXMuZ2FtZSgpLndpbm5lclJlYXNvbiA/PyAncHJvbW90aW9uJztcbiAgICBjb25zdCBrZXkgPVxuICAgICAgcmVhc29uID09PSAnZWxpbWluYXRpb24nXG4gICAgICAgID8gJ2NoZXNzaW1hbHNSZWFzb25FbGltaW5hdGlvbidcbiAgICAgICAgOiByZWFzb24gPT09ICdyZXNpZ25hdGlvbidcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzUmVhc29uUmVzaWduYXRpb24nXG4gICAgICAgICAgOiAnY2hlc3NpbWFsc1JlYXNvblByb21vdGlvbic7XG4gICAgcmV0dXJuIHRoaXMudChrZXkpO1xuICB9KTtcbiAgcmVhZG9ubHkgbW92ZXNTdW1tYXJ5ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ2NoZXNzaW1hbHNNb3Zlc1N1bW1hcnknKS5yZXBsYWNlKCd7bW92ZXN9JywgYCR7dGhpcy5nYW1lKCkubW92ZUNvdW50fWApLFxuICApO1xuICByZWFkb25seSBjYXB0dXJlc0J5Q29sb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2NvcmU6IFJlY29yZDxDaGVzc2ltYWxzUGxheWVyQ29sb3IsIG51bWJlcj4gPSB7IHdoaXRlOiAwLCBibGFjazogMCB9O1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcy5nYW1lKCkubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlPy5jYXB0dXJlc1BpZWNlSWQpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgcGllY2UgPSBlbnRyeS5waWVjZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbW92ZS5waWVjZUlkKTtcbiAgICAgIGlmIChwaWVjZT8uY29sb3IpIHNjb3JlW3BpZWNlLmNvbG9yXSArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcmU7XG4gIH0pO1xuICByZWFkb25seSByZXN1bHRDYXB0dXJlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5yZXBsYXlFbnRyaWVzKCkuZmlsdGVyKChlbnRyeSkgPT4gISFlbnRyeS5tb3ZlPy5jYXB0dXJlc1BpZWNlSWQpLmxlbmd0aCxcbiAgKTtcbiAgcmVhZG9ubHkgcmVzdWx0UG93ZXJzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnJlcGxheUVudHJpZXMoKVxuICAgICAgLm1hcCgoZW50cnkpID0+IGVudHJ5Lm1vdmU/LmFuaW1hbClcbiAgICAgIC5maWx0ZXIoKGFuaW1hbCk6IGFuaW1hbCBpcyBDaGVzc2ltYWxzQW5pbWFsVHlwZSA9PiAhIWFuaW1hbCksXG4gICk7XG4gIHJlYWRvbmx5IGxpdmVTY29yZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpID8gdGhpcy5jcmVhdGVHYW1lU2NvcmUodGhpcy5nYW1lKCksICdXJykuc2NvcmUgOiB0aGlzLmNyZWF0ZUdhbWVTY29yZSh0aGlzLmdhbWUoKSkuc2NvcmUsXG4gICk7XG4gIHJlYWRvbmx5IHJlc3VsdFNjb3JlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jcmVhdGVHYW1lU2NvcmUodGhpcy5nYW1lKCkpKTtcbiAgcmVhZG9ubHkgcmVzdWx0U3RhdHMgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdFNjb3JlJyksXG4gICAgICB2YWx1ZTogU3RyaW5nKHRoaXMucmVzdWx0U2NvcmUoKS5zY29yZSksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0TW92ZXMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5nYW1lKCkubW92ZUNvdW50KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRDYXB0dXJlcycpLFxuICAgICAgdmFsdWU6IFN0cmluZyh0aGlzLnJlc3VsdENhcHR1cmVzKCkpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdFBvd2VycycpLFxuICAgICAgdmFsdWU6IFN0cmluZyh0aGlzLnJlc3VsdFBvd2VycygpLmxlbmd0aCksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0UmVhc29uJyksXG4gICAgICB2YWx1ZTogdGhpcy53aW5SZWFzb25MYWJlbCgpLFxuICAgIH0sXG4gIF0pO1xuICByZWFkb25seSByZXN1bHRQb3dlcnNMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwb3dlcnMgPSB0aGlzLnJlc3VsdFBvd2VycygpO1xuICAgIGlmICghcG93ZXJzLmxlbmd0aCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdE5vUG93ZXJzJyk7XG4gICAgcmV0dXJuIHBvd2Vycy5tYXAoKGFuaW1hbCkgPT4gdGhpcy5hbmltYWxMYWJlbChhbmltYWwpKS5qb2luKCcgwrcgJyk7XG4gIH0pO1xuICByZWFkb25seSBsaXZlU2NvcmVMYWJlbCA9IGNvbXB1dGVkKCgpID0+IFN0cmluZyh0aGlzLmxpdmVTY29yZSgpKSk7XG4gIHJlYWRvbmx5IHJlc3VsdEJlc3RNb3ZlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYmVzdE1vdmUgPSB0aGlzLnJlc3VsdFNjb3JlKCkuYmVzdE1vdmU7XG4gICAgaWYgKCFiZXN0TW92ZSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdE5vQmVzdE1vdmUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0QmVzdE1vdmVMaW5lJylcbiAgICAgIC5yZXBsYWNlKCd7c2NvcmV9JywgU3RyaW5nKGJlc3RNb3ZlLnNjb3JlKSlcbiAgICAgIC5yZXBsYWNlKCd7bW92ZX0nLCBiZXN0TW92ZS5sYWJlbCk7XG4gIH0pO1xuICByZWFkb25seSBzaG91bGRTaG93Qm90UmVwb3J0ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5tb2RlID09PSAnbG9jYWwnICYmXG4gICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmXG4gICAgIXRoaXMudHV0b3JpYWxNb2RlKCkgJiZcbiAgICAhIXRoaXMuZ2FtZUJvdFByb2ZpbGUoKSxcbiAgKTtcbiAgcmVhZG9ubHkgYm90UmVwb3J0VGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZ2FtZUJvdFByb2ZpbGUoKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90UmVwb3J0VnMnKS5yZXBsYWNlKFxuICAgICAgJ3tib3R9JyxcbiAgICAgIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSxcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgYm90UmVwb3J0Qm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5nYW1lQm90UHJvZmlsZSgpO1xuICAgIGNvbnN0IGJvdE1vdmVzID0gdGhpcy5yZXBsYXlFbnRyaWVzKCkuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkubW92ZT8ucGllY2VJZC5zdGFydHNXaXRoKCdCJykpO1xuICAgIGNvbnN0IGNhcHR1cmVzID0gYm90TW92ZXMuZmlsdGVyKChlbnRyeSkgPT4gISFlbnRyeS5tb3ZlPy5jYXB0dXJlc1BpZWNlSWQpLmxlbmd0aDtcbiAgICBjb25zdCBwb3dlcnMgPSBib3RNb3Zlcy5maWx0ZXIoKGVudHJ5KSA9PiAhIWVudHJ5Lm1vdmU/LmFuaW1hbCkubGVuZ3RoO1xuICAgIGNvbnN0IG91dGNvbWVLZXkgPVxuICAgICAgdGhpcy5nYW1lKCkud2lubmVyID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICAgICA/ICdjaGVzc2ltYWxzQm90UmVwb3J0T3V0Y29tZVdvbidcbiAgICAgICAgOiAnY2hlc3NpbWFsc0JvdFJlcG9ydE91dGNvbWVMb3N0JztcblxuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRCb2R5JylcbiAgICAgIC5yZXBsYWNlKCd7b3V0Y29tZX0nLCB0aGlzLnQob3V0Y29tZUtleSkpXG4gICAgICAucmVwbGFjZSgne2NhcHR1cmVzfScsIFN0cmluZyhjYXB0dXJlcykpXG4gICAgICAucmVwbGFjZSgne3Bvd2Vyc30nLCBTdHJpbmcocG93ZXJzKSlcbiAgICAgIC5yZXBsYWNlKCd7c3R5bGV9JywgcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGUpIDogJycpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VyaWVzR2FtZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3Bwb25lbnRVaWQgPSB0aGlzLmN1cnJlbnRPcHBvbmVudFVpZCgpO1xuICAgIGlmICghb3Bwb25lbnRVaWQpIHJldHVybiBbXSBhcyBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5W107XG4gICAgcmV0dXJuIHRoaXMub25saW5lSGlzdG9yeSgpLmZpbHRlcihcbiAgICAgIChlbnRyeSkgPT4gZW50cnkub3Bwb25lbnRVaWQgPT09IG9wcG9uZW50VWlkICYmIGVudHJ5LnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyxcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VyaWVzU2NvcmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZXMgPSB0aGlzLnNlcmllc0dhbWVzKCk7XG4gICAgaWYgKCFnYW1lcy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1pbmU6IGdhbWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lm91dGNvbWUgPT09ICd3b24nKS5sZW5ndGgsXG4gICAgICByaXZhbDogZ2FtZXMuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkub3V0Y29tZSA9PT0gJ2xvc3QnKS5sZW5ndGgsXG4gICAgICB0b3RhbDogZ2FtZXMubGVuZ3RoLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBzZXJpZXNTdW1tYXJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNjb3JlID0gdGhpcy5zZXJpZXNTY29yZSgpO1xuICAgIGlmICghc2NvcmUgfHwgc2NvcmUudG90YWwgPCAyKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1Nlcmllc1Njb3JlJylcbiAgICAgIC5yZXBsYWNlKCd7bWluZX0nLCBTdHJpbmcoc2NvcmUubWluZSkpXG4gICAgICAucmVwbGFjZSgne3JpdmFsfScsIFN0cmluZyhzY29yZS5yaXZhbCkpXG4gICAgICAucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnJlbWF0Y2hPcHBvbmVudE5hbWUoKSk7XG4gIH0pO1xuICByZWFkb25seSBsYXN0U2VyaWVzV2lubmVyTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGFzdCA9IHRoaXMuc2VyaWVzR2FtZXMoKVswXTtcbiAgICBpZiAoIWxhc3QpIHJldHVybiAnJztcbiAgICByZXR1cm4gbGFzdC5vdXRjb21lID09PSAnd29uJyA/IHRoaXMudCgnY2hlc3NpbWFsc1lvdScpIDogbGFzdC5vcHBvbmVudE5hbWUgfHwgdGhpcy5yZW1hdGNoT3Bwb25lbnROYW1lKCk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc3RhcnRUaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc2lnblRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1HYW1lc1RpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29uZmlybU5ld1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1Nb2RlVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1Cb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXN0YXJ0Qm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc2lnbkJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybUdhbWVzQm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdjaGFsbGVuZ2UtbmV3JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUNvbmZpcm1OZXdCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1Nb2RlQm9keScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogdGhpcy50KCdjYW5jZWwnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY2FuY2VsJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6XG4gICAgICAgICAgYWN0aW9uID09PSAncmVzaWduJ1xuICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNSZXNpZ24nKVxuICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdyZXN0YXJ0J1xuICAgICAgICAgICAgICA/IHRoaXMudCgncmVzdGFydCcpXG4gICAgICAgICAgICAgIDogYWN0aW9uID09PSAnZ2FtZXMnXG4gICAgICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFuZ2VHYW1lJylcbiAgICAgICAgICAgICAgICA6IGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnXG4gICAgICAgICAgICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXJ0TmV3Q29uZmlybScpXG4gICAgICAgICAgICAgICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0NoYW5nZU1vZGUnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgICB9LFxuICAgIF07XG4gIH0pO1xuICByZWFkb25seSBydWxlc0FjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiBbXG4gICAge1xuICAgICAgdGV4dDogdGhpcy50KCdjbG9zZScpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjbG9zZScsXG4gICAgfSxcbiAgXSk7XG4gIHJlYWRvbmx5IGFib3V0QWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IFtcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2Nsb3NlJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2Nsb3NlJyxcbiAgICB9LFxuICBdKTtcbiAgcmVhZG9ubHkgYWN0aW9uSGludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwaWVjZUlkID0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgICBpZiAoIXBpZWNlSWQpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrQW55UGllY2UnKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEFuaW1hbCgpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja1Bvd2VyVGFyZ2V0Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tUYXJnZXQnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gICAgdGhpcy5hdWRpby5wcmVsb2FkQ2hlc3NpbWFsc1NhbXBsZXMoKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5tdXNpY0VuYWJsZWRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGVuYWJsZWQpID0+IHtcbiAgICAgICAgdGhpcy5hdWRpby5zZXRNdXNpY0VuYWJsZWQoZW5hYmxlZCk7XG4gICAgICAgIGlmIChlbmFibGVkKSB0aGlzLnN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zZnhFbmFibGVkQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChlbmFibGVkKSA9PiB0aGlzLmF1ZGlvLnNldFNmeEVuYWJsZWQoZW5hYmxlZCkpLFxuICAgICk7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLm11c2ljVm9sdW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2b2x1bWUpID0+IHRoaXMuc2V0TXVzaWNWb2x1bWUodm9sdW1lKSksXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2b2x1bWUpID0+IHRoaXMuc2V0U2Z4Vm9sdW1lKHZvbHVtZSkpLFxuICAgICk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgdGhpcy5xdWV1ZUhpc3RvcnlXYXRjaCgpO1xuICAgICAgICB0aGlzLndhdGNoQ2hhbGxlbmdlU3RhdHMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5oaXN0b3J5VWlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVIaXN0b3J5LnNldChbXSk7XG4gICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzLnNldCh0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmVtcHR5U3RhdHMoKSk7XG4gICAgICB0aGlzLmNoYWxsZW5nZUhpc3Rvcnkuc2V0KFtdKTtcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgICAgY29uc3Qga2V5ID0gYCR7Z2FtZS5pZH06JHtnYW1lLm1vdmVDb3VudH06JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfWA7XG4gICAgICBpZiAodGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICB0aGlzLmxhc3RDaGFsbGVuZ2VIYW5kbGVkS2V5ID0ga2V5O1xuICAgICAgdGhpcy5oYW5kbGVDaGFsbGVuZ2VSb3VuZEZpbmlzaGVkKGdhbWUpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tb2RlU3RhdHNSZXN1bHQoZ2FtZSk7XG4gICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuICAgICAgY29uc3Qga2V5ID0gYCR7cmVzdWx0Lm1vZGV9OiR7Z2FtZS5pZH06JHtnYW1lLm1vdmVDb3VudH06JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfWA7XG4gICAgICBpZiAodGhpcy5sYXN0TW9kZVN0YXRzSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICB0aGlzLmxhc3RNb2RlU3RhdHNIYW5kbGVkS2V5ID0ga2V5O1xuICAgICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLnJlY29yZE1vZGVSZXN1bHQocmVzdWx0Lm1vZGUsIHJlc3VsdC53b24pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBtb2RlIHN0YXRzIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jVHVyblRpbWVyKCk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcbiAgICBpZiAodGhpcy5zY29yZVBvcENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcik7XG4gICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcik7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIGlmICh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcik7XG4gICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMucGVuZGluZ09ubGluZUdhbWVJZDtcbiAgICBpZiAoZ2FtZUlkICYmIHRoaXMub3BlbmVkT25saW5lR2FtZUlkICE9PSBnYW1lSWQgJiYgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkICE9PSBnYW1lSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNaW5pR2FtZXMnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvcnRVc2VySWQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRyaW0oKTtcbiAgICBpZiAobm9ybWFsaXplZC5sZW5ndGggPD0gMTApIHJldHVybiBub3JtYWxpemVkO1xuICAgIHJldHVybiBgJHtub3JtYWxpemVkLnNsaWNlKDAsIDQpfeKApiR7bm9ybWFsaXplZC5zbGljZSgtNCl9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlOiBudW1iZXIgfCBSYW5nZVZhbHVlKTogbnVtYmVyIHtcbiAgICBjb25zdCByYXcgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiB2YWx1ZS51cHBlciA/PyB2YWx1ZS5sb3dlciA/PyAwO1xuICAgIHJldHVybiBNYXRoLm1pbigxMDAsIE1hdGgubWF4KDAsIE1hdGgucm91bmQocmF3KSkpO1xuICB9XG5cbiAgc3RhcnRDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkgJiYgdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSkge1xuICAgICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnY2hhbGxlbmdlLW5ldycpO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlTmV3Q2hhbGxlbmdlUnVuKCk7XG4gIH1cblxuICBvcGVuQ2hhbGxlbmdlVmlldygpOiB2b2lkIHtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2NoYWxsZW5nZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgYmFja1RvSG9tZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV3Q2hhbGxlbmdlUnVuKCk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICBpZDogYGNoYWxsZW5nZS0ke0RhdGUubm93KCkudG9TdHJpbmcoMzYpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDgpfWAsXG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGl2ZXNTdGFydDogMyxcbiAgICAgIGxpdmVzUmVtYWluaW5nOiAzLFxuICAgICAgY3VycmVudFJvdW5kOiAxLFxuICAgICAgd2luczogMCxcbiAgICAgIGxvc3NlczogMCxcbiAgICAgIGJlc3RTdHJlYWtJblJ1bjogMCxcbiAgICAgIGN1cnJlbnRTdHJlYWs6IDAsXG4gICAgICBib3RMYWRkZXI6IHRoaXMuY2hhbGxlbmdlTGFkZGVyLm1hcCgoYm90KSA9PiBib3QuaWQpLFxuICAgICAgcm91bmRSZXN1bHRzOiBbXSxcbiAgICAgIHN0YXJ0ZWRBdDogbm93LFxuICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgfTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQocnVuKTtcbiAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQocnVuKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5yZWNvcmRDaGFsbGVuZ2VTdGFydGVkKHRoaXMuY2hhbGxlbmdlUnVuKCkgPz8gcnVuKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBydW4gc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICByZXN1bWVDaGFsbGVuZ2UocnVuID0gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSk6IHZvaWQge1xuICAgIGlmICghcnVuIHx8IHJ1bi5zdGF0dXMgIT09ICdhY3RpdmUnKSByZXR1cm47XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChmYWxzZSk7XG4gICAgY29uc3Qgc2F2ZWRHYW1lID0gdGhpcy5hY3RpdmVHYW1lRm9yUnVuKHJ1bik7XG4gICAgaWYgKHNhdmVkR2FtZSkge1xuICAgICAgdGhpcy5lbnRlckNoYWxsZW5nZVJvdW5kKHJ1biwgc2F2ZWRHYW1lLCBmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICB9XG5cbiAgY29udGludWVDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdiZXR3ZWVuJykgcmV0dXJuO1xuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoYWxsZW5nZVJvdW5kKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHZvaWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gICAgaWYgKCFib3QpIHtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdjb21wbGV0ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lbnRlckNoYWxsZW5nZVJvdW5kKHJ1biwgY3JlYXRlQ2hlc3NpbWFsc0dhbWUoYm90LmJvYXJkU2l6ZSksIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnRlckNoYWxsZW5nZVJvdW5kKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biwgZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgc2hvd0ludHJvOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbTWF0aC5tYXgoMCwgcnVuLmN1cnJlbnRSb3VuZCAtIDEpXTtcbiAgICBpZiAoIWJvdCkge1xuICAgICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoJ2NvbXBsZXRlZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUuc2V0KCdib3QnKTtcbiAgICB0aGlzLnNlbGVjdGVkQm9hcmRTaXplLnNldChib3QuYm9hcmRTaXplKTtcbiAgICB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eS5zZXQoYm90LmRpZmZpY3VsdHkpO1xuICAgIHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KGJvdC5wcm9maWxlSWQpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQoYm90LnByb2ZpbGVJZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoJ3BsYXlpbmcnKTtcbiAgICB0aGlzLmxhc3RDaGFsbGVuZ2VIYW5kbGVkS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgdGhpcy5wZXJzaXN0QWN0aXZlQ2hhbGxlbmdlR2FtZShnYW1lKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIGlmIChzaG93SW50cm8pIHRoaXMuc2hvd0NoYWxsZW5nZUludHJvKCk7XG4gICAgZWxzZSB0aGlzLmRpc21pc3NDaGFsbGVuZ2VJbnRybygpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmRpc21pc3NDaGFsbGVuZ2VJbnRybygpO1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldCh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnID8gdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZCgpIDogdW5kZWZpbmVkKTtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmdhbWUuc2V0KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUoKSkpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2hhbGxlbmdlUm91bmRGaW5pc2hlZChnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGlmICghcnVuIHx8ICFib3QpIHJldHVybjtcblxuICAgIGNvbnN0IHdvbiA9IGdhbWUud2lubmVyID09PSAnd2hpdGUnO1xuICAgIGNvbnN0IHJvdW5kU3RhdHMgPSB0aGlzLmNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZSk7XG4gICAgY29uc3QgbmV4dExpdmVzID0gd29uID8gcnVuLmxpdmVzUmVtYWluaW5nIDogTWF0aC5tYXgoMCwgcnVuLmxpdmVzUmVtYWluaW5nIC0gMSk7XG4gICAgY29uc3QgbmV4dFN0cmVhayA9IHdvbiA/IHJ1bi5jdXJyZW50U3RyZWFrICsgMSA6IDA7XG4gICAgY29uc3QgbmV4dFJvdW5kID0gd29uID8gTWF0aC5taW4odGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoLCBydW4uY3VycmVudFJvdW5kICsgMSkgOiBydW4uY3VycmVudFJvdW5kO1xuICAgIGNvbnN0IGNvbXBsZXRlZCA9IHdvbiAmJiBydW4uY3VycmVudFJvdW5kID49IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aDtcbiAgICBjb25zdCBmYWlsZWQgPSAhd29uICYmIG5leHRMaXZlcyA8PSAwO1xuICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3Qgcm91bmRSZXN1bHQ6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCA9IHtcbiAgICAgIHJvdW5kOiBydW4uY3VycmVudFJvdW5kLFxuICAgICAgYm90SWQ6IGJvdC5pZCxcbiAgICAgIHByb2ZpbGVJZDogYm90LnByb2ZpbGVJZCxcbiAgICAgIHdvbixcbiAgICAgIGxpdmVzUmVtYWluaW5nOiBuZXh0TGl2ZXMsXG4gICAgICBzdGF0czogcm91bmRTdGF0cyxcbiAgICAgIGZpbmlzaGVkQXQsXG4gICAgfTtcbiAgICBjb25zdCBuZXh0UnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgLi4ucnVuLFxuICAgICAgc3RhdHVzOiBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6IGZhaWxlZCA/ICdmYWlsZWQnIDogJ2FjdGl2ZScsXG4gICAgICBsaXZlc1JlbWFpbmluZzogbmV4dExpdmVzLFxuICAgICAgd2luczogcnVuLndpbnMgKyAod29uID8gMSA6IDApLFxuICAgICAgbG9zc2VzOiBydW4ubG9zc2VzICsgKHdvbiA/IDAgOiAxKSxcbiAgICAgIGN1cnJlbnRTdHJlYWs6IG5leHRTdHJlYWssXG4gICAgICBiZXN0U3RyZWFrSW5SdW46IE1hdGgubWF4KHJ1bi5iZXN0U3RyZWFrSW5SdW4sIG5leHRTdHJlYWspLFxuICAgICAgY3VycmVudFJvdW5kOiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gcnVuLmN1cnJlbnRSb3VuZCA6IG5leHRSb3VuZCxcbiAgICAgIHJvdW5kUmVzdWx0czogWy4uLnJ1bi5yb3VuZFJlc3VsdHMsIHJvdW5kUmVzdWx0XSxcbiAgICAgIGFjdGl2ZUdhbWU6IHVuZGVmaW5lZCxcbiAgICAgIHVwZGF0ZWRBdDogZmluaXNoZWRBdCxcbiAgICAgIGZpbmlzaGVkQXQ6IGNvbXBsZXRlZCB8fCBmYWlsZWQgPyBmaW5pc2hlZEF0IDogdW5kZWZpbmVkLFxuICAgIH07XG5cbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQobmV4dFJ1bik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh3b24pO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQoYm90KTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldChyb3VuZFN0YXRzKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoXG4gICAgICBydW4uY3VycmVudFJvdW5kID4gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWRcbiAgICAgICAgfHwgTWF0aC5tYXgocnVuLmJlc3RTdHJlYWtJblJ1biwgbmV4dFN0cmVhaykgPiB0aGlzLmNoYWxsZW5nZVN0YXRzKCkuYmVzdFdpblN0cmVhayxcbiAgICApO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KGNvbXBsZXRlZCA/ICdjb21wbGV0ZWQnIDogZmFpbGVkID8gJ2ZhaWxlZCcgOiAnYmV0d2VlbicpO1xuXG4gICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmFwcGx5Um91bmRSZXN1bHQoe1xuICAgICAgcnVuOiBuZXh0UnVuLFxuICAgICAgcm91bmRSZWFjaGVkOiBydW4uY3VycmVudFJvdW5kLFxuICAgICAgd29uLFxuICAgICAgY29tcGxldGVkLFxuICAgICAgcm91bmRTdGF0cyxcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBzdGF0cyBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWJhbmRvbkNoYWxsZW5nZUlmTmVlZGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4gfHwgcnVuLnN0YXR1cyAhPT0gJ2FjdGl2ZScgfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAnaWRsZScpIHJldHVybjtcbiAgICB0aGlzLmFiYW5kb25DaGFsbGVuZ2VSdW4ocnVuKTtcbiAgfVxuXG4gIHByaXZhdGUgYWJhbmRvbkNoYWxsZW5nZVJ1bihydW4/OiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogdm9pZCB7XG4gICAgaWYgKCFydW4gfHwgcnVuLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHJldHVybjtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgbmV4dFJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biA9IHtcbiAgICAgIC4uLnJ1bixcbiAgICAgIHN0YXR1czogJ2FiYW5kb25lZCcsXG4gICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgIGZpbmlzaGVkQXQ6IG5vdyxcbiAgICB9O1xuICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5zYXZlUnVuKG5leHRSdW4pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY2hhbGxlbmdlIGFiYW5kb24gc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBzdGFydFR1dG9yaWFsKCk6IHZvaWQge1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZExvY2FsTW9kZS5zZXQoJ29uZS1kZXZpY2UnKTtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmdhbWUuc2V0KHRoaXMuY3JlYXRlVHV0b3JpYWxHYW1lKCkpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT25saW5lR2FtZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnY29ubmVjdGluZycpO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5vbmxpbmVFcnJvci5zZXQoJycpO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgnY3JlYXRlJyk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBnYW1lID0gYXdhaXQgdGhpcy5vbmxpbmUuY3JlYXRlR2FtZSh0aGlzLnNlbGVjdGVkQm9hcmRTaXplKCkpO1xuICAgICAgdGhpcy5vbmxpbmVVaWQuc2V0KHRoaXMub25saW5lLmN1cnJlbnRVaWQpO1xuICAgICAgdGhpcy5xdWV1ZUhpc3RvcnlXYXRjaCgpO1xuICAgICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSBnYW1lLmlkO1xuICAgICAgdGhpcy53YXRjaE9ubGluZUdhbWUoZ2FtZS5pZCk7XG4gICAgICB0aGlzLmdhbWUuc2V0KGdhbWUpO1xuICAgICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3Muc3VjY2VzcygpO1xuICAgICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2hlc3NpbWFsc0dhbWVSb3V0ZShnYW1lLmlkKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNyZWF0ZSBvbmxpbmUgZ2FtZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLmVycm9yKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25saW5lQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgam9pbk9ubGluZUdhbWVCeUNvZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ2FtZUlkID0gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKHRoaXMub25saW5lSm9pbkNvZGUoKSk7XG4gICAgaWYgKCF0aGlzLm9ubGluZS5pc1ZhbGlkR2FtZUlkKGdhbWVJZCkpIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUludmFsaWRDb2RlJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub25saW5lSm9pbkNvZGUuc2V0KGdhbWVJZCk7XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdqb2luJyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub3Blbk9ubGluZUdhbWUoZ2FtZUlkKTtcbiAgICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9PT0gZ2FtZUlkKSB7XG4gICAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZ2FtZUlkKSk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25saW5lQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9wZW5PbmxpbmVHYW1lKGdhbWVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZEdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZChnYW1lSWQpO1xuICAgIGlmICghdGhpcy5vbmxpbmUuaXNWYWxpZEdhbWVJZChub3JtYWxpemVkR2FtZUlkKSkge1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lSW52YWxpZENvZGUnKSk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPT09IG5vcm1hbGl6ZWRHYW1lSWQgfHwgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID09PSBub3JtYWxpemVkR2FtZUlkKSByZXR1cm47XG5cbiAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnY29ubmVjdGluZycpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSBub3JtYWxpemVkR2FtZUlkO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5qb2luR2FtZShub3JtYWxpemVkR2FtZUlkKTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gbm9ybWFsaXplZEdhbWVJZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKG5vcm1hbGl6ZWRHYW1lSWQpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnNlbGVjdGlvbigpO1xuICAgICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBvcGVuIG9ubGluZSBnYW1lIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy5vbmxpbmVPcGVuRXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLmVycm9yKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHJlc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgIHZvaWQgdGhpcy5yZXF1ZXN0T25saW5lUmVtYXRjaCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmdhbWUuc2V0KHRoaXMudHV0b3JpYWxNb2RlKCkgPyB0aGlzLmNyZWF0ZVR1dG9yaWFsR2FtZSgpIDogY3JlYXRlQ2hlc3NpbWFsc0dhbWUodGhpcy5nYW1lKCkuYm9hcmRTaXplKSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgZXhpdFR1dG9yaWFsKCk6IHZvaWQge1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5yZXNldFRvTW9kZVNldHVwKCk7XG4gIH1cblxuICByZXNldFRvTW9kZVNldHVwKCk6IHZvaWQge1xuICAgIHRoaXMuYWJhbmRvbkNoYWxsZW5nZUlmTmVlZGVkKCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICB9XG5cbiAgcmVzZXRUb0dhbWVzTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5yZXNldFRvTW9kZVNldHVwKCk7XG4gICAgY29uc3Qgcm91dGUgPSB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChyb3V0ZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQocmV0dXJuSG9tZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmdhbWUuc2V0KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKGdhbWUuYm9hcmRTaXplKSk7XG4gICAgaWYgKHJldHVybkhvbWUpIHtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdFJlc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdyZXN0YXJ0Jyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdtb2RlJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlR2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdnYW1lcycpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdFJlc2lnbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnIHx8ICF0aGlzLmNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSByZXR1cm47XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzaWduJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBoYW5kbGVDb25maXJtTW9kYWxEaXNtaXNzZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybWVkQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtZWRBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgaWYgKCFhY3Rpb24pIHJldHVybjtcblxuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0Jykge1xuICAgICAgdGhpcy5yZXN0YXJ0R2FtZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnbW9kZScpIHtcbiAgICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9HYW1lc01lbnUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHtcbiAgICAgIHRoaXMucmVzaWduR2FtZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldycpIHtcbiAgICAgIHRoaXMuYWJhbmRvbkNoYWxsZW5nZVJ1bih0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bigpKTtcbiAgICAgIHRoaXMuY3JlYXRlTmV3Q2hhbGxlbmdlUnVuKCk7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybVBlbmRpbmdBY3Rpb24odG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodG9rZW4gIT09ICdjb25maXJtJykge1xuICAgICAgdGhpcy5jbG9zZUNvbmZpcm1Nb2RhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldChhY3Rpb24pO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzaWduR2FtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIHZvaWQgdGhpcy5vbmxpbmUucmVzaWduKGdhbWUuaWQpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5nYW1lLnNldChyZXNpZ25DaGVzc2ltYWxzR2FtZShnYW1lLCBnYW1lLmN1cnJlbnRUdXJuKSk7XG4gICAgdGhpcy5zaG93TGF0ZXN0UmV2aWV3U25hcHNob3QoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCgpO1xuICB9XG5cbiAgb3BlblJ1bGVzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1J1bGVzTW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlUnVsZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUnVsZXNNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIG9wZW5TZXR0aW5nc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTZXR0aW5nc01vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZVNldHRpbmdzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1NldHRpbmdzTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBvcGVuUHJvZ3Jlc3NNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUHJvZ3Jlc3NNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VQcm9ncmVzc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNQcm9ncmVzc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgb3BlbkFib3V0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0Fib3V0TW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlQWJvdXRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzQWJvdXRNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHNldE11c2ljVm9sdW1lKHZhbHVlOiBudW1iZXIgfCBSYW5nZVZhbHVlKTogdm9pZCB7XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5yYW5nZVZhbHVlVG9OdW1iZXIodmFsdWUpO1xuICAgIGlmICh0aGlzLm11c2ljVm9sdW1lQ29udHJvbC52YWx1ZSAhPT0gdm9sdW1lKSB7XG4gICAgICB0aGlzLm11c2ljVm9sdW1lQ29udHJvbC5zZXRWYWx1ZSh2b2x1bWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5zZXRNdXNpY1ZvbHVtZSh2b2x1bWUgLyAxMDApO1xuICAgIGlmICh2b2x1bWUgPiAwICYmIHRoaXMuYXVkaW8ubXVzaWNFbmFibGVkKCkpIHRoaXMuc3luY0NoZXNzaW1hbHNNdXNpY0FmdGVyU2V0dGluZ3NDaGFuZ2UoKTtcbiAgfVxuXG4gIHNldFNmeFZvbHVtZSh2YWx1ZTogbnVtYmVyIHwgUmFuZ2VWYWx1ZSk6IHZvaWQge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMucmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodGhpcy5zZnhWb2x1bWVDb250cm9sLnZhbHVlICE9PSB2b2x1bWUpIHtcbiAgICAgIHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC5zZXRWYWx1ZSh2b2x1bWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5zZXRTZnhWb2x1bWUodm9sdW1lIC8gMTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgdHV0b3JpYWxFeHBlY3RlZE1vdmUoKTogQ2hlc3NpbWFsc1R1dG9yaWFsRXhwZWN0ZWRNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMudHV0b3JpYWxNb2RlKCkgfHwgdGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0ZXBzOiBDaGVzc2ltYWxzVHV0b3JpYWxFeHBlY3RlZE1vdmVbXSA9IFtcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMywgY29sOiAxIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMScsIHRvOiB7IHJvdzogMiwgY29sOiAyIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMiwgY29sOiAyIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMicsIHRvOiB7IHJvdzogMiwgY29sOiA1IH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMSwgY29sOiA0IH0sIGFuaW1hbDogJ2thbmdhcm9vJyB9LFxuICAgICAgeyBwaWVjZUlkOiAnVEIyJywgdG86IHsgcm93OiAzLCBjb2w6IDUgfSB9LFxuICAgICAgeyBwaWVjZUlkOiAnVFcxJywgdG86IHsgcm93OiAwLCBjb2w6IDQgfSB9LFxuICAgIF07XG4gICAgcmV0dXJuIHN0ZXBzW3RoaXMuZ2FtZSgpLm1vdmVDb3VudF07XG4gIH1cblxuICBpc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHBlY3RlZCA9IHRoaXMudHV0b3JpYWxFeHBlY3RlZE1vdmUoKTtcbiAgICByZXR1cm4gISFleHBlY3RlZD8uYW5pbWFsICYmIGV4cGVjdGVkLmFuaW1hbCAhPT0gYW5pbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUdXRvcmlhbEdhbWUoKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gICAgY29uc3QgYmFzZSA9IGNyZWF0ZUNoZXNzaW1hbHNHYW1lKDYpO1xuICAgIGNvbnN0IHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW10gPSBbXG4gICAgICB7IGlkOiAnVFcxJywgY29sb3I6ICd3aGl0ZScsIHBvc2l0aW9uOiB7IHJvdzogNCwgY29sOiAxIH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgICAgeyBpZDogJ1RCMScsIGNvbG9yOiAnYmxhY2snLCBwb3NpdGlvbjogeyByb3c6IDEsIGNvbDogMiB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICAgIHsgaWQ6ICdUQjInLCBjb2xvcjogJ2JsYWNrJywgcG9zaXRpb246IHsgcm93OiAxLCBjb2w6IDUgfSwgY2FwdHVyZWQ6IGZhbHNlIH0sXG4gICAgICB7IGlkOiAnVEIzJywgY29sb3I6ICdibGFjaycsIHBvc2l0aW9uOiB7IHJvdzogMSwgY29sOiA0IH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgIF07XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJhc2UsXG4gICAgICBpZDogJ1RVVE9SSUFMJyxcbiAgICAgIHBpZWNlcyxcbiAgICAgIGN1cnJlbnRUdXJuOiAnd2hpdGUnLFxuICAgICAgbW92ZUNvdW50OiAwLFxuICAgICAgcGxheWVyczoge1xuICAgICAgICB3aGl0ZToge1xuICAgICAgICAgIC4uLmJhc2UucGxheWVycy53aGl0ZSxcbiAgICAgICAgICBwb3dlclVubG9ja2VkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmxhY2s6IHtcbiAgICAgICAgICAuLi5iYXNlLnBsYXllcnMuYmxhY2ssXG4gICAgICAgICAgcG93ZXJVbmxvY2tlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbW92ZUhpc3Rvcnk6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vdmVOdW1iZXI6IDAsXG4gICAgICAgICAgcGllY2VzOiBwaWVjZXMubWFwKChwaWVjZSkgPT4gKHsgLi4ucGllY2UsIHBvc2l0aW9uOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0gfSkpLFxuICAgICAgICAgIGN1cnJlbnRUdXJuOiAnd2hpdGUnLFxuICAgICAgICAgIHN0YXR1czogJ2luX3Byb2dyZXNzJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYmFzaWNNb3Zlc0ZvckNvbG9yKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgICBjb25zdCB0dXJuU3RhdGUgPSBjb2xvciA9PT0gZ2FtZS5jdXJyZW50VHVybiA/IGdhbWUgOiB7IC4uLmdhbWUsIGN1cnJlbnRUdXJuOiBjb2xvciB9O1xuICAgIHJldHVybiB0dXJuU3RhdGUucGllY2VzXG4gICAgICAuZmlsdGVyKChwaWVjZSkgPT4gcGllY2UuY29sb3IgPT09IGNvbG9yICYmICFwaWVjZS5jYXB0dXJlZClcbiAgICAgIC5mbGF0TWFwKChwaWVjZSkgPT4gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModHVyblN0YXRlLCBwaWVjZS5pZCkpO1xuICB9XG5cbiAgc2VsZWN0Q2VsbChwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8ICF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpIHx8IHRoaXMubW92aW5nUGllY2UoKSB8fCB0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybjtcblxuICAgIGNvbnN0IHBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoZ2FtZSwgcG9zaXRpb24pO1xuICAgIGlmIChwaWVjZT8uY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldChwaWVjZS5pZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZSA9IHRoaXMubGVnYWxNb3ZlcygpLmZpbmQoKGl0ZW0pID0+IHBvc2l0aW9uS2V5KGl0ZW0udG8pID09PSBwb3NpdGlvbktleShwb3NpdGlvbikpO1xuICAgIGlmICghbW92ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5jb21taXRDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tbWl0Q2hlc3NpbWFsc01vdmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgbW92ZTogQ2hlc3NpbWFsc01vdmUpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoZ2FtZSwgbW92ZSk7XG4gICAgICBpZiAobW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlKTtcbiAgICAgIGlmICh1cGRhdGVkLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCh1cGRhdGVkKTtcbiAgICAgIHRoaXMuYW5pbWF0ZU1vdmUoZ2FtZSwgbW92ZSwgdXBkYXRlZCk7XG4gICAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgICB0aGlzLm1vdmVTeW5jaW5nLnNldCh0cnVlKTtcbiAgICAgICAgdm9pZCB0aGlzLm9ubGluZVxuICAgICAgICAgIC5tb3ZlKGdhbWUuaWQsIG1vdmUpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuaW1wYWN0KG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gJ21lZGl1bScgOiAnbGlnaHQnKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIG9ubGluZSBtb3ZlIGZhaWxlZCcsIHsgZ2FtZUlkOiBnYW1lLmlkLCBtb3ZlLCBlcnJvciB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3luY1R1cm5UaW1lcigpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLnR1cm5UaW1lckR1cmF0aW9uU2Vjb25kcygpO1xuICAgIGlmIChcbiAgICAgICFkdXJhdGlvbiB8fFxuICAgICAgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgICF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpIHx8XG4gICAgICB0aGlzLmJvdFRoaW5raW5nKCkgfHxcbiAgICAgIHRoaXMubW92ZVN5bmNpbmcoKSB8fFxuICAgICAgdGhpcy5tb3ZpbmdQaWVjZSgpXG4gICAgKSB7XG4gICAgICB0aGlzLmNsZWFyVHVyblRpbWVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gYCR7Z2FtZS5pZH06JHtnYW1lLmN1cnJlbnRUdXJufToke2dhbWUubW92ZUNvdW50fToke2R1cmF0aW9ufWA7XG4gICAgaWYgKHRoaXMudHVyblRpbWVyS2V5ID09PSBrZXkgJiYgdGhpcy50dXJuVGltZXJJbnRlcnZhbCkgcmV0dXJuO1xuXG4gICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgIHRoaXMudHVyblRpbWVyS2V5ID0ga2V5O1xuICAgIHRoaXMudHVyblRpbWVyRHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgICB0aGlzLnR1cm5UaW1lckRlYWRsaW5lID0gRGF0ZS5ub3coKSArIGR1cmF0aW9uICogMTAwMDtcbiAgICB0aGlzLnR1cm5TZWNvbmRzUmVtYWluaW5nLnNldChkdXJhdGlvbik7XG4gICAgdGhpcy50dXJuVGltZXJJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHRoaXMudGlja1R1cm5UaW1lcigpLCAyNTApO1xuICB9XG5cbiAgcHJpdmF0ZSB0aWNrVHVyblRpbWVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlbWFpbmluZyA9IE1hdGgubWF4KDAsIE1hdGguY2VpbCgodGhpcy50dXJuVGltZXJEZWFkbGluZSAtIERhdGUubm93KCkpIC8gMTAwMCkpO1xuICAgIHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcuc2V0KHJlbWFpbmluZyk7XG4gICAgaWYgKHJlbWFpbmluZyA+IDApIHJldHVybjtcblxuICAgIGNvbnN0IGV4cGlyZWRLZXkgPSB0aGlzLnR1cm5UaW1lcktleTtcbiAgICB0aGlzLmNsZWFyVHVyblRpbWVyKCk7XG4gICAgaWYgKCFleHBpcmVkS2V5IHx8IHRoaXMudHVyblRpbWVyRXhwaXJlZEtleSA9PT0gZXhwaXJlZEtleSkgcmV0dXJuO1xuICAgIHRoaXMudHVyblRpbWVyRXhwaXJlZEtleSA9IGV4cGlyZWRLZXk7XG4gICAgdGhpcy5oYW5kbGVUdXJuVGltZXJFeHBpcmVkKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVHVyblRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR1cm5UaW1lckludGVydmFsKSBjbGVhckludGVydmFsKHRoaXMudHVyblRpbWVySW50ZXJ2YWwpO1xuICAgIHRoaXMudHVyblRpbWVySW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50dXJuVGltZXJLZXkgPSAnJztcbiAgICB0aGlzLnR1cm5UaW1lckRlYWRsaW5lID0gMDtcbiAgICB0aGlzLnR1cm5UaW1lckR1cmF0aW9uID0gMDtcbiAgICB0aGlzLnR1cm5TZWNvbmRzUmVtYWluaW5nLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0dXJuVGltZXJEdXJhdGlvblNlY29uZHMoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy50dXRvcmlhbE1vZGUoKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpICYmIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICByZXR1cm4gZ2FtZS5ib2FyZFNpemUgPT09IDggPyBDSEVTU0lNQUxTX0NIQUxMRU5HRV9GSU5BTF9UVVJOX1NFQ09ORFMgOiBDSEVTU0lNQUxTX0NIQUxMRU5HRV9UVVJOX1NFQ09ORFM7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gQ0hFU1NJTUFMU19PTkxJTkVfVFVSTl9TRUNPTkRTO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVR1cm5UaW1lckV4cGlyZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fFxuICAgICAgdGhpcy5ib3RUaGlua2luZygpIHx8XG4gICAgICB0aGlzLm1vdmVTeW5jaW5nKCkgfHxcbiAgICAgIHRoaXMubW92aW5nUGllY2UoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmUgPSB0aGlzLmNob29zZUF1dG9tYXRpY1R1cm5Nb3ZlKGdhbWUpO1xuICAgIGlmICghbW92ZSkge1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzVHVyblRpbWVyTm9Nb3ZlJyksXG4gICAgICAgIGNvbG9yOiAnd2FybmluZycsXG4gICAgICAgIGR1cmF0aW9uOiAyMjAwLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVzaWduR2FtZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzVHVyblRpbWVyQXV0b01vdmUnKSxcbiAgICAgIGNvbG9yOiAnd2FybmluZycsXG4gICAgICBkdXJhdGlvbjogMjIwMCxcbiAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICB9KTtcbiAgICB0aGlzLmNvbW1pdENoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaG9vc2VBdXRvbWF0aWNUdXJuTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc01vdmUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1vdmVzID0gZ2FtZS5waWVjZXNcbiAgICAgIC5maWx0ZXIoKHBpZWNlKSA9PiBwaWVjZS5jb2xvciA9PT0gZ2FtZS5jdXJyZW50VHVybiAmJiAhcGllY2UuY2FwdHVyZWQpXG4gICAgICAuZmxhdE1hcCgocGllY2UpID0+IGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKGdhbWUsIHBpZWNlLmlkKSk7XG4gICAgY29uc3QgYmFzaWNNb3ZlcyA9IG1vdmVzLmZpbHRlcigobW92ZSkgPT4gbW92ZS5raW5kID09PSAnYmFzaWMnKTtcbiAgICByZXR1cm4gYmFzaWNNb3Zlcy5maW5kKChtb3ZlKSA9PiB0aGlzLmlzUHJvbW90aW9uTW92ZShnYW1lLCBtb3ZlKSlcbiAgICAgID8/IGJhc2ljTW92ZXMuZmluZCgobW92ZSkgPT4gISFtb3ZlLmNhcHR1cmVzUGllY2VJZClcbiAgICAgID8/IGJhc2ljTW92ZXNbMF1cbiAgICAgID8/IG1vdmVzLmZpbmQoKG1vdmUpID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpXG4gICAgICA/PyBtb3Zlc1swXTtcbiAgfVxuXG4gIHByaXZhdGUgaXNQcm9tb3Rpb25Nb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBtb3ZlLnRvLnJvdyA9PT0gKGdhbWUuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAwIDogZ2FtZS5ib2FyZFNpemUgLSAxKTtcbiAgfVxuXG4gIHByaXZhdGUgYW5pbWF0ZU1vdmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgbW92ZTogQ2hlc3NpbWFsc01vdmUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgdGhpcy5xdWV1ZU1vdmVFZmZlY3QobW92ZSk7XG5cbiAgICBjb25zdCBtb3ZpbmdQaWVjZSA9IGdhbWUucGllY2VzLmZpbmQoKHBpZWNlKSA9PiBwaWVjZS5pZCA9PT0gbW92ZS5waWVjZUlkKTtcbiAgICBpZiAoIW1vdmluZ1BpZWNlKSB7XG4gICAgICB0aGlzLmFwcGx5QW5pbWF0ZWRNb3ZlKGdhbWUsIHVwZGF0ZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHtcbiAgICAgIGNvbG9yOiBtb3ZpbmdQaWVjZS5jb2xvcixcbiAgICAgIGZyb21Sb3c6IHRoaXMuZGlzcGxheVJvd0luZGV4KG1vdmUuZnJvbS5yb3cpLFxuICAgICAgZnJvbUNvbDogdGhpcy5kaXNwbGF5Q29sSW5kZXgobW92ZS5mcm9tLmNvbCksXG4gICAgICB0b1JvdzogdGhpcy5kaXNwbGF5Um93SW5kZXgobW92ZS50by5yb3cpLFxuICAgICAgdG9Db2w6IHRoaXMuZGlzcGxheUNvbEluZGV4KG1vdmUudG8uY29sKSxcbiAgICB9KTtcblxuICAgIHRoaXMubW92ZUFuaW1hdGlvblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFwcGx5QW5pbWF0ZWRNb3ZlKGdhbWUsIHVwZGF0ZWQpO1xuICAgIH0sIENIRVNTSU1BTFNfTU9WRV9BTklNQVRJT05fTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUFuaW1hdGVkTW92ZShwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5nYW1lLnNldCh1cGRhdGVkKTtcbiAgICB0aGlzLnBlcnNpc3RBY3RpdmVDaGFsbGVuZ2VHYW1lKHVwZGF0ZWQpO1xuICAgIHRoaXMucXVldWVTY29yZVBvcChwcmV2aW91cywgdXBkYXRlZCk7XG4gICAgdGhpcy5wbGF5UG93ZXJVbmxvY2tTb3VuZChwcmV2aW91cywgdXBkYXRlZCk7XG4gICAgaWYgKFxuICAgICAgdXBkYXRlZC5jdXJyZW50VHVybiAhPT0gcHJldmlvdXMuY3VycmVudFR1cm4gJiZcbiAgICAgIHVwZGF0ZWQuc3RhdHVzICE9PSAnZmluaXNoZWQnICYmXG4gICAgICAhdGhpcy5zaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYyh1cGRhdGVkKVxuICAgICkge1xuICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgICBpZiAodXBkYXRlZC5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgIHRoaXMuc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk7XG4gICAgICB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHVwZGF0ZWQpO1xuICAgIH1cbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2ZUdhbWVGb3JSdW4ocnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbTWF0aC5tYXgoMCwgcnVuLmN1cnJlbnRSb3VuZCAtIDEpXTtcbiAgICBjb25zdCBnYW1lID0gcnVuLmFjdGl2ZUdhbWU7XG4gICAgaWYgKCFib3QgfHwgIWdhbWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLmJvYXJkU2l6ZSAhPT0gYm90LmJvYXJkU2l6ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5jbG9uZUNoYWxsZW5nZUdhbWUoZ2FtZSk7XG4gIH1cblxuICBwcml2YXRlIHBlcnNpc3RBY3RpdmVDaGFsbGVuZ2VHYW1lKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuIHx8IHJ1bi5zdGF0dXMgIT09ICdhY3RpdmUnIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSAhPT0gJ3BsYXlpbmcnKSByZXR1cm47XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm47XG4gICAgY29uc3QgbmV4dFJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biA9IHtcbiAgICAgIC4uLnJ1bixcbiAgICAgIGFjdGl2ZUdhbWU6IHRoaXMuY2xvbmVDaGFsbGVuZ2VHYW1lKGdhbWUpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQobmV4dFJ1bik7XG4gICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLnNhdmVSdW4obmV4dFJ1bikuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjaGFsbGVuZ2Ugc25hcHNob3Qgc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsb25lQ2hhbGxlbmdlR2FtZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoeyAuLi5nYW1lLCBvbmxpbmU6IHVuZGVmaW5lZCB9KSkgYXMgQ2hlc3NpbWFsc0dhbWVTdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheVBvd2VyVW5sb2NrU291bmQocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCB3aGl0ZVVubG9ja2VkID0gIXByZXZpb3VzLnBsYXllcnMud2hpdGUucG93ZXJVbmxvY2tlZCAmJiB1cGRhdGVkLnBsYXllcnMud2hpdGUucG93ZXJVbmxvY2tlZDtcbiAgICBjb25zdCBibGFja1VubG9ja2VkID0gIXByZXZpb3VzLnBsYXllcnMuYmxhY2sucG93ZXJVbmxvY2tlZCAmJiB1cGRhdGVkLnBsYXllcnMuYmxhY2sucG93ZXJVbmxvY2tlZDtcbiAgICBpZiAod2hpdGVVbmxvY2tlZCB8fCBibGFja1VubG9ja2VkKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNQb3dlclVubG9ja2VkKCk7XG4gICAgICB0aGlzLnBvd2VyVW5sb2NrUHVsc2Uuc2V0KGZhbHNlKTtcbiAgICAgIGNvbnN0IHN0YXJ0UHVsc2UgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMucG93ZXJVbmxvY2tQdWxzZS5zZXQodHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLnBvd2VyVW5sb2NrVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnBvd2VyVW5sb2NrVGltZXIpO1xuICAgICAgICB0aGlzLnBvd2VyVW5sb2NrVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucG93ZXJVbmxvY2tQdWxzZS5zZXQoZmFsc2UpLCAxMzUwKTtcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RhcnRQdWxzZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN0YXJ0UHVsc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlQm90VHVybklmTmVlZGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNjcmVlbigpICE9PSAnZ2FtZScgfHxcbiAgICAgIGdhbWUubW9kZSAhPT0gJ2xvY2FsJyB8fFxuICAgICAgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpICE9PSAnYm90JyB8fFxuICAgICAgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgIGdhbWUuY3VycmVudFR1cm4gIT09IENIRVNTSU1BTFNfQk9UX0NPTE9SXG4gICAgKSB7XG4gICAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJvdFR1cm5UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm90VHVyblRpbWVyKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuYm90VHVyblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnBsYXlCb3RUdXJuKCksIENIRVNTSU1BTFNfQk9UX1RISU5LSU5HX01TKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheUJvdFR1cm4oKTogdm9pZCB7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIGdhbWUubW9kZSAhPT0gJ2xvY2FsJyB8fFxuICAgICAgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpICE9PSAnYm90JyB8fFxuICAgICAgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgIGdhbWUuY3VycmVudFR1cm4gIT09IENIRVNTSU1BTFNfQk9UX0NPTE9SXG4gICAgKSB7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZSA9IGNob29zZUNoZXNzaW1hbHNCb3RNb3ZlKGdhbWUsIHRoaXMuc2VsZWN0ZWRCb3REaWZmaWN1bHR5KCksIHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQoKSk7XG4gICAgaWYgKCFtb3ZlKSB7XG4gICAgICB0aGlzLmdhbWUuc2V0KHJlc2lnbkNoZXNzaW1hbHNHYW1lKGdhbWUsIENIRVNTSU1BTFNfQk9UX0NPTE9SKSk7XG4gICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIGlmIChtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUsIHRydWUpO1xuICAgICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHVwZGF0ZWQpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlLCB0cnVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJCb3RUdXJuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJvdFR1cm5UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm90VHVyblRpbWVyKTtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJCb2FyZE9yaWVudGF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcik7XG4gICAgdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldChmYWxzZSk7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldChmYWxzZSksIDM0MCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUgPSB0aGlzLmdhbWUoKSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnR1dG9yaWFsTW9kZSgpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0JvYXJkU29vbigpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmJvYXJkQW5jaG9yPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgICAgIH0sIDgwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnNjcmVlbigpID09PSAnZ2FtZScpIHJldHVybjtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnNjcmVlbigpID09PSAnZ2FtZScpIHJldHVybjtcbiAgICAgIHZvaWQgdGhpcy5hdWRpby5zdGFydENoZXNzaW1hbHNNZW51TXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykgcmV0dXJuO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykgcmV0dXJuO1xuICAgICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcmVlbigpICE9PSAnZ2FtZScpIHtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zY3JlZW4oKSA9PT0gJ2dhbWUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwbGF5TW92ZVNvdW5kKG1vdmU6IENoZXNzaW1hbHNNb3ZlLCBpc0JvdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKG1vdmUuYW5pbWFsKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNQb3dlcihtb3ZlLmFuaW1hbCk7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdWRpby5jaGVzc2ltYWxzQ2FwdHVyZSgpLCAxNTApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc0NhcHR1cmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzQm90KSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNCb3RNb3ZlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc01vdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHRoaXMuZ2FtZSgpKTogdm9pZCB7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gYCR7Z2FtZS5pZH06JHtnYW1lLnN0YXR1c306JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfToke2dhbWUubW92ZUNvdW50fWA7XG4gICAgaWYgKHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0ga2V5O1xuICAgIGNvbnN0IHdpbm5lciA9IGdhbWUud2lubmVyO1xuICAgIGNvbnN0IHNpZGUgPSB0aGlzLmN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lKTtcbiAgICBpZiAoIXdpbm5lciB8fCAhc2lkZSB8fCB3aW5uZXIgPT09IHNpZGUpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1ZpY3RvcnkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzRGVmZWF0KCk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB0aGlzLm9ubGluZVVpZCgpID8/IHRoaXMub25saW5lLmN1cnJlbnRVaWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUud2lubmVyUmVhc29uID09PSAncmVzaWduYXRpb24nID8gZ2FtZS5jdXJyZW50VHVybiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJSZXZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5yZXZpZXdJbmRleC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLmdhbWUoKS5tb3ZlSGlzdG9yeSA/PyBbXTtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldChlbnRyaWVzLmxlbmd0aCA+IDEgPyBlbnRyaWVzLmxlbmd0aCAtIDEgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZU1vdmVFZmZlY3QobW92ZTogQ2hlc3NpbWFsc01vdmUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcik7XG5cbiAgICBpZiAoIW1vdmUuYW5pbWFsICYmICFtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBkZWxheU1zID0gTWF0aC5tYXgoMCwgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyAtIDkwKTtcbiAgICB0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHtcbiAgICAgICAgYW5pbWFsOiBtb3ZlLmFuaW1hbCxcbiAgICAgICAgZnJvbTogeyAuLi5tb3ZlLmZyb20gfSxcbiAgICAgICAgdG86IHsgLi4ubW92ZS50byB9LFxuICAgICAgICBjYXB0dXJlOiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCksIDk1MCk7XG4gICAgfSwgZGVsYXlNcyk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlU2NvcmVQb3AocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZVBvcENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcik7XG4gICAgY29uc3QgZW50cnkgPSB1cGRhdGVkLm1vdmVIaXN0b3J5Py5bdXBkYXRlZC5tb3ZlSGlzdG9yeS5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBtb3ZlID0gZW50cnk/Lm1vdmU7XG4gICAgaWYgKCFlbnRyeSB8fCAhbW92ZSB8fCBwcmV2aW91cy5tb3ZlQ291bnQgPT09IHVwZGF0ZWQubW92ZUNvdW50KSB7XG4gICAgICB0aGlzLnNjb3JlUG9wLnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzQ29tYm8gPSB0aGlzLmNhcHR1cmVDb21ib0JlZm9yZU1vdmUocHJldmlvdXMsIG1vdmUucGllY2VJZCk7XG4gICAgY29uc3QgbW92ZUNvbG9yID0gdGhpcy5jb2xvckZyb21QaWVjZUlkKG1vdmUucGllY2VJZCk7XG4gICAgY29uc3QgcHJvbW90aW9uID0gZW50cnkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIGVudHJ5Lndpbm5lclJlYXNvbiA9PT0gJ3Byb21vdGlvbicgJiYgZW50cnkud2lubmVyID09PSBtb3ZlQ29sb3I7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLnNjb3JlQ2hlc3NpbWFsc01vdmUobW92ZSwgcHJvbW90aW9uLCBwcmV2aW91c0NvbWJvKTtcbiAgICBpZiAoc2NvcmUuc2NvcmUgPD0gMSkge1xuICAgICAgdGhpcy5zY29yZVBvcC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2wgPSB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLnRvLmNvbCkgKyAwLjU7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgobW92ZS50by5yb3cpICsgMC41O1xuICAgIHRoaXMuc2NvcmVQb3Auc2V0KHtcbiAgICAgIC4uLnNjb3JlLFxuICAgICAgeDogYCR7KGNvbCAvIHVwZGF0ZWQuYm9hcmRTaXplKSAqIDEwMH0lYCxcbiAgICAgIHk6IGAkeyhyb3cgLyB1cGRhdGVkLmJvYXJkU2l6ZSkgKiAxMDB9JWAsXG4gICAgfSk7XG4gICAgdGhpcy5zY29yZVBvcENsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2NvcmVQb3Auc2V0KHVuZGVmaW5lZCksIDExNTApO1xuICB9XG5cbiAgcHJpdmF0ZSBjYXB0dXJlQ29tYm9CZWZvcmVNb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBpZWNlSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLmNvbG9yRnJvbVBpZWNlSWQocGllY2VJZCk7XG4gICAgaWYgKCFjb2xvcikgcmV0dXJuIDA7XG4gICAgbGV0IGNvbWJvID0gMDtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlIHx8IHRoaXMuY29sb3JGcm9tUGllY2VJZChtb3ZlLnBpZWNlSWQpICE9PSBjb2xvcikgY29udGludWU7XG4gICAgICBjb21ibyA9IG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gY29tYm8gKyAxIDogMDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbWJvO1xuICB9XG5cbiAgdG9nZ2xlQW5pbWFsKGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFZpZXcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCAhdGhpcy5jYW5Vc2VQb3dlckNhcmRzKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5pc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbC50eXBlKSkgcmV0dXJuO1xuICAgIGNvbnN0IHBsYXllciA9IHRoaXMucG93ZXJQbGF5ZXIoKTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkIHx8IHBsYXllci5jYXJkc1thbmltYWwudHlwZV0udXNlZCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNlbGVjdGVkQW5pbWFsKCk7XG4gICAgY29uc3QgbmV4dCA9IGN1cnJlbnQgPT09IGFuaW1hbC50eXBlID8gdW5kZWZpbmVkIDogYW5pbWFsLnR5cGU7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQobmV4dCk7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUGllY2VJZCgpKSB7XG4gICAgICBjb25zdCBmaXJzdFBpZWNlID0gdGhpcy5nYW1lKCkucGllY2VzLmZpbmQoXG4gICAgICAgIChwaWVjZSkgPT4gIXBpZWNlLmNhcHR1cmVkICYmIHBpZWNlLmNvbG9yID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybixcbiAgICAgICk7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQoZmlyc3RQaWVjZT8uaWQpO1xuICAgIH1cbiAgICBpZiAobmV4dCkgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXJQcmV2aWV3KGFuaW1hbC50eXBlKTtcbiAgfVxuXG4gIHBpZWNlQXQocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogQ2hlc3NpbWFsc1BpZWNlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQodGhpcy5yZXZpZXdHYW1lKCksIHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc0RhcmtDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAocm93ICsgY29sKSAlIDIgPT09IDE7XG4gIH1cblxuICBpc0VkZ2VDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhc3QgPSB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSAxO1xuICAgIHJldHVybiByb3cgPT09IDAgfHwgY29sID09PSAwIHx8IHJvdyA9PT0gbGFzdCB8fCBjb2wgPT09IGxhc3Q7XG4gIH1cblxuICBjZWxsV2Vhcihyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmFicygocm93ICogMTcgKyBjb2wgKiAzMSArIHJvdyAqIGNvbCAqIDcpICUgNik7XG4gIH1cblxuICBpc1NlbGVjdGVkQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBwaWVjZSA9IHRoaXMucGllY2VBdChyb3csIGNvbCk7XG4gICAgcmV0dXJuICEhcGllY2UgJiYgcGllY2UuaWQgPT09IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gIH1cblxuICBpc0xlZ2FsQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sZWdhbE1vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNDYXB0dXJlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXB0dXJlTW92ZUtleXMoKS5oYXMocG9zaXRpb25LZXkoeyByb3csIGNvbCB9KSk7XG4gIH1cblxuICBpc1RocmVhdGVuZWRDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBpZWNlID0gdGhpcy5waWVjZUF0KHJvdywgY29sKTtcbiAgICByZXR1cm4gISFwaWVjZSAmJiB0aGlzLnRocmVhdGVuZWRQaWVjZUlkcygpLmhhcyhwaWVjZS5pZCk7XG4gIH1cblxuICBpc0NhcHR1cmVSZWFkeUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGllY2UgPSB0aGlzLnBpZWNlQXQocm93LCBjb2wpO1xuICAgIHJldHVybiAhIXBpZWNlICYmIHBpZWNlLmNvbG9yID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybiAmJiB0aGlzLmNhcHR1cmVSZWFkeVBpZWNlSWRzKCkuaGFzKHBpZWNlLmlkKTtcbiAgfVxuXG4gIGlzV2lubmluZ0NlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMud2lubmluZ01vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNMYXN0TW92ZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFzdE1vdmUgPSB0aGlzLnJldmlld0dhbWUoKS5sYXN0TW92ZTtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWRQaWVjZUlkKCkgJiYgISFsYXN0TW92ZSAmJiBwb3NpdGlvbktleShsYXN0TW92ZS50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc01vdmluZ1NvdXJjZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbW92aW5nID0gdGhpcy5tb3ZpbmdQaWVjZSgpO1xuICAgIGlmICghbW92aW5nKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheVJvd0luZGV4KHJvdykgPT09IG1vdmluZy5mcm9tUm93ICYmIHRoaXMuZGlzcGxheUNvbEluZGV4KGNvbCkgPT09IG1vdmluZy5mcm9tQ29sO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0Q2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIsIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgaWYgKCFlZmZlY3QpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYW5pbWFsICYmIGVmZmVjdC5hbmltYWwgIT09IGFuaW1hbCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBwb3NpdGlvbktleShlZmZlY3QudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0U291cmNlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICByZXR1cm4gISFlZmZlY3QgJiYgcG9zaXRpb25LZXkoZWZmZWN0LmZyb20pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0Q2FwdHVyZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgcmV0dXJuICEhZWZmZWN0Py5jYXB0dXJlICYmIHBvc2l0aW9uS2V5KGVmZmVjdC50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBmaWxlTGFiZWwoY29sOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgY29sKTtcbiAgfVxuXG4gIHJhbmtMYWJlbChyb3c6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIHJvd31gO1xuICB9XG5cbiAgc2hvd1JhbmtMYWJlbChjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2wgPT09IHRoaXMuZGlzcGxheUNvbHMoKVswXTtcbiAgfVxuXG4gIHNob3dGaWxlTGFiZWwocm93OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5kaXNwbGF5Um93cygpO1xuICAgIHJldHVybiByb3cgPT09IHJvd3Nbcm93cy5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIHBsYXllckxhYmVsKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHRoaXMudCgnY2hlc3NpbWFsc1doaXRlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCbGFjaycpO1xuICB9XG5cbiAgY2FwdHVyZXNTY29yZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLmNhcHR1cmVzQnlDb2xvcigpO1xuICAgIHJldHVybiBgJHtzY29yZS53aGl0ZX0tJHtzY29yZS5ibGFja31gO1xuICB9XG5cbiAgdHVyblRpbWVyTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIHJldHVybiBzZWNvbmRzID09PSB1bmRlZmluZWQgPyAnLScgOiBgJHtzZWNvbmRzfXNgO1xuICB9XG5cbiAgc2NvcmVDb21ib0xhYmVsKGNvbWJvOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNTY29yZUNvbWJvJykucmVwbGFjZSgne2NvbWJvfScsIFN0cmluZyhjb21ibykpO1xuICB9XG5cbiAgdHVyblRpbWVyUHJvZ3Jlc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy50dXJuVGltZXJEdXJhdGlvbjtcbiAgICBpZiAoc2Vjb25kcyA9PT0gdW5kZWZpbmVkIHx8IGR1cmF0aW9uIDw9IDApIHJldHVybiAnMSc7XG4gICAgcmV0dXJuIFN0cmluZyhNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBzZWNvbmRzIC8gZHVyYXRpb24pKSk7XG4gIH1cblxuICBpc1R1cm5UaW1lckxvdygpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIHJldHVybiBzZWNvbmRzICE9PSB1bmRlZmluZWQgJiYgc2Vjb25kcyA8PSA1O1xuICB9XG5cbiAgdHVyblN0YXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzRmluaXNoZWRDaGlwJyk7XG4gICAgaWYgKHRoaXMuaXNBY3Rpb25hYmxlVHVybigpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm4nKTtcbiAgICBpZiAodGhpcy5ib3RUaGlua2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdUaXRsZScpO1xuICAgIGlmICh0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy5pc1dhaXRpbmdGb3JUdXJuKCkgPyB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nVHVybkxhYmVsJykgOiB0aGlzLm1vZGVDaGlwTGFiZWwoKTtcbiAgfVxuXG4gIHR1cm5TdGF0ZUJvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy53aW5Cb2R5KCk7XG4gICAgaWYgKHRoaXMuaXNBY3Rpb25hYmxlVHVybigpKSB7XG4gICAgICBpZiAodGhpcy5pc1R1cm5UaW1lckxvdygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHVyblRpbWVyTG93Qm9keScpO1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgJiYgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ2xvY2FsJ1xuICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdFlvdXJUdXJuQm9keScpXG4gICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm5Cb2R5Jyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmJvdFRoaW5raW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ0JvZHknKTtcbiAgICBpZiAodGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1R1cm4nKTtcbiAgfVxuXG4gIHdpbm5lckRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgd2lubmVyID0gdGhpcy5nYW1lKCkud2lubmVyID8/ICd3aGl0ZSc7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyRGlzcGxheU5hbWUod2lubmVyKTtcbiAgfVxuXG4gIHdpbm5lclNpZGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLndpbm5lciA/PyAnd2hpdGUnKTtcbiAgfVxuXG4gIHdpbm5lckluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMud2lubmVyRGlzcGxheU5hbWUoKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKVxuICAgICAgLmpvaW4oJycpO1xuICAgIHJldHVybiBpbml0aWFscyB8fCB0aGlzLndpbm5lclNpZGVMYWJlbCgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgd2lubmVyQXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHdpbm5lciA9IGdhbWUud2lubmVyO1xuICAgIGlmICghd2lubmVyIHx8IGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiAnJztcbiAgICByZXR1cm4gZ2FtZS5vbmxpbmU/LnBhcnRpY2lwYW50cz8uW3dpbm5lcl0/LmF2YXRhclVybD8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgaXNDdXJyZW50UGxheWVyVmljdG9yeSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8ICFnYW1lLndpbm5lcikgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lKSA9PT0gZ2FtZS53aW5uZXI7XG4gIH1cblxuICBpc0N1cnJlbnRQbGF5ZXJEZWZlYXQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCAhZ2FtZS53aW5uZXIpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBzaWRlID0gdGhpcy5jdXJyZW50UGxheWVyU2lkZUZvck91dGNvbWUoZ2FtZSk7XG4gICAgcmV0dXJuICEhc2lkZSAmJiBzaWRlICE9PSBnYW1lLndpbm5lcjtcbiAgfVxuXG4gIHByaXZhdGUgcGxheWVyRGlzcGxheU5hbWUoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudCA9IGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/Lltjb2xvcl07XG4gICAgICBjb25zdCBuYW1lID0gcGFydGljaXBhbnQ/Lm5hbWU/LnRyaW0oKTtcbiAgICAgIGlmIChuYW1lKSByZXR1cm4gbmFtZTtcbiAgICAgIGNvbnN0IGhhbmRsZSA9IHBhcnRpY2lwYW50Py5oYW5kbGU/LnRyaW0oKTtcbiAgICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGU7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90Jykge1xuICAgICAgcmV0dXJuIGNvbG9yID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUiA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKSA6IHRoaXMubG9nZ2VkUGxheWVyTmFtZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wbGF5ZXJMYWJlbChjb2xvcik7XG4gIH1cblxuICBwcml2YXRlIHJlbWF0Y2hPcHBvbmVudCgpOiBDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScgfHwgKHJvbGUgIT09ICd3aGl0ZScgJiYgcm9sZSAhPT0gJ2JsYWNrJykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3Bwb25lbnRTaWRlOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSByb2xlID09PSAnd2hpdGUnID8gJ2JsYWNrJyA6ICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/LltvcHBvbmVudFNpZGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50T3Bwb25lbnRVaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8udWlkID8/ICcnO1xuICB9XG5cbiAgbW9kZUNoaXBMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2UnKTtcbiAgICB9XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmIChyb2xlID09PSAnd2FpdGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVXYWl0aW5nJyk7XG4gICAgaWYgKHJvbGUgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBlbmRpbmcnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNTcGVjdGF0b3InKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGxheWVyJyk7XG4gIH1cblxuICB0dXJuVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnICYmIGdhbWUuY3VycmVudFR1cm4gPT09IENIRVNTSU1BTFNfQk9UX0NPTE9SKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ1RpdGxlJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50VHVyblRpdGxlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9ubGluZVJvbGUoKSA9PT0gZ2FtZS5jdXJyZW50VHVybikgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0N1cnJlbnRUdXJuJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKGdhbWUuY3VycmVudFR1cm4pKTtcbiAgfVxuXG4gIG5vcm1hbGl6ZUdhbWVJZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKHZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIGNvcHlPbmxpbmVMaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkLCB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZD8ud3JpdGVUZXh0KHVybCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNMaW5rQ29waWVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNoYXJlT25saW5lTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLm9ubGluZS5zaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgaWYgKG5hdmlnYXRvci5zaGFyZSkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHsgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1RpdGxlJyksIHRleHQ6IHRoaXMudCgnY2hlc3NpbWFsc1NoYXJlVGV4dCcpLCB1cmwgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY29weU9ubGluZUxpbmsoKTtcbiAgfVxuXG4gIGFzeW5jIHNoYXJlUHJvamVjdGlvbkxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUucHJvamVjdGlvblNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkLCB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKTtcbiAgICBpZiAobmF2aWdhdG9yLnNoYXJlKSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoe1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzUHJvamVjdGlvblRpdGxlJyksXG4gICAgICAgIHRleHQ6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25TaGFyZVRleHQnKSxcbiAgICAgICAgdXJsLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkPy53cml0ZVRleHQodXJsKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25MaW5rQ29waWVkJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAyMjAwLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIHJldHVybiAhIXVpZFxuICAgICAgJiYgZ2FtZS5tb2RlID09PSAnb25saW5lJ1xuICAgICAgJiYgdGhpcy5vbmxpbmUuaXNIb3N0V2FpdGluZyhnYW1lLCB1aWQpXG4gICAgICAmJiAhIWdhbWUub25saW5lLnBlbmRpbmdHdWVzdDtcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q/Lm5hbWUgPz8gdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0SGFuZGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5oYW5kbGUgPz8gJyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RBdmF0YXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q/LmF2YXRhclVybCA/PyAnJztcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ3Vlc3QgPSB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdDtcbiAgICBjb25zdCBuYW1lID0gKGd1ZXN0Py5uYW1lIHx8IGd1ZXN0Py5oYW5kbGUgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKVxuICAgICAgLmpvaW4oJycpO1xuICAgIHJldHVybiBpbml0aWFscyB8fCAnPyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RBdmF0YXJQcm9wcygpOiBVc2VyQXZhdGFyTWV0YWRhdGEge1xuICAgIGNvbnN0IGd1ZXN0ID0gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogZ3Vlc3Q/Lm5hbWUsXG4gICAgICAgIGhhbmRsZTogZ3Vlc3Q/LmhhbmRsZSxcbiAgICAgICAgYXZhdGFyVXJsOiBndWVzdD8uYXZhdGFyVXJsLFxuICAgICAgfSxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlbWF0Y2hPcHBvbmVudCgpPy5uYW1lPy50cmltKCkgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50SGFuZGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LmhhbmRsZT8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50QXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LmF2YXRhclVybD8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50SW5pdGlhbHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHBvbmVudCA9IHRoaXMucmVtYXRjaE9wcG9uZW50KCk7XG4gICAgY29uc3QgbmFtZSA9IChvcHBvbmVudD8ubmFtZSB8fCBvcHBvbmVudD8uaGFuZGxlIHx8IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSkudHJpbSgpO1xuICAgIGNvbnN0IGluaXRpYWxzID0gbmFtZVxuICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5zbGljZSgwLCAyKVxuICAgICAgLm1hcCgocGFydCkgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gaW5pdGlhbHMgfHwgJz8nO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50QXZhdGFyUHJvcHMoKTogVXNlckF2YXRhck1ldGFkYXRhIHtcbiAgICBjb25zdCBvcHBvbmVudCA9IHRoaXMucmVtYXRjaE9wcG9uZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogb3Bwb25lbnQ/Lm5hbWUsXG4gICAgICAgIGhhbmRsZTogb3Bwb25lbnQ/LmhhbmRsZSxcbiAgICAgICAgYXZhdGFyVXJsOiBvcHBvbmVudD8uYXZhdGFyVXJsLFxuICAgICAgfSxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgd2FpdGluZ1RpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdFRpdGxlJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUaXRsZScpO1xuICB9XG5cbiAgd2FpdGluZ0JvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0Qm9keScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wZW5kaW5nR3Vlc3ROYW1lKCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0xvYmJ5R3Vlc3RXYWl0aW5nQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nQm9keScpO1xuICB9XG5cbiAgYXN5bmMgYWNjZXB0T25saW5lR3Vlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSByZXR1cm47XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdhY2NlcHQnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5hY2NlcHRHdWVzdCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNHdWVzdEFjY2VwdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gYWNjZXB0IGd1ZXN0IGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlamVjdE9ubGluZUd1ZXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkgcmV0dXJuO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgncmVqZWN0Jyk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUucmVqZWN0R3Vlc3QodGhpcy5nYW1lKCkuaWQpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzR3Vlc3RSZWplY3RlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy53YXJuaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIHJlamVjdCBndWVzdCBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvcGVuSGlzdG9yeUdhbWUoZW50cnk6IENoZXNzaW1hbHNIaXN0b3J5RW50cnkpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZW50cnkuZ2FtZUlkKSk7XG4gIH1cblxuICBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5OiBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBvdXRjb21lS2V5ID0gYGNoZXNzaW1hbHNIaXN0b3J5JHtlbnRyeS5vdXRjb21lXG4gICAgICAuc3BsaXQoJ18nKVxuICAgICAgLm1hcCgocGFydCkgPT4gdGhpcy5jYXBpdGFsaXplKHBhcnQpKVxuICAgICAgLmpvaW4oJycpfWA7XG4gICAgY29uc3Qgb3Bwb25lbnQgPSBlbnRyeS5vcHBvbmVudE5hbWVcbiAgICAgID8gYCDCtyAke3RoaXMudCgnY2hlc3NpbWFsc0hpc3RvcnlBZ2FpbnN0JykucmVwbGFjZSgne3BsYXllcn0nLCBlbnRyeS5vcHBvbmVudE5hbWUpfWBcbiAgICAgIDogJyc7XG4gICAgcmV0dXJuIGAke3RoaXMudChvdXRjb21lS2V5KX0ke29wcG9uZW50fWA7XG4gIH1cblxuICBhc3luYyByZXF1ZXN0T25saW5lUmVtYXRjaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkubW9kZSAhPT0gJ29ubGluZScpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5yZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgdGhpcy5yZW1hdGNoTG9hZGluZygpKSByZXR1cm47XG4gICAgY29uc3QgYWNjZXB0aW5nID0gdGhpcy5yZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJztcbiAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV4dCA9IGF3YWl0IHRoaXMub25saW5lLnJlcXVlc3RSZW1hdGNoKHRoaXMuZ2FtZSgpLmlkKTtcbiAgICAgIGlmIChuZXh0Py5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycpIHtcbiAgICAgICAgdGhpcy5hcHBseU9ubGluZUdhbWVTbmFwc2hvdCh0aGlzLmdhbWUoKSwgbmV4dCk7XG4gICAgICB9XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoYWNjZXB0aW5nID8gJ2NoZXNzaW1hbHNSZW1hdGNoQWNjZXB0ZWQnIDogJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkVG9hc3QnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDI0MDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUhpc3RvcnlXYXRjaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpO1xuICAgIHRoaXMuaGlzdG9yeVdhdGNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMud2F0Y2hPbmxpbmVIaXN0b3J5KCksIDIyMCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoT25saW5lSGlzdG9yeSgpOiB2b2lkIHtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZS5jdXJyZW50VWlkO1xuICAgIGlmICghdWlkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaGlzdG9yeVVpZCA9PT0gdWlkICYmIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbikgcmV0dXJuO1xuICAgIHRoaXMuaGlzdG9yeVVpZCA9IHVpZDtcbiAgICB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uID0gdGhpcy5vbmxpbmUud2F0Y2hIaXN0b3J5KDI0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGhpc3RvcnkpID0+IHRoaXMub25saW5lSGlzdG9yeS5zZXQoaGlzdG9yeSksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5vbmxpbmVIaXN0b3J5LnNldChbXSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoQ2hhbGxlbmdlU3RhdHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlU3RhdHNTdWJzY3JpcHRpb24pIHJldHVybjtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uID0gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy53YXRjaFN0YXRzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0cykgPT4gdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQoc3RhdHMgPz8gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuY2hhbGxlbmdlU3RhdHMuc2V0KHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MuZW1wdHlTdGF0cygpKSxcbiAgICB9KTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoUmVjZW50UnVucyg0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJ1bnMpID0+IHRoaXMuY2hhbGxlbmdlSGlzdG9yeS5zZXQocnVucyksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChbXSksXG4gICAgfSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoQWN0aXZlUnVuKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChydW4pID0+IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldChydW4pLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpLFxuICAgIH0pO1xuICB9XG5cbiAgdW5sb2NrZWRMYWJlbChjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkucGxheWVyc1tjb2xvcl0ucG93ZXJVbmxvY2tlZCA/IHRoaXMudCgnY2hlc3NpbWFsc1VubG9ja2VkJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2NrZWQnKTtcbiAgfVxuXG4gIGxvY2FsTW9kZUxhYmVsKG1vZGU6IENoZXNzaW1hbHNMb2NhbE1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZScpO1xuICB9XG5cbiAgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZTogQ2hlc3NpbWFsc0xvY2FsTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1vZGUgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZUJvZHknKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZUJvZHknKTtcbiAgfVxuXG4gIHNlbGVjdEJvdERpZmZpY3VsdHkoZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eS5zZXQoZGlmZmljdWx0eSk7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuYm90UHJvZmlsZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5kaWZmaWN1bHR5ID09PSBkaWZmaWN1bHR5KTtcbiAgICBpZiAocHJvZmlsZSkgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQocHJvZmlsZS5pZCk7XG4gIH1cblxuICBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkpOiBzdHJpbmcge1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnZWFzeScpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RFYXN5Jyk7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICdoYXJkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdEhhcmQnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90Tm9ybWFsJyk7XG4gIH1cblxuICBib3RQcm9maWxlTGFiZWwocHJvZmlsZTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQocHJvZmlsZS5sYWJlbEtleSk7XG4gIH1cblxuICBib3RQcm9maWxlRGVzY3JpcHRpb24ocHJvZmlsZTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQocHJvZmlsZS5kZXNjcmlwdGlvbktleSk7XG4gIH1cblxuICBib3RQcm9maWxlVGVuZGVuY3kocHJvZmlsZTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNCb3Qke3RoaXMuY2FwaXRhbGl6ZShwcm9maWxlLmlkKX1UZW5kZW5jeWApO1xuICB9XG5cbiAgYm90UHJvZmlsZUF2YXRhcihwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IHByb2ZpbGVJZCk/LmF2YXRhciA/PyAn4pmfJztcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdFByb2ZpbGUoYm90OiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90KTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IGJvdC5wcm9maWxlSWQpO1xuICB9XG5cbiAgY2hhbGxlbmdlT3BlbmluZ0JvdCgpOiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbMF07XG4gIH1cblxuICBjaGFsbGVuZ2VNZW51Qm90KCk6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3Qge1xuICAgIGNvbnN0IGJlc3RSb3VuZCA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkO1xuICAgIGNvbnN0IG5leHRSb3VuZEluZGV4ID0gTWF0aC5taW4oTWF0aC5tYXgoYmVzdFJvdW5kLCAwKSwgdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoIC0gMSk7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFkZGVyW25leHRSb3VuZEluZGV4XTtcbiAgfVxuXG4gIGNoYWxsZW5nZU1lbnVSb3VuZExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuY2hhbGxlbmdlTWVudUJvdCgpLnJvdW5kfS8ke3RoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aH1gO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90TmFtZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmNoYWxsZW5nZUJvdFByb2ZpbGUoYm90KTtcbiAgICByZXR1cm4gcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZUxhYmVsKHByb2ZpbGUpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm90RGlmZmljdWx0eUxhYmVsKGJvdC5kaWZmaWN1bHR5KTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdFN0eWxlTGluZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmNoYWxsZW5nZUJvdFByb2ZpbGUoYm90KTtcbiAgICByZXR1cm4gcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGUpIDogdGhpcy50KGJvdC5pbnRyb0tleSk7XG4gIH1cblxuICBjaGFsbGVuZ2VCb3RTdGF0dXNMYWJlbChib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJlc3RSb3VuZCA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkO1xuICAgIGlmIChiZXN0Um91bmQgPj0gYm90LnJvdW5kKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxDbGVhcmVkJyk7XG4gICAgaWYgKGJlc3RSb3VuZCArIDEgPT09IGJvdC5yb3VuZCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJpdmFsQ3VycmVudCcpO1xuICAgIGlmIChib3Qucm91bmQgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJpdmFsRmluYWwnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxQZW5kaW5nJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VSdW5TdGF0dXNMYWJlbChydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiBzdHJpbmcge1xuICAgIGlmIChydW4uc3RhdHVzID09PSAnY29tcGxldGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0NvbXBsZXRlZCcpO1xuICAgIGlmIChydW4uc3RhdHVzID09PSAnZmFpbGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0ZhaWxlZCcpO1xuICAgIGlmIChydW4uc3RhdHVzID09PSAnYWJhbmRvbmVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0FiYW5kb25lZCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0dXNBY3RpdmUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJ1bkxpbmUocnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUnVuTGluZScpXG4gICAgICAucmVwbGFjZSgne3JvdW5kfScsIFN0cmluZyhydW4uY3VycmVudFJvdW5kKSlcbiAgICAgIC5yZXBsYWNlKCd7d2luc30nLCBTdHJpbmcocnVuLndpbnMpKTtcbiAgfVxuXG4gIGlzQ2hhbGxlbmdlQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdpZGxlJyAmJiAhIXRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gIH1cblxuICBzaG91bGRTaG93Q2hhbGxlbmdlSW5HYW1lUGFuZWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnByb2plY3Rpb25Nb2RlICYmIHRoaXMuc2NyZWVuKCkgPT09ICdnYW1lJyAmJiB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdwbGF5aW5nJyAmJiAhIXRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gIH1cblxuICBzaG93Q2hhbGxlbmdlSW50cm8oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpICE9PSAncGxheWluZycgfHwgIXRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyKTtcbiAgICB0aGlzLmNoYWxsZW5nZUludHJvVmlzaWJsZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKSk7XG4gICAgfSwgMjQwMCk7XG4gIH1cblxuICBkaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcik7XG4gICAgICB0aGlzLmNoYWxsZW5nZUludHJvVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuY2hhbGxlbmdlSW50cm9WaXNpYmxlLnNldChmYWxzZSk7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlQXZhdGFyKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICByZXR1cm4gYm90ID8gdGhpcy5ib3RQcm9maWxlQXZhdGFyKGJvdC5wcm9maWxlSWQpIDogJ+KZnyc7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlUml2YWxOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICByZXR1cm4gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlUml2YWxMaW5lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBpZiAoIWJvdCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZVJpdmFsTGluZScpXG4gICAgICAucmVwbGFjZSgne3N0eWxlfScsIHRoaXMuY2hhbGxlbmdlQm90U3R5bGVMaW5lKGJvdCkpXG4gICAgICAucmVwbGFjZSgne2RpZmZpY3VsdHl9JywgdGhpcy5jaGFsbGVuZ2VCb3REaWZmaWN1bHR5TGFiZWwoYm90KSk7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlU3RyZWFrTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHgke3RoaXMuY2hhbGxlbmdlUnVuKCk/LmN1cnJlbnRTdHJlYWsgPz8gMH1gO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZUJvYXJkTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib2FyZFNpemUgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpPy5ib2FyZFNpemUgPz8gdGhpcy5nYW1lKCkuYm9hcmRTaXplO1xuICAgIHJldHVybiBgJHtib2FyZFNpemV9eCR7Ym9hcmRTaXplfWA7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlVGltZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpPy5yb3VuZCA9PT0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoXG4gICAgICA/IENIRVNTSU1BTFNfQ0hBTExFTkdFX0ZJTkFMX1RVUk5fU0VDT05EU1xuICAgICAgOiBDSEVTU0lNQUxTX0NIQUxMRU5HRV9UVVJOX1NFQ09ORFM7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVR1cm5TZWNvbmRzJykucmVwbGFjZSgne3NlY29uZHN9JywgU3RyaW5nKHNlY29uZHMpKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJvdW5kTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuKSByZXR1cm4gJy0nO1xuICAgIHJldHVybiBgJHtydW4uY3VycmVudFJvdW5kfS8ke3RoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aH1gO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZXNMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiAnLSc7XG4gICAgcmV0dXJuICfimaUnLnJlcGVhdChNYXRoLm1heCgwLCBydW4ubGl2ZXNSZW1haW5pbmcpKSB8fCAnMCc7XG4gIH1cblxuICBjaGFsbGVuZ2VPdXRjb21lVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29tcGxldGVkVGl0bGUnKTtcbiAgICBpZiAocGhhc2UgPT09ICdmYWlsZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmFpbGVkVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYXN0V29uKClcbiAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRXb25UaXRsZScpXG4gICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kTG9zdFRpdGxlJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VPdXRjb21lQm9keSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzKCk7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBib3ROYW1lID0gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gICAgY29uc3QgYm9keUtleSA9XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdjb21wbGV0ZWQnXG4gICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb21wbGV0ZWRCb2R5J1xuICAgICAgICA6IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2ZhaWxlZCdcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlRmFpbGVkQm9keSdcbiAgICAgICAgICA6IHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRXb25Cb2R5J1xuICAgICAgICAgICAgOiAnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kTG9zdEJvZHknO1xuICAgIHJldHVybiB0aGlzLnQoYm9keUtleSlcbiAgICAgIC5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpXG4gICAgICAucmVwbGFjZSgne2xpdmVzfScsIFN0cmluZyhydW4/LmxpdmVzUmVtYWluaW5nID8/IDApKVxuICAgICAgLnJlcGxhY2UoJ3t3aW5zfScsIFN0cmluZyhydW4/LndpbnMgPz8gMCkpXG4gICAgICAucmVwbGFjZSgne3Bvd2Vyc30nLCBTdHJpbmcodGhpcy50b3RhbENoYWxsZW5nZVBvd2VycyhzdGF0cykpKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVN1bW1hcnlBdmF0YXIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgOiAn4pmfJztcbiAgfVxuXG4gIGNoYWxsZW5nZVJvdW5kU3RhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnXG4gICAgICA/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KClcbiAgICAgIDogdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCByb3VuZCA9IGJvdD8ucm91bmQgPz8gdGhpcy5jaGFsbGVuZ2VSdW4oKT8uY3VycmVudFJvdW5kID8/IDE7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhZ2UnKVxuICAgICAgLnJlcGxhY2UoJ3tyb3VuZH0nLCBTdHJpbmcocm91bmQpKVxuICAgICAgLnJlcGxhY2UoJ3t0b3RhbH0nLCBTdHJpbmcodGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSk7XG4gIH1cblxuICBjaGFsbGVuZ2VSaXZhbFZvaWNlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IGJvdE5hbWUgPSBib3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUoYm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxWb2ljZScpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSk7XG4gIH1cblxuICBjaGFsbGVuZ2VSaXZhbFZvaWNlVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VDb21wbGV0ZWRUaXRsZScpO1xuICAgIGlmIChwaGFzZSA9PT0gJ2ZhaWxlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZUZhaWxlZFRpdGxlJyk7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSA/ICdXb24nIDogJ0xvc3QnO1xuICAgIGNvbnN0IGJvdFRpdGxlID0gdGhpcy5jaGFsbGVuZ2VWb2ljZVRleHQoYm90LCByZXN1bHQsICdUaXRsZScpO1xuICAgIGlmIChib3RUaXRsZSkgcmV0dXJuIGJvdFRpdGxlO1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKVxuICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZVdvblRpdGxlJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VMb3N0VGl0bGUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJpdmFsVm9pY2VCb2R5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBib3ROYW1lID0gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jaGFsbGVuZ2VMYXN0V29uKCkgPyAnV29uJyA6ICdMb3N0JztcbiAgICBjb25zdCBib3RCb2R5ID0gdGhpcy5jaGFsbGVuZ2VWb2ljZVRleHQoYm90LCByZXN1bHQsICdCb2R5Jyk7XG4gICAgaWYgKGJvdEJvZHkpIHJldHVybiBib3RCb2R5LnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSk7XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2NvbXBsZXRlZCdcbiAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlQ29tcGxldGVkQm9keSdcbiAgICAgICAgOiB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdmYWlsZWQnXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlRmFpbGVkQm9keSdcbiAgICAgICAgICA6IHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VXb25Cb2R5J1xuICAgICAgICAgICAgOiAnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlTG9zdEJvZHknO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFsbGVuZ2VWb2ljZVRleHQoXG4gICAgYm90OiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHwgdW5kZWZpbmVkLFxuICAgIHJlc3VsdDogJ1dvbicgfCAnTG9zdCcsXG4gICAgcGFydDogJ1RpdGxlJyB8ICdCb2R5JyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWJvdCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBrZXkgPSBgY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlJHtyZXN1bHR9JHt0aGlzLmNhcGl0YWxpemUoYm90LmlkKX0ke3BhcnR9YDtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy50KGtleSk7XG4gICAgcmV0dXJuIHRleHQgPT09IGtleSA/IHVuZGVmaW5lZCA6IHRleHQ7XG4gIH1cblxuICBjaGFsbGVuZ2VOZXh0Uml2YWxMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKVxuICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VOZXh0Uml2YWxMYWJlbCcpXG4gICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJldHJ5Uml2YWxMYWJlbCcpO1xuICB9XG5cbiAgY2hhbGxlbmdlQ29udGludWVMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5jaGFsbGVuZ2VMYXN0V29uKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZXRyeVJpdmFsJyk7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAocnVuPy5jdXJyZW50Um91bmQgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZpbmFsUm91bmRDdGEnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTmV4dFJpdmFsJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VOZXh0Uml2YWxIaW50KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJldHJ5SGludCcpO1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKHJ1bj8uY3VycmVudFJvdW5kID09PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFJvdW5kSGludCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VOZXh0Uml2YWxIaW50Jyk7XG4gIH1cblxuICBjaGFsbGVuZ2VXaW5SYXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlV2luUmF0ZUxhYmVsKCdjaGFsbGVuZ2UnKTtcbiAgfVxuXG4gIG1vZGVXaW5SYXRlTGFiZWwobW9kZTogQ2hlc3NpbWFsc1N0YXRzTW9kZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgY29uc3QgbW9kZVN0YXRzID0gc3RhdHMubW9kZVN0YXRzW21vZGVdO1xuICAgIGNvbnN0IHBsYXllZCA9IG1vZGVTdGF0cy5wbGF5ZWQ7XG4gICAgaWYgKCFwbGF5ZWQpIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIGAke01hdGgucm91bmQoKG1vZGVTdGF0cy53aW5zIC8gcGxheWVkKSAqIDEwMCl9JWA7XG4gIH1cblxuICBtb2RlU3RhdHNMaW5lKG1vZGU6IENoZXNzaW1hbHNTdGF0c01vZGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRzID0gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLm1vZGVTdGF0c1ttb2RlXTtcbiAgICBpZiAoIXN0YXRzLnBsYXllZCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc01vZGVTdGF0c0VtcHR5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc01vZGVTdGF0c0xpbmUnKVxuICAgICAgLnJlcGxhY2UoJ3twbGF5ZWR9JywgU3RyaW5nKHN0YXRzLnBsYXllZCkpXG4gICAgICAucmVwbGFjZSgne3dpbnN9JywgU3RyaW5nKHN0YXRzLndpbnMpKVxuICAgICAgLnJlcGxhY2UoJ3tsb3NzZXN9JywgU3RyaW5nKHN0YXRzLmxvc3NlcykpO1xuICB9XG5cbiAgcHJvZ3Jlc3NQb3dlclN0YXRzKCk6IENoZXNzaW1hbHNQcm9ncmVzc01ldHJpY1ZpZXdbXSB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgbGFiZWw6IHRoaXMuYW5pbWFsTGFiZWwoJ2VhZ2xlJyksIHZhbHVlOiBzdGF0cy5wb3dlcnNVc2VkLmVhZ2xlIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLmFuaW1hbExhYmVsKCdidWxsJyksIHZhbHVlOiBzdGF0cy5wb3dlcnNVc2VkLmJ1bGwgfSxcbiAgICAgIHsgbGFiZWw6IHRoaXMuYW5pbWFsTGFiZWwoJ2thbmdhcm9vJyksIHZhbHVlOiBzdGF0cy5wb3dlcnNVc2VkLmthbmdhcm9vIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLmFuaW1hbExhYmVsKCdsaW9uJyksIHZhbHVlOiBzdGF0cy5wb3dlcnNVc2VkLmxpb24gfSxcbiAgICAgIHsgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBvd2VyQ2FwdHVyZXMnKSwgdmFsdWU6IHN0YXRzLnBvd2VyQ2FwdHVyZXMgfSxcbiAgICAgIHsgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVByb21vdGlvbnMnKSwgdmFsdWU6IHN0YXRzLnByb21vdGlvbnMgfSxcbiAgICBdO1xuICB9XG5cbiAgY2hhbGxlbmdlQWNoaWV2ZW1lbnRzKCk6IENoZXNzaW1hbHNBY2hpZXZlbWVudFZpZXdbXSB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgY29uc3QgYm90U3RhdHMgPSBzdGF0cy5tb2RlU3RhdHMuYm90O1xuICAgIGNvbnN0IG9ubGluZVN0YXRzID0gc3RhdHMubW9kZVN0YXRzLm9ubGluZTtcbiAgICBjb25zdCB0b3RhbFBvd2VycyA9IHN0YXRzLnBvd2Vyc1VzZWQuZWFnbGUgKyBzdGF0cy5wb3dlcnNVc2VkLmJ1bGwgKyBzdGF0cy5wb3dlcnNVc2VkLmthbmdhcm9vICsgc3RhdHMucG93ZXJzVXNlZC5saW9uO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEZpcnN0V2luVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRGaXJzdFdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJzEnLFxuICAgICAgICB1bmxvY2tlZDogc3RhdHMudG90YWxXaW5zID4gMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudFN0cmVha1RpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50U3RyZWFrQm9keScpLFxuICAgICAgICBpY29uOiAnMycsXG4gICAgICAgIHVubG9ja2VkOiBzdGF0cy5iZXN0V2luU3RyZWFrID49IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRQb3dlclRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50UG93ZXJCb2R5JyksXG4gICAgICAgIGljb246ICdQJyxcbiAgICAgICAgdW5sb2NrZWQ6IHRvdGFsUG93ZXJzID49IDEwIHx8IHN0YXRzLnBvd2VyQ2FwdHVyZXMgPj0gNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudENoYW1waW9uVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRDaGFtcGlvbkJvZHknKSxcbiAgICAgICAgaWNvbjogJzgnLFxuICAgICAgICB1bmxvY2tlZDogc3RhdHMuY2hhbGxlbmdlc0NvbXBsZXRlZCA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RXaW5UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEJvdFdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJ0InLFxuICAgICAgICB1bmxvY2tlZDogYm90U3RhdHMud2lucyA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RGaXZlVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RGaXZlQm9keScpLFxuICAgICAgICBpY29uOiAnNScsXG4gICAgICAgIHVubG9ja2VkOiBib3RTdGF0cy53aW5zID49IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVXaW5UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudE9ubGluZVdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJ08nLFxuICAgICAgICB1bmxvY2tlZDogb25saW5lU3RhdHMud2lucyA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVGaXZlVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVGaXZlQm9keScpLFxuICAgICAgICBpY29uOiAnNScsXG4gICAgICAgIHVubG9ja2VkOiBvbmxpbmVTdGF0cy5wbGF5ZWQgPj0gNSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNoYWxsZW5nZUZlYXR1cmVkQWNoaWV2ZW1lbnRzKCk6IENoZXNzaW1hbHNBY2hpZXZlbWVudFZpZXdbXSB7XG4gICAgY29uc3QgYWNoaWV2ZW1lbnRzID0gdGhpcy5jaGFsbGVuZ2VBY2hpZXZlbWVudHMoKTtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uYWNoaWV2ZW1lbnRzLmZpbHRlcigoYWNoaWV2ZW1lbnQpID0+IGFjaGlldmVtZW50LnVubG9ja2VkKSxcbiAgICAgIC4uLmFjaGlldmVtZW50cy5maWx0ZXIoKGFjaGlldmVtZW50KSA9PiAhYWNoaWV2ZW1lbnQudW5sb2NrZWQpLFxuICAgIF0uc2xpY2UoMCwgNCk7XG4gIH1cblxuICBjaGFsbGVuZ2VUZW5zaW9uTW9tZW50KCk6IENoZXNzaW1hbHNDaGFsbGVuZ2VUZW5zaW9uVmlldyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGhhc2UgPSB0aGlzLmNoYWxsZW5nZVBoYXNlKCk7XG4gICAgaWYgKHBoYXNlICE9PSAncGxheWluZycgJiYgcGhhc2UgIT09ICdiZXR3ZWVuJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgbmV4dEJvdCA9IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgY29uc3QgbGFzdEJvdCA9IHBoYXNlID09PSAncGxheWluZycgPyBuZXh0Qm90IDogdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gbmV4dEJvdDtcbiAgICBjb25zdCBib3ROYW1lID0gbGFzdEJvdCA/IHRoaXMuY2hhbGxlbmdlQm90TmFtZShsYXN0Qm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcblxuICAgIGlmIChydW4ubGl2ZXNSZW1haW5pbmcgPD0gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxhc3RMaWZlVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGFzdExpZmVCb2R5JykucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKSxcbiAgICAgICAgaWNvbjogJ+KZpScsXG4gICAgICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jaGFsbGVuZ2VMYXN0V29uKCkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVtYXRjaFRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlbWF0Y2hCb2R5JykucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKSxcbiAgICAgICAgaWNvbjogJ+KGuycsXG4gICAgICAgIGNyaXRpY2FsOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHJ1bi5jdXJyZW50Um91bmQgPj0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxSaXZhbFRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZpbmFsUml2YWxCb2R5JyksXG4gICAgICAgIGljb246ICc4JyxcbiAgICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAocnVuLmN1cnJlbnRSb3VuZCA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGggLSAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxab25lVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxab25lQm9keScpLFxuICAgICAgICBpY29uOiAnNycsXG4gICAgICAgIGNyaXRpY2FsOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHJ1bi5jdXJyZW50U3RyZWFrID49IDIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdHJlYWtUaXRsZScpLnJlcGxhY2UoJ3tzdHJlYWt9JywgU3RyaW5nKHJ1bi5jdXJyZW50U3RyZWFrKSksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0cmVha0JvZHknKSxcbiAgICAgICAgaWNvbjogU3RyaW5nKHJ1bi5jdXJyZW50U3RyZWFrKSxcbiAgICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2hhbGxlbmdlSGFzTmV3UmVjb3JkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZCgpO1xuICB9XG5cbiAgdG90YWxDaGFsbGVuZ2VQb3dlcnMoc3RhdHM/OiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyk6IG51bWJlciB7XG4gICAgaWYgKCFzdGF0cykgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHN0YXRzLnBvd2Vyc1VzZWQuZWFnbGUgKyBzdGF0cy5wb3dlcnNVc2VkLmJ1bGwgKyBzdGF0cy5wb3dlcnNVc2VkLmthbmdhcm9vICsgc3RhdHMucG93ZXJzVXNlZC5saW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVHYW1lU2NvcmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgcGxheWVyUHJlZml4Pzogc3RyaW5nKTogQ2hlc3NpbWFsc0dhbWVTY29yZVZpZXcge1xuICAgIGxldCBzY29yZSA9IDA7XG4gICAgbGV0IGNvbWJvID0gMDtcbiAgICBsZXQgYmVzdENvbWJvID0gMDtcbiAgICBsZXQgYmVzdE1vdmU6IENoZXNzaW1hbHNNb3ZlU2NvcmVWaWV3IHwgdW5kZWZpbmVkO1xuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBnYW1lLm1vdmVIaXN0b3J5ID8/IFtdKSB7XG4gICAgICBjb25zdCBtb3ZlID0gZW50cnkubW92ZTtcbiAgICAgIGlmICghbW92ZSkgY29udGludWU7XG4gICAgICBpZiAocGxheWVyUHJlZml4ICYmICFtb3ZlLnBpZWNlSWQuc3RhcnRzV2l0aChwbGF5ZXJQcmVmaXgpKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgbW92ZUNvbG9yID0gdGhpcy5jb2xvckZyb21QaWVjZUlkKG1vdmUucGllY2VJZCk7XG4gICAgICBjb25zdCBpc1Byb21vdGlvbiA9IGVudHJ5LnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyAmJiBlbnRyeS53aW5uZXJSZWFzb24gPT09ICdwcm9tb3Rpb24nICYmIGVudHJ5Lndpbm5lciA9PT0gbW92ZUNvbG9yO1xuICAgICAgY29uc3QgbW92ZVNjb3JlID0gdGhpcy5zY29yZUNoZXNzaW1hbHNNb3ZlKG1vdmUsIGlzUHJvbW90aW9uLCBjb21ibyk7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHtcbiAgICAgICAgY29tYm8gKz0gMTtcbiAgICAgICAgYmVzdENvbWJvID0gTWF0aC5tYXgoYmVzdENvbWJvLCBjb21ibyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21ibyA9IDA7XG4gICAgICB9XG5cbiAgICAgIHNjb3JlICs9IG1vdmVTY29yZS5zY29yZTtcbiAgICAgIGlmICghYmVzdE1vdmUgfHwgbW92ZVNjb3JlLnNjb3JlID4gYmVzdE1vdmUuc2NvcmUpIGJlc3RNb3ZlID0gbW92ZVNjb3JlO1xuICAgIH1cblxuICAgIHJldHVybiB7IGJlc3RDb21ibywgYmVzdE1vdmUsIHNjb3JlIH07XG4gIH1cblxuICBwcml2YXRlIHNjb3JlQ2hlc3NpbWFsc01vdmUobW92ZTogQ2hlc3NpbWFsc01vdmUsIHByb21vdGlvbjogYm9vbGVhbiwgY3VycmVudENvbWJvOiBudW1iZXIpOiBDaGVzc2ltYWxzTW92ZVNjb3JlVmlldyB7XG4gICAgY29uc3QgY2FwdHVyZSA9ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQ7XG4gICAgY29uc3QgY29tYm8gPSBjYXB0dXJlID8gY3VycmVudENvbWJvICsgMSA6IDA7XG4gICAgY29uc3Qgc2NvcmUgPSAxXG4gICAgICArIChjYXB0dXJlID8gKG1vdmUuYW5pbWFsID8gNSA6IDMpIDogMClcbiAgICAgICsgKG1vdmUuYW5pbWFsICYmICFjYXB0dXJlID8gMSA6IDApXG4gICAgICArIChwcm9tb3Rpb24gPyA4IDogMClcbiAgICAgICsgKGNvbWJvID4gMSA/IGNvbWJvIC0gMSA6IDApO1xuICAgIGNvbnN0IGxhYmVsS2V5ID0gcHJvbW90aW9uXG4gICAgICA/ICdjaGVzc2ltYWxzU2NvcmVQcm9tb3Rpb24nXG4gICAgICA6IGNhcHR1cmUgJiYgbW92ZS5hbmltYWxcbiAgICAgICAgPyAnY2hlc3NpbWFsc1Njb3JlUG93ZXJDYXB0dXJlJ1xuICAgICAgICA6IGNhcHR1cmVcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzU2NvcmVDYXB0dXJlJ1xuICAgICAgICAgIDogbW92ZS5hbmltYWxcbiAgICAgICAgICAgID8gJ2NoZXNzaW1hbHNTY29yZVBvd2VyTW92ZSdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNTY29yZU1vdmUnO1xuICAgIHJldHVybiB7XG4gICAgICBjb21ibyxcbiAgICAgIGxhYmVsOiB0aGlzLnQobGFiZWxLZXkpLFxuICAgICAgc2NvcmUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29sb3JGcm9tUGllY2VJZChwaWVjZUlkOiBzdHJpbmcpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCB1bmRlZmluZWQge1xuICAgIGlmIChwaWVjZUlkLnN0YXJ0c1dpdGgoJ1cnKSB8fCBwaWVjZUlkLnN0YXJ0c1dpdGgoJ1RXJykpIHJldHVybiAnd2hpdGUnO1xuICAgIGlmIChwaWVjZUlkLnN0YXJ0c1dpdGgoJ0InKSB8fCBwaWVjZUlkLnN0YXJ0c1dpdGgoJ1RCJykpIHJldHVybiAnYmxhY2snO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzIHtcbiAgICBjb25zdCByb3VuZFNjb3JlID0gdGhpcy5jcmVhdGVHYW1lU2NvcmUoZ2FtZSwgJ1cnKTtcbiAgICBjb25zdCBzdGF0czogQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMgPSB7XG4gICAgICBwb3dlcnNVc2VkOiB7IGVhZ2xlOiAwLCBidWxsOiAwLCBrYW5nYXJvbzogMCwgbGlvbjogMCB9LFxuICAgICAgcG93ZXJDYXB0dXJlczogMCxcbiAgICAgIHByb21vdGlvbnM6IGdhbWUud2lubmVyID09PSAnd2hpdGUnICYmIGdhbWUud2lubmVyUmVhc29uID09PSAncHJvbW90aW9uJyA/IDEgOiAwLFxuICAgICAgY2FwdHVyZXM6IDAsXG4gICAgICBtb3ZlczogMCxcbiAgICAgIHNjb3JlOiByb3VuZFNjb3JlLnNjb3JlLFxuICAgICAgYmVzdE1vdmVTY29yZTogcm91bmRTY29yZS5iZXN0TW92ZT8uc2NvcmUgPz8gMCxcbiAgICAgIGJlc3RDb21ibzogcm91bmRTY29yZS5iZXN0Q29tYm8sXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlIHx8ICFtb3ZlLnBpZWNlSWQuc3RhcnRzV2l0aCgnVycpKSBjb250aW51ZTtcbiAgICAgIHN0YXRzLm1vdmVzICs9IDE7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHN0YXRzLmNhcHR1cmVzICs9IDE7XG4gICAgICBpZiAoIW1vdmUuYW5pbWFsKSBjb250aW51ZTtcbiAgICAgIHN0YXRzLnBvd2Vyc1VzZWRbbW92ZS5hbmltYWxdICs9IDE7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHN0YXRzLnBvd2VyQ2FwdHVyZXMgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRzO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RlU3RhdHNSZXN1bHQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHsgbW9kZTogRXhjbHVkZTxDaGVzc2ltYWxzU3RhdHNNb2RlLCAnY2hhbGxlbmdlJz47IHdvbjogYm9vbGVhbiB9IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnR1dG9yaWFsTW9kZSgpIHx8ICFnYW1lLndpbm5lcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpICE9PSAnYm90JykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IG1vZGU6ICdib3QnLCB3b246IGdhbWUud2lubmVyID09PSAnd2hpdGUnIH07XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCkgPz8gdGhpcy5vbmxpbmUuY3VycmVudFVpZDtcbiAgICBjb25zdCBzaWRlID0gdWlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHVpZCkgOiB1bmRlZmluZWQ7XG4gICAgaWYgKHNpZGUgIT09ICd3aGl0ZScgJiYgc2lkZSAhPT0gJ2JsYWNrJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyBtb2RlOiAnb25saW5lJywgd29uOiBnYW1lLndpbm5lciA9PT0gc2lkZSB9O1xuICB9XG5cbiAgYW5pbWFsTGFiZWwodHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNBbmltYWwke3RoaXMuY2FwaXRhbGl6ZSh0eXBlKX1gKTtcbiAgfVxuXG4gIGFuaW1hbEdseXBoKHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCBnbHlwaHM6IFJlY29yZDxDaGVzc2ltYWxzQW5pbWFsVHlwZSwgc3RyaW5nPiA9IHtcbiAgICAgIGVhZ2xlOiAn4oaXJyxcbiAgICAgIGJ1bGw6ICfil4YnLFxuICAgICAga2FuZ2Fyb286ICfipLQnLFxuICAgICAgbGlvbjogJ+KZmicsXG4gICAgfTtcbiAgICByZXR1cm4gZ2x5cGhzW3R5cGVdO1xuICB9XG5cbiAgY2FuUmV2aWV3UHJldmlvdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgPz8gMCkgPiAwO1xuICB9XG5cbiAgY2FuUmV2aWV3TmV4dCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICByZXR1cm4gaW5kZXggIT09IHVuZGVmaW5lZCAmJiBpbmRleCA8IHRoaXMucmVwbGF5RW50cmllcygpLmxlbmd0aCAtIDE7XG4gIH1cblxuICByZXZpZXdQcmV2aW91c01vdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPD0gMCkgcmV0dXJuO1xuICAgIHRoaXMucmV2aWV3SW5kZXguc2V0KGluZGV4IC0gMSk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJldmlld05leHRNb3ZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4ID49IHRoaXMucmVwbGF5RW50cmllcygpLmxlbmd0aCAtIDEpIHJldHVybjtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldChpbmRleCArIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXBsYXlQb3NpdGlvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMucmVwbGF5RW50cmllcygpW2luZGV4XTtcbiAgICBpZiAoIWVudHJ5IHx8IGVudHJ5Lm1vdmVOdW1iZXIgPT09IDApIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXBsYXlTdGFydCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXBsYXlNb3ZlJylcbiAgICAgIC5yZXBsYWNlKCd7bW92ZX0nLCBgJHtlbnRyeS5tb3ZlTnVtYmVyfWApXG4gICAgICAucmVwbGFjZSgne3RvdGFsfScsIGAke3RoaXMuZ2FtZSgpLm1vdmVDb3VudH1gKTtcbiAgfVxuXG4gIHNob3VsZFNob3dGaW5pc2hlZE92ZXJsYXkoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIHJldHVybiBpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4ID09PSB0aGlzLnJlcGxheUVudHJpZXMoKS5sZW5ndGggLSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Um93SW5kZXgocm93OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIC0gMSAtIHJvdyA6IHJvdztcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheUNvbEluZGV4KGNvbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIDEgLSBjb2wgOiBjb2w7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdGhpcy5vbmxpbmUud2F0Y2hHYW1lKGdhbWVJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZU5vdEZvdW5kJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2xpdmUnKTtcbiAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmdhbWUoKTtcbiAgICAgICAgICB0aGlzLmFwcGx5T25saW5lR2FtZVNuYXBzaG90KHByZXZpb3VzLCBzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZURpc2Nvbm5lY3RlZEJvZHknKSk7XG4gICAgICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25saW5lT3BlbkVycm9yTWVzc2FnZShlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJyc7XG4gICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ0NIRVNTSU1BTFNfR0FNRV9FWFBJUkVEJykpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFeHBpcmVkQm9keScpO1xuICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdDSEVTU0lNQUxTX0dBTUVfTk9UX0ZPVU5EJykpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVOb3RGb3VuZCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU9ubGluZUdhbWVTbmFwc2hvdChwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmdhbWUuc2V0KHN0YXRlKTtcbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICBpZiAocHJldmlvdXMuaWQgIT09IHN0YXRlLmlkIHx8IHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLnJldmlld0luZGV4KCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgfVxuICAgIGlmIChwcmV2aW91cy5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgc3RhdGUuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUuc2V0KHN0YXRlLmJvYXJkU2l6ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgY29uc3QgcHJldmlvdXNQZW5kaW5nS2V5ID0gcHJldmlvdXMuaWQgPT09IHN0YXRlLmlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRLZXkocHJldmlvdXMub25saW5lPy5wZW5kaW5nR3Vlc3QpIDogJyc7XG4gICAgY29uc3QgbmV4dFBlbmRpbmdLZXkgPSB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudEtleShzdGF0ZS5vbmxpbmU/LnBlbmRpbmdHdWVzdCk7XG4gICAgaWYgKFxuICAgICAgc3RhdGUuc3RhdHVzID09PSAnd2FpdGluZycgJiZcbiAgICAgIHRoaXMub25saW5lLmlzSG9zdFdhaXRpbmcoc3RhdGUsIHRoaXMub25saW5lLmN1cnJlbnRVaWQpICYmXG4gICAgICAhIW5leHRQZW5kaW5nS2V5ICYmXG4gICAgICBuZXh0UGVuZGluZ0tleSAhPT0gcHJldmlvdXNQZW5kaW5nS2V5XG4gICAgKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdEJvZHknKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGVuZGluZ0d1ZXN0TmFtZSgpKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDMyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzSm9pblJlcXVlc3QoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJldmlvdXMuY3VycmVudFR1cm4gIT09IHN0YXRlLmN1cnJlbnRUdXJuICYmXG4gICAgICBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgICF0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKHN0YXRlKVxuICAgICkge1xuICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZChzdGF0ZSk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc0dhbWVSb3V0ZShnYW1lSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubWluaUdhbWVzQmFzZVJvdXRlKCl9L2NoZXNzaW1hbHMvJHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKGdhbWVJZCkpfWA7XG4gIH1cblxuICBwcml2YXRlIGNhcGl0YWxpemUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG4gIH1cbn1cbiJdfQ==
|
|
5792
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsR0FDckIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFzQjFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBR3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxJQUFJLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBc0Z6RSxNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQUN6QyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztBQUN2QyxNQUFNLG9CQUFvQixHQUEwQixPQUFPLENBQUM7QUFDNUQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFDcEMsTUFBTSw4QkFBOEIsR0FBRyxFQUFFLENBQUM7QUFDMUMsTUFBTSxpQ0FBaUMsR0FBRyxFQUFFLENBQUM7QUFDN0MsTUFBTSx1Q0FBdUMsR0FBRyxFQUFFLENBQUM7QUFFbkQsTUFBTSxPQUFPLEdBQTJCO0lBQ3RDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUM5RSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGtDQUFrQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDNUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxzQ0FBc0MsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ3BGLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsa0NBQWtDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtDQUMxRSxDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBNkI7SUFDNUQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFO0lBQ2xJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQ0FBcUMsRUFBRTtJQUN4SSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUU7SUFDbEksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFO0lBQ2xJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQ0FBcUMsRUFBRTtJQUN0SSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUU7SUFDcEksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxF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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTAyQ1Qsd2srRkEzMkNTLFFBQVEsc0RBQUUsb0JBQW9CLDhNQUFFLG1CQUFtQix5R0FBRSxvQkFBb0IsMEZBQUUsbUJBQW1COzs0RkE4aU03Rix1QkFBdUI7a0JBampNbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsUUFBUSxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixDQUFDLFlBQy9GOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwMkNUO3dEQTB1SmlDLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkE4S1gsWUFBWTtzQkFBeEIsS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbk1vZGFsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgYXBwbHlDaGVzc2ltYWxzTW92ZSxcbiAgY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUsXG4gIENIRVNTSU1BTFNfQk9UX1BST0ZJTEVTLFxuICBjcmVhdGVDaGVzc2ltYWxzUmV2aWV3U3RhdGUsXG4gIGNyZWF0ZUNoZXNzaW1hbHNHYW1lLFxuICBnZXRDaGVzc2ltYWxzTGVnYWxNb3ZlcyxcbiAgZ2V0Q2hlc3NpbWFsc1BpZWNlQXQsXG4gIHBvc2l0aW9uS2V5LFxuICByZXNpZ25DaGVzc2ltYWxzR2FtZSxcbn0gZnJvbSAnLi9jaGVzc2ltYWxzLWVuZ2luZSc7XG5pbXBvcnQgeyBDaGVzc2ltYWxzT25saW5lU2VydmljZSB9IGZyb20gJy4vY2hlc3NpbWFscy1vbmxpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBDaGVzc2ltYWxzQ2hhbGxlbmdlUHJvZ3Jlc3NTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLWNoYWxsZW5nZS1wcm9ncmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGUsXG4gIENoZXNzaW1hbHNCb3RQcm9maWxlSWQsXG4gIENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzLFxuICBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRSZXN1bHQsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4sXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0cyxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0hpc3RvcnlFbnRyeSxcbiAgQ2hlc3NpbWFsc0xvY2FsTW9kZSxcbiAgQ2hlc3NpbWFsc01vdmUsXG4gIENoZXNzaW1hbHNPbmxpbmVQYXJ0aWNpcGFudCxcbiAgQ2hlc3NpbWFsc1BpZWNlLFxuICBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIENoZXNzaW1hbHNQb3NpdGlvbixcbiAgQ2hlc3NpbWFsc1N0YXRzTW9kZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tb2RhbC1sYXlvdXQvbW9kYWwtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3JhbmdlLWlucHV0L3JhbmdlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZUlucHV0TWV0YWRhdGEsIFJhbmdlVmFsdWUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFuZ2UtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHsgVG9nZ2xlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvdG9nZ2xlLWlucHV0L3RvZ2dsZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9nZ2xlSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90b2dnbGUtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFwdGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9oYXB0aWNzL2hhcHRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9taW5pLWdhbWUtcGxheWVyLXByb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBWRVJTSU9OIGFzIFZBTFRFQ0hfQ09NUE9ORU5UU19WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vdmVyc2lvbic7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQW5pbWFsVmlldyB7XG4gIHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBhc3NldFNyYzogc3RyaW5nO1xuICB0b25lOiBudW1iZXI7XG59XG5cbnR5cGUgQ2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gPSAncmVzdGFydCcgfCAnbW9kZScgfCAnZ2FtZXMnIHwgJ3Jlc2lnbicgfCAnY2hhbGxlbmdlLW5ldyc7XG50eXBlIENoZXNzaW1hbHNSZW1hdGNoU3RhdGUgPSAnbm9uZScgfCAncmVxdWVzdGVkJyB8ICdpbmNvbWluZyc7XG50eXBlIENoZXNzaW1hbHNDaGFsbGVuZ2VQaGFzZSA9ICdpZGxlJyB8ICdwbGF5aW5nJyB8ICdiZXR3ZWVuJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCc7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzVHV0b3JpYWxFeHBlY3RlZE1vdmUge1xuICBwaWVjZUlkOiBzdHJpbmc7XG4gIHRvOiBDaGVzc2ltYWxzUG9zaXRpb247XG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmluZ1BpZWNlVmlldyB7XG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG4gIGZyb21Sb3c6IG51bWJlcjtcbiAgZnJvbUNvbDogbnVtYmVyO1xuICB0b1JvdzogbnVtYmVyO1xuICB0b0NvbDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVFZmZlY3RWaWV3IHtcbiAgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG4gIGZyb206IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgdG86IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgY2FwdHVyZTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNNb3ZlVHJhaWxWaWV3IHtcbiAgeDogc3RyaW5nO1xuICB5OiBzdHJpbmc7XG4gIGxlbmd0aDogc3RyaW5nO1xuICBhbmdsZTogc3RyaW5nO1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgY2FwdHVyZTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNDaGFsbGVuZ2VUZW5zaW9uVmlldyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBjcml0aWNhbDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNQb3dlckNhbGxvdXRWaWV3IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICBpbXBhY3Q6IHN0cmluZztcbiAgYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgY2FwdHVyZTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNBY2hpZXZlbWVudFZpZXcge1xuICB0aXRsZTogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgdW5sb2NrZWQ6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzUHJvZ3Jlc3NNZXRyaWNWaWV3IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNNb3ZlU2NvcmVWaWV3IHtcbiAgY29tYm86IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgc2NvcmU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNHYW1lU2NvcmVWaWV3IHtcbiAgYmVzdENvbWJvOiBudW1iZXI7XG4gIGJlc3RNb3ZlPzogQ2hlc3NpbWFsc01vdmVTY29yZVZpZXc7XG4gIHNjb3JlOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzU2NvcmVQb3BWaWV3IGV4dGVuZHMgQ2hlc3NpbWFsc01vdmVTY29yZVZpZXcge1xuICB4OiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbn1cblxuY29uc3QgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyA9IDM2MDtcbmNvbnN0IENIRVNTSU1BTFNfQk9UX1RISU5LSU5HX01TID0gNjIwO1xuY29uc3QgQ0hFU1NJTUFMU19CT1RfQ09MT1I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciA9ICdibGFjayc7XG5jb25zdCBDSEVTU0lNQUxTX1RVVE9SSUFMX1NURVBTID0gNztcbmNvbnN0IENIRVNTSU1BTFNfT05MSU5FX1RVUk5fU0VDT05EUyA9IDQ1O1xuY29uc3QgQ0hFU1NJTUFMU19DSEFMTEVOR0VfVFVSTl9TRUNPTkRTID0gMzA7XG5jb25zdCBDSEVTU0lNQUxTX0NIQUxMRU5HRV9GSU5BTF9UVVJOX1NFQ09ORFMgPSAyMDtcblxuY29uc3QgQU5JTUFMUzogQ2hlc3NpbWFsc0FuaW1hbFZpZXdbXSA9IFtcbiAgeyB0eXBlOiAnZWFnbGUnLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2VhZ2xlLmpwZycsIHRvbmU6IDY1OS4yNSB9LFxuICB7IHR5cGU6ICdidWxsJywgYXNzZXRTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9idWxsLmpwZycsIHRvbmU6IDI2MS42MyB9LFxuICB7IHR5cGU6ICdrYW5nYXJvbycsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMva2FuZ2Fyb28uanBnJywgdG9uZTogNTIzLjI1IH0sXG4gIHsgdHlwZTogJ2xpb24nLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2xpb24uanBnJywgdG9uZTogMzkyIH0sXG5dO1xuXG5jb25zdCBDSEVTU0lNQUxTX0NIQUxMRU5HRV9MQURERVI6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3RbXSA9IFtcbiAgeyBpZDogJ3Nwcm91dCcsIHJvdW5kOiAxLCBwcm9maWxlSWQ6ICdleHBsb3JlcicsIGRpZmZpY3VsdHk6ICdlYXN5JywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RTcHJvdXRJbnRybycgfSxcbiAgeyBpZDogJ3NlbnRpbmVsJywgcm91bmQ6IDIsIHByb2ZpbGVJZDogJ2d1YXJkaWFuJywgZGlmZmljdWx0eTogJ25vcm1hbCcsIGJvYXJkU2l6ZTogNiwgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90U2VudGluZWxJbnRybycgfSxcbiAgeyBpZDogJ2h1bnRlcicsIHJvdW5kOiAzLCBwcm9maWxlSWQ6ICdodW50ZXInLCBkaWZmaWN1bHR5OiAnbm9ybWFsJywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RIdW50ZXJJbnRybycgfSxcbiAgeyBpZDogJ2p1bXBlcicsIHJvdW5kOiA0LCBwcm9maWxlSWQ6ICdqdW1wZXInLCBkaWZmaWN1bHR5OiAnbm9ybWFsJywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RKdW1wZXJJbnRybycgfSxcbiAgeyBpZDogJ3ByZWRhdG9yJywgcm91bmQ6IDUsIHByb2ZpbGVJZDogJ3ByZWRhdG9yJywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdFByZWRhdG9ySW50cm8nIH0sXG4gIHsgaWQ6ICdvcmFjbGUnLCByb3VuZDogNiwgcHJvZmlsZUlkOiAnc3RyYXRlZ2lzdCcsIGRpZmZpY3VsdHk6ICdoYXJkJywgYm9hcmRTaXplOiA4LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RPcmFjbGVJbnRybycgfSxcbiAgeyBpZDogJ3NwcmludGVyJywgcm91bmQ6IDcsIHByb2ZpbGVJZDogJ3NwcmludGVyJywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdFNwcmludGVySW50cm8nIH0sXG4gIHsgaWQ6ICdjaGFtcGlvbicsIHJvdW5kOiA4LCBwcm9maWxlSWQ6ICdzZW50aW5lbCcsIGRpZmZpY3VsdHk6ICdoYXJkJywgYm9hcmRTaXplOiA4LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RDaGFtcGlvbkludHJvJyB9LFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoZXNzaW1hbHMtZ2FtZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25Nb2RhbCwgTW9kYWxMYXlvdXRDb21wb25lbnQsIFJhbmdlSW5wdXRDb21wb25lbnQsIFRvZ2dsZUlucHV0Q29tcG9uZW50LCBVc2VyQXZhdGFyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWFpbiBjbGFzcz1cImNoZXNzaW1hbHMtc2hlbGxcIiBbY2xhc3MuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbl09XCJwcm9qZWN0aW9uTW9kZVwiPlxuICAgICAgQGlmIChzY3JlZW4oKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1oZXJvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb19fbG9nb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9sb2dvLmpwZ1wiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGgxPnt7IHQoJ2NoZXNzaW1hbHNUaXRsZScpIH19PC9oMT5cbiAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1wYW5lbFwiPlxuICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1ob3d0b1wiPlxuICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNIb3dUb1RpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc0hvd1RvQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaG93dG9fX2FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtbGVhcm4tbW9yZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRUdXRvcmlhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1R1dG9yaWFsU3RhcnQnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtbGVhcm4tbW9yZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblJ1bGVzTW9kYWwoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2xlYXJuTW9yZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2NvcHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUV5ZWJyb3cnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fcml2YWxcIj5cbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgYm90UHJvZmlsZUF2YXRhcihjaGFsbGVuZ2VNZW51Qm90KCkucHJvZmlsZUlkKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlQm90U3RhdHVzTGFiZWwoY2hhbGxlbmdlTWVudUJvdCgpKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKGNoYWxsZW5nZU1lbnVCb3QoKSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX21ldGFcIj5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMaXZlcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPjM8L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlTWVudVJvdW5kTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5DaGFsbGVuZ2VWaWV3KClcIj5cbiAgICAgICAgICAgICAge3sgcmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCkgPyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVzdW1lJykgOiB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlT3BlbicpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zaXplXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZFNpemUnKVwiPlxuICAgICAgICAgICAgQGZvciAoc2l6ZSBvZiBib2FyZFNpemVzOyB0cmFjayBzaXplKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRCb2FyZFNpemUoKSA9PT0gc2l6ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkQm9hcmRTaXplLnNldChzaXplKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNpemUgfX14e3sgc2l6ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBzaXplID09PSA2ID8gdCgnY2hlc3NpbWFsc1NpemVTbWFsbCcpIDogdCgnY2hlc3NpbWFsc1NpemVMYXJnZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1tb2RlXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNNb2RlVGl0bGUnKVwiPlxuICAgICAgICAgICAgQGZvciAobW9kZSBvZiBsb2NhbE1vZGVzOyB0cmFjayBtb2RlKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gbW9kZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkTG9jYWxNb2RlLnNldChtb2RlKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxvY2FsTW9kZUxhYmVsKG1vZGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxvY2FsTW9kZURlc2NyaXB0aW9uKG1vZGUpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKHNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1kaWZmaWN1bHR5XCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb3REaWZmaWN1bHR5JylcIj5cbiAgICAgICAgICAgICAgQGZvciAoZGlmZmljdWx0eSBvZiBib3REaWZmaWN1bHRpZXM7IHRyYWNrIGRpZmZpY3VsdHkpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvdERpZmZpY3VsdHkoKSA9PT0gZGlmZmljdWx0eVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Qm90RGlmZmljdWx0eShkaWZmaWN1bHR5KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgYm90RGlmZmljdWx0eUxhYmVsKGRpZmZpY3VsdHkpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYm90c1wiIHJvbGU9XCJyYWRpb2dyb3VwXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQm90U3R5bGUnKVwiPlxuICAgICAgICAgICAgICBAZm9yIChwcm9maWxlIG9mIGF2YWlsYWJsZUJvdFByb2ZpbGVzKCk7IHRyYWNrIHByb2ZpbGUuaWQpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvdFByb2ZpbGVJZCgpID09PSBwcm9maWxlLmlkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQocHJvZmlsZS5pZClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IHByb2ZpbGUuYXZhdGFyIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBib3RQcm9maWxlTGFiZWwocHJvZmlsZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBib3RQcm9maWxlRGVzY3JpcHRpb24ocHJvZmlsZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgQGlmIChzZWxlY3RlZEJvdFByb2ZpbGVJZCgpID09PSBwcm9maWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwPnt7IGJvdFByb2ZpbGVUZW5kZW5jeShwcm9maWxlKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRHYW1lKClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTdGFydCcpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzT25saW5lQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKG9ubGluZUVycm9yKCkpIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fZXJyb3JcIj57eyBvbmxpbmVFcnJvcigpIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChvbmxpbmVMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVMb2FkaW5nJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZU9ubGluZUdhbWUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJykge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lSGludCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19qb2luXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmVUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzSm9pbkNvZGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvbmxpbmVKb2luQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0KCdjaGVzc2ltYWxzSm9pbkNvZGVQbGFjZWhvbGRlcicpXCJcbiAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbmxpbmVKb2luQ29kZS5zZXQobm9ybWFsaXplR2FtZUlkKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnam9pbidcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpIHx8ICFvbmxpbmVKb2luQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiam9pbk9ubGluZUdhbWVCeUNvZGUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnam9pbicpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIEBpZiAob25saW5lSGlzdG9yeSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZSBjaGVzc2ltYWxzLWhpc3RvcnlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5Qm9keScpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9fbGlzdFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIG9ubGluZUhpc3RvcnkoKS5zbGljZSgwLCA2KTsgdHJhY2sgZW50cnkuZ2FtZUlkKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbVwiIChjbGljayk9XCJvcGVuSGlzdG9yeUdhbWUoZW50cnkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZW50cnkuZ2FtZUlkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGhpc3RvcnlPdXRjb21lTGFiZWwoZW50cnkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlPcGVuJykgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lIGNoZXNzaW1hbHMtaG9tZS1zZXR0aW5nc1wiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNTZXR0aW5ncycpIH19PC9oMj5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1NldHRpbmdzU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1zZXR0aW5nc19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5TZXR0aW5nc01vZGFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2V0dGluZ3MnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuQWJvdXRNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0Fib3V0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFuZ2VHYW1lJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2UgaWYgKHNjcmVlbigpID09PSAnY2hhbGxlbmdlJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXZpZXdcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1iYWNrLWxpbmtcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImJhY2tUb0hvbWUoKVwiPlxuICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0JhY2tUb01lbnUnKSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIGNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQtLWRlZGljYXRlZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWhlcm9cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2NvcHlcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRXllYnJvdycpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19hY3Rpb25zIGNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMtLWhlcm9cIj5cbiAgICAgICAgICAgICAgICBAaWYgKHJlc3VtYWJsZUNoYWxsZW5nZVJ1bigpOyBhcyBhY3RpdmVSdW4pIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc3VtZUNoYWxsZW5nZShhY3RpdmVSdW4pXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZXN1bWUnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0Q2hhbGxlbmdlKClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHJlc3VtYWJsZUNoYWxsZW5nZVJ1bigpID8gdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXJ0TmV3JykgOiB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhcnQnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWZvY3VzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tZmVhdHVyZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGJvdFByb2ZpbGVBdmF0YXIoY2hhbGxlbmdlTWVudUJvdCgpLnByb2ZpbGVJZCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VCb3RTdGF0dXNMYWJlbChjaGFsbGVuZ2VNZW51Qm90KCkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlQm90TmFtZShjaGFsbGVuZ2VNZW51Qm90KCkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8cD57eyB0KGNoYWxsZW5nZU1lbnVCb3QoKS5pbnRyb0tleSkgfX08L3A+XG4gICAgICAgICAgICAgICAgICA8ZW0+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb2FyZExhYmVsJykucmVwbGFjZSgne3NpemV9JywgY2hhbGxlbmdlTWVudUJvdCgpLmJvYXJkU2l6ZSArICd4JyArIGNoYWxsZW5nZU1lbnVCb3QoKS5ib2FyZFNpemUpIH19XG4gICAgICAgICAgICAgICAgICAgICwge3sgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGNoYWxsZW5nZU1lbnVCb3QoKSkgfX1cbiAgICAgICAgICAgICAgICAgIDwvZW0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHNcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPjM8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VNZW51Um91bmRMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCZXN0U3RyZWFrJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmJlc3RXaW5TdHJlYWsgfHwgJy0nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VXaW5SYXRlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VXaW5SYXRlTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3V0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUGF0aCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91dGVIaW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBhdGgnKVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGJvdCBvZiBjaGFsbGVuZ2VMYWRkZXI7IHRyYWNrIGJvdC5pZCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNsZWFyZWRdPVwiY2hhbGxlbmdlTWVudUNsZWFyZWRSb3VuZCgpID49IGJvdC5yb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jdXJyZW50XT1cImNoYWxsZW5nZU1lbnVCb3QoKS5yb3VuZCA9PT0gYm90LnJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWZpbmFsXT1cImJvdC5yb3VuZCA9PT0gY2hhbGxlbmdlTGFkZGVyLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImNoYWxsZW5nZUJvdE5hbWUoYm90KVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGFuZWxcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VZb3VyUGF0aCcpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVlvdXJQYXRoJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNNb2RlV2luUmF0ZXMnKVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbW9kZVdpblJhdGVMYWJlbCgnY2hhbGxlbmdlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPGVtPnt7IG1vZGVTdGF0c0xpbmUoJ2NoYWxsZW5nZScpIH19PC9lbT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0JvdE1vZGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbW9kZVdpblJhdGVMYWJlbCgnYm90JykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPGVtPnt7IG1vZGVTdGF0c0xpbmUoJ2JvdCcpIH19PC9lbT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc09ubGluZVBsYXllcicpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtb2RlV2luUmF0ZUxhYmVsKCdvbmxpbmUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgbW9kZVN0YXRzTGluZSgnb25saW5lJykgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlSGlzdG9yeSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZWNlbnRSdW5zJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChydW4gb2YgY2hhbGxlbmdlSGlzdG9yeSgpOyB0cmFjayBydW4uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IGNoYWxsZW5nZVJ1blN0YXR1c0xhYmVsKHJ1bikgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGFsbGVuZ2VSdW5MaW5lKHJ1bikgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQWNoaWV2ZW1lbnRzUHJldmlldycpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUFjaGlldmVtZW50c1ByZXZpZXcnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRzJylcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGFjaGlldmVtZW50IG9mIGNoYWxsZW5nZUZlYXR1cmVkQWNoaWV2ZW1lbnRzKCk7IHRyYWNrIGFjaGlldmVtZW50LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5pcy11bmxvY2tlZF09XCJhY2hpZXZlbWVudC51bmxvY2tlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGFjaGlldmVtZW50Lmljb24gfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGFjaGlldmVtZW50LnRpdGxlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgYWNoaWV2ZW1lbnQuYm9keSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5IGNoZXNzaW1hbHMtc2Vjb25kYXJ5LS1jb21wYWN0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuUHJvZ3Jlc3NNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NUaXRsZScpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJpdmFscycpXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGJvdCBvZiBjaGFsbGVuZ2VMYWRkZXI7IHRyYWNrIGJvdC5pZCkge1xuICAgICAgICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2xlYXJlZF09XCJjaGFsbGVuZ2VNZW51Q2xlYXJlZFJvdW5kKCkgPj0gYm90LnJvdW5kXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jdXJyZW50XT1cImNoYWxsZW5nZU1lbnVCb3QoKS5yb3VuZCA9PT0gYm90LnJvdW5kXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1maW5hbF09XCJib3Qucm91bmQgPT09IGNoYWxsZW5nZUxhZGRlci5sZW5ndGhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlQm90U3RhdHVzTGFiZWwoYm90KSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlQm90TmFtZShib3QpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxlbT5cbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9hcmRMYWJlbCcpLnJlcGxhY2UoJ3tzaXplfScsIGJvdC5ib2FyZFNpemUgKyAneCcgKyBib3QuYm9hcmRTaXplKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICwge3sgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGJvdCkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9lbT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWdhbWVcIj5cbiAgICAgICAgICBAaWYgKHJlc3VtZVNwbGFzaFZpc2libGUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaFwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2hfX3Bhd1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIPCfkL5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNSZXN1bWVTcGxhc2hUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSZXN1bWVTcGxhc2hCb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8YXJ0aWNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZFwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtYmxhY2stdHVybl09XCJnYW1lKCkuY3VycmVudFR1cm4gPT09ICdibGFjaydcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWZpbmlzaGVkXT1cImdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCdcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLXlvdXItdHVybl09XCJpc0FjdGlvbmFibGVUdXJuKClcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLXdhaXRpbmctdHVybl09XCJpc1dhaXRpbmdGb3JUdXJuKClcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLXRpbWVyLWxvd109XCJpc1R1cm5UaW1lckxvdygpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcFwiPlxuICAgICAgICAgICAgICAgIHt7IHR1cm5TdGF0ZUxhYmVsKCkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB3aW5UaXRsZSgpIDogdHVyblRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgdHVyblN0YXRlQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcFwiPlxuICAgICAgICAgICAgICBAaWYgKGxvZ2dlZEluVXNlcigpKSB7XG4gICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwibG9nZ2VkUGxheWVyQXZhdGFyUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgbG9jYWxQbGF5ZXJBdmF0YXIoKSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQobG9nZ2VkSW5Vc2VyKCkgPyAnbG9nZ2VkUGxheWVyJyA6ICdsb2NhbFBsYXllcicpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbG9nZ2VkUGxheWVyTmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgQGlmIChsb2dnZWRQbGF5ZXJIYW5kbGUoKSkge1xuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxvZ2dlZFBsYXllckhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgQGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgZ2FtZSgpLnN0YXR1cyA9PT0gJ3dhaXRpbmcnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lIGNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgyPnt7IHdhaXRpbmdUaXRsZSgpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cD57eyB3YWl0aW5nQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChjYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKHBlbmRpbmdHdWVzdEF2YXRhclVybCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdXNlci1hdmF0YXIgW3Byb3BzXT1cInBlbmRpbmdHdWVzdEF2YXRhclByb3BzKClcIiAvPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciBjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyLS1pbml0aWFsc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHBlbmRpbmdHdWVzdEluaXRpYWxzKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdFBsYXllcicpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBwZW5kaW5nR3Vlc3ROYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChwZW5kaW5nR3Vlc3RIYW5kbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBwZW5kaW5nR3Vlc3RIYW5kbGUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWdhbWUtY29kZVwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzR2FtZUNvZGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBnYW1lKCkuaWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgQGlmIChjYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAncmVqZWN0J1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCdcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlamVjdE9ubGluZUd1ZXN0KClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAncmVqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVqZWN0R3Vlc3QnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnYWNjZXB0J1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCdcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjY2VwdE9ubGluZUd1ZXN0KClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnYWNjZXB0Jykge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQWNjZXB0R3Vlc3QnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvcHlPbmxpbmVMaW5rKClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NvcHlMaW5rJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2hhcmVPbmxpbmVMaW5rKClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1NoYXJlTGluaycpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXN0YXR1c1wiPlxuICAgICAgICAgICAgQGlmIChpc0NoYWxsZW5nZUFjdGl2ZSgpKSB7XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVJvdW5kTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxpdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlTGl2ZXNMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNNb3ZlcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBnYW1lKCkubW92ZUNvdW50IH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2FwdHVyZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2FwdHVyZXNTY29yZUxhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc3RhdHVzX19zY29yZVwiIFtjbGFzcy5pcy1wb3BdPVwiISFzY29yZVBvcCgpXCI+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUmVzdWx0U2NvcmUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgbGl2ZVNjb3JlTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKHR1cm5TZWNvbmRzUmVtYWluaW5nKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXN0YXR1c19fdGltZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sb3ddPVwiaXNUdXJuVGltZXJMb3coKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLi0tdGltZXItcHJvZ3Jlc3NdPVwidHVyblRpbWVyUHJvZ3Jlc3MoKVwiXG4gICAgICAgICAgICAgICAgcm9sZT1cInRpbWVyXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNUdXJuVGltZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0dXJuVGltZXJMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB0KCdjaGVzc2ltYWxzV2lubmVyJykgOiB0KCdjaGVzc2ltYWxzUG93ZXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyBwbGF5ZXJMYWJlbChnYW1lKCkud2lubmVyID8/ICd3aGl0ZScpIDogdW5sb2NrZWRMYWJlbChnYW1lKCkuY3VycmVudFR1cm4pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnID8gdCgnY2hlc3NpbWFsc1Jlc3VsdCcpIDogdCgnY2hlc3NpbWFsc1JpdmFsJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB3aW5SZWFzb25MYWJlbCgpIDogcGxheWVyTGFiZWwoZ2FtZSgpLmN1cnJlbnRUdXJuID09PSAnd2hpdGUnID8gJ2JsYWNrJyA6ICd3aGl0ZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0NoYWxsZW5nZUluR2FtZVBhbmVsKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZVwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWxcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBjaGFsbGVuZ2VMaXZlQXZhdGFyKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VSb3VuZFN0YWdlTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUxpdmVSaXZhbE5hbWUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPHA+e3sgY2hhbGxlbmdlTGl2ZVJpdmFsTGluZSgpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3NcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VMaXZlc0xhYmVsKCkgfX08L2I+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdHJlYWtNZXRyaWMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VMaXZlU3RyZWFrTGFiZWwoKSB9fTwvYj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0JvYXJkJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlTGl2ZUJvYXJkTGFiZWwoKSB9fTwvYj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1R1cm5UaW1lcicpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxiPnt7IGNoYWxsZW5nZUxpdmVUaW1lckxhYmVsKCkgfX08L2I+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChjaGFsbGVuZ2VUZW5zaW9uTW9tZW50KCk7IGFzIHRlbnNpb24pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiBjaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLS1saXZlXCIgW2NsYXNzLmlzLWNyaXRpY2FsXT1cInRlbnNpb24uY3JpdGljYWxcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IHRlbnNpb24uaWNvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdGVuc2lvbi50aXRsZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8cD57eyB0ZW5zaW9uLmJvZHkgfX08L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd09ubGluZVN0YXR1cygpKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZVxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLXN0YXR1c1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1lcnJvcl09XCJvbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Vycm9yJyB8fCBnYW1lKCkuc3RhdHVzID09PSAnZXhwaXJlZCdcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtc3luY2luZ109XCJvbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Nvbm5lY3RpbmcnIHx8IG1vdmVTeW5jaW5nKClcIlxuICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBvbmxpbmVTdGF0dXNUaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+e3sgb25saW5lU3RhdHVzQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHR1dG9yaWFsTW9kZSgpKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtdHV0b3JpYWxcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdHV0b3JpYWxQcm9ncmVzc0xhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdHV0b3JpYWxUaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+e3sgdHV0b3JpYWxCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImV4aXRUdXRvcmlhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1R1dG9yaWFsRXhpdCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1hcmVuYVwiPlxuICAgICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgICAgI2JvYXJkQW5jaG9yXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC13cmFwXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWZpbmlzaGVkXT1cImdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCdcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtb3JpZW50aW5nXT1cImlzQm9hcmRPcmllbnRpbmcoKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1zeW5jaW5nXT1cIm1vdmVTeW5jaW5nKClcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1ib2FyZC1zaXplXT1cInJldmlld0dhbWUoKS5ib2FyZFNpemVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1mcmFtZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZFwiXG4gICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtYmxhY2stdmlld109XCJyZXZpZXdHYW1lKCkuY3VycmVudFR1cm4gPT09ICdibGFjaydcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXBvd2VyLWFpbWluZ109XCIhIXNlbGVjdGVkQW5pbWFsKClcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQm9hcmQnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGZvciAocm93IG9mIGRpc3BsYXlSb3dzKCk7IHRyYWNrIHJvdykge1xuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgZGlzcGxheUNvbHMoKTsgdHJhY2sgY29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWRhcmstY2VsbF09XCJpc0RhcmtDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZWRnZS1jZWxsXT1cImlzRWRnZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTBdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTFdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTJdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSAyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTNdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSAzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTRdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTVdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSA1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJpc1NlbGVjdGVkQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxlZ2FsXT1cImlzTGVnYWxDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2FwdHVyZV09XCJpc0NhcHR1cmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLXRocmVhdF09XCJpc1RocmVhdGVuZWRDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWNhcHR1cmUtcmVhZHldPVwiaXNDYXB0dXJlUmVhZHlDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd2lubmluZ109XCJpc1dpbm5pbmdDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGFzdF09XCJpc0xhc3RNb3ZlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLW1vdmluZy1zb3VyY2VdPVwiaXNNb3ZpbmdTb3VyY2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLW1vdmUtZWZmZWN0XT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtc291cmNlLWVmZmVjdF09XCJpc01vdmVFZmZlY3RTb3VyY2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWNhcHR1cmUtZWZmZWN0XT1cImlzTW92ZUVmZmVjdENhcHR1cmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWVhZ2xlXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdlYWdsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAnYnVsbCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3Qta2FuZ2Fyb29dPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2thbmdhcm9vJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1saW9uXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdsaW9uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb2plY3Rpb25Nb2RlIHx8IGdhbWUoKS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHwgIWNhblBsYXlDdXJyZW50VHVybigpIHx8ICEhbW92aW5nUGllY2UoKSB8fCBib3RUaGlua2luZygpIHx8IG1vdmVTeW5jaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENlbGwoeyByb3csIGNvbCB9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGwtdGV4dHVyZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1JhbmtMYWJlbChjb2wpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUgY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLXJhbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByYW5rTGFiZWwocm93KSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dGaWxlTGFiZWwocm93KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlIGNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlLS1maWxlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsZUxhYmVsKGNvbCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwaWVjZUF0KHJvdywgY29sKTsgYXMgcGllY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFja109XCJwaWVjZS5jb2xvciA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwbGF5ZXJMYWJlbChwaWVjZS5jb2xvcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19zaWRlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2NvbGxhclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX25lY2tcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChpc0xlZ2FsQ2VsbChyb3csIGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXRhcmdldFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbnRlci1saW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgQGlmIChtb3ZlVHJhaWwoKTsgYXMgdHJhaWwpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXItdHJhaWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jYXB0dXJlXT1cInRyYWlsLmNhcHR1cmVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtZWFnbGVdPVwidHJhaWwuYW5pbWFsID09PSAnZWFnbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWJ1bGxdPVwidHJhaWwuYW5pbWFsID09PSAnYnVsbCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3Qta2FuZ2Fyb29dPVwidHJhaWwuYW5pbWFsID09PSAna2FuZ2Fyb28nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWxpb25dPVwidHJhaWwuYW5pbWFsID09PSAnbGlvbidcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLXhdPVwidHJhaWwueFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwteV09XCJ0cmFpbC55XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC1sZW5ndGhdPVwidHJhaWwubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC1hbmdsZV09XCJ0cmFpbC5hbmdsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChtb3ZpbmdQaWVjZSgpOyBhcyBtb3ZpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW92aW5nLXBpZWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLXJvd109XCJtb3ZpbmcuZnJvbVJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tZnJvbS1jb2xdPVwibW92aW5nLmZyb21Db2xcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvLXJvd109XCJtb3ZpbmcudG9Sb3dcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvLWNvbF09XCJtb3ZpbmcudG9Db2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VcIiBbY2xhc3MuaXMtYmxhY2tdPVwibW92aW5nLmNvbG9yID09PSAnYmxhY2snXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2hlYWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2NvbGxhclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fYmFzZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAocG93ZXJDYWxsb3V0KCk7IGFzIGNhbGxvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlci1jYWxsb3V0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2FwdHVyZV09XCJjYWxsb3V0LmNhcHR1cmVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtZWFnbGVdPVwiY2FsbG91dC5hbmltYWwgPT09ICdlYWdsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJjYWxsb3V0LmFuaW1hbCA9PT0gJ2J1bGwnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWthbmdhcm9vXT1cImNhbGxvdXQuYW5pbWFsID09PSAna2FuZ2Fyb28nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWxpb25dPVwiY2FsbG91dC5hbmltYWwgPT09ICdsaW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGFuaW1hbEdseXBoKGNhbGxvdXQuYW5pbWFsKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjYWxsb3V0LnRpdGxlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2FsbG91dC5ib2R5IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgY2FsbG91dC5pbXBhY3QgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoc2NvcmVQb3AoKTsgYXMgcG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtc2NvcmUtcG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY29tYm9dPVwicG9wLmNvbWJvID4gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tc2NvcmUtcG9wLXhdPVwicG9wLnhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXNjb3JlLXBvcC15XT1cInBvcC55XCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4re3sgcG9wLnNjb3JlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcG9wLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAocG9wLmNvbWJvID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgc2NvcmVDb21ib0xhYmVsKHBvcC5jb21ibykgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlSW50cm9WaXNpYmxlKCkgJiYgYWN0aXZlQ2hhbGxlbmdlQm90KCk7IGFzIGludHJvQm90KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb1wiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBib3RQcm9maWxlQXZhdGFyKGludHJvQm90LnByb2ZpbGVJZCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlUm91bmRTdGFnZUxhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUJvdE5hbWUoaW50cm9Cb3QpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHQoaW50cm9Cb3QuaW50cm9LZXkpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm9hcmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgaW50cm9Cb3QuYm9hcmRTaXplIH19eHt7IGludHJvQm90LmJvYXJkU2l6ZSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0JvdERpZmZpY3VsdHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGludHJvQm90KSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkaXNtaXNzQ2hhbGxlbmdlSW50cm8oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlSW50cm9DdGEnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGRTaG93RmluaXNoZWRPdmVybGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdmljdG9yeV09XCJpc0N1cnJlbnRQbGF5ZXJWaWN0b3J5KClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kZWZlYXRdPVwiaXNDdXJyZW50UGxheWVyRGVmZWF0KClcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmF5c1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uIHJpYmJvbi1hXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24gcmliYm9uLWJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiByaWJib24tY1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzR2FtZU92ZXInKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHdpbm5lckF2YXRhclVybCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9XCJoYXMtYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ3aW5uZXJBdmF0YXJVcmwoKVwiIFthbHRdPVwid2lubmVyRGlzcGxheU5hbWUoKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2VtPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGVtPnt7IHdpbm5lckluaXRpYWxzKCkgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHdpblRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8Yj57eyB3aW5uZXJTaWRlTGFiZWwoKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbW92ZXNTdW1tYXJ5KCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxkbCBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHN0YXQgb2YgcmVzdWx0U3RhdHMoKTsgdHJhY2sgc3RhdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD57eyBzdGF0LmxhYmVsIH19PC9kdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+e3sgc3RhdC52YWx1ZSB9fTwvZGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgQGlmIChvbmxpbmVSb2xlKCkgIT09ICdzcGVjdGF0b3InICYmICFwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlcnNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sb2NrZWRdPVwiIXBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXJlYWR5XT1cInBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVubG9jay1wdWxzZV09XCJwb3dlclVubG9ja1B1bHNlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0FuaW1hbENhcmRzJykgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBwb3dlclBsYXllcigpLnBvd2VyVW5sb2NrZWQgPyB0KCdjaGVzc2ltYWxzVW5sb2NrZWQnKSA6IHQoJ2NoZXNzaW1hbHNMb2NrZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHA+e3sgcG93ZXJQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc0NhcmRzUmVhZHknKSA6IHQoJ2NoZXNzaW1hbHNDYXJkc0xvY2tlZCcpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNhcmRzXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChhbmltYWwgb2YgYW5pbWFsczsgdHJhY2sgYW5pbWFsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEFuaW1hbCgpID09PSBhbmltYWwudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVzZWRdPVwicG93ZXJQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Vc2VQb3dlckNhcmRzKCkgfHwgcG93ZXJQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZCB8fCBpc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbC50eXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFuaW1hbChhbmltYWwpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1hbmltYWwtZmFjZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImFuaW1hbC5hc3NldFNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiYW5pbWFsTGFiZWwoYW5pbWFsLnR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgYW5pbWFsTGFiZWwoYW5pbWFsLnR5cGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgQGlmIChoYXNSZXBsYXlDb250cm9scygpKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVwbGF5XCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUmVwbGF5VGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHJlcGxheVBvc2l0aW9uTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblJldmlld1ByZXZpb3VzKClcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJldmlld1ByZXZpb3VzTW92ZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVwbGF5UHJldmlvdXMnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblJldmlld05leHQoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3TmV4dE1vdmUoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlcGxheU5leHQnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bHRcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB3aW5UaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHdpbkJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0X19zdGF0c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHN0YXQgb2YgcmVzdWx0U3RhdHMoKTsgdHJhY2sgc3RhdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBzdGF0LmxhYmVsIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPGI+e3sgc3RhdC52YWx1ZSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0X19kZXRhaWxcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVzdWx0UG93ZXJzVXNlZCcpLnJlcGxhY2UoJ3twb3dlcnN9JywgcmVzdWx0UG93ZXJzTGFiZWwoKSkgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0X19kZXRhaWxcIj5cbiAgICAgICAgICAgICAgICB7eyByZXN1bHRCZXN0TW92ZUxhYmVsKCkgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICBAaWYgKHNob3VsZFNob3dCb3RSZXBvcnQoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1yZXBvcnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGdhbWVCb3RQcm9maWxlKCk/LmF2YXRhciB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm90UmVwb3J0VGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgYm90UmVwb3J0VGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8cD57eyBib3RSZXBvcnRCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXZpY3RvcnldPVwiY2hhbGxlbmdlTGFzdFdvbigpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kZWZlYXRdPVwiY2hhbGxlbmdlTGFzdFdvbigpID09PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm9cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgY2hhbGxlbmdlU3VtbWFyeUF2YXRhcigpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VSb3VuZFN0YWdlTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VPdXRjb21lVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IGNoYWxsZW5nZU91dGNvbWVCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZUhhc05ld1JlY29yZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1yZWNvcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj7imIU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTmV3UmVjb3JkJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVRlbnNpb25Nb21lbnQoKTsgYXMgdGVuc2lvbikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvblwiIFtjbGFzcy5pcy1jcml0aWNhbF09XCJ0ZW5zaW9uLmNyaXRpY2FsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgdGVuc2lvbi5pY29uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHRlbnNpb24udGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHRlbnNpb24uYm9keSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgY2hhbGxlbmdlU3VtbWFyeUF2YXRhcigpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VSaXZhbFZvaWNlTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VSaXZhbFZvaWNlVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IGNoYWxsZW5nZVJpdmFsVm9pY2VCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzKCk7IGFzIHJvdW5kU3RhdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU2NvcmUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyByb3VuZFN0YXRzLnNjb3JlIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdE1vdmUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyByb3VuZFN0YXRzLmJlc3RNb3ZlU2NvcmUgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQb3dlcnNVc2VkJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgdG90YWxDaGFsbGVuZ2VQb3dlcnMocm91bmRTdGF0cykgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCZXN0Q29tYm8nKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj54e3sgcm91bmRTdGF0cy5iZXN0Q29tYm8gfHwgMSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUNhcHR1cmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgcm91bmRTdGF0cy5jYXB0dXJlcyB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxpdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlTGl2ZXNMYWJlbCgpIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVBoYXNlKCkgPT09ICdiZXR3ZWVuJyAmJiBhY3RpdmVDaGFsbGVuZ2VCb3QoKTsgYXMgbmV4dEJvdCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLW5leHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBib3RQcm9maWxlQXZhdGFyKG5leHRCb3QucHJvZmlsZUlkKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZU5leHRSaXZhbExhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKG5leHRCb3QpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB0KG5leHRCb3QuaW50cm9LZXkpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGVtPnt7IGNoYWxsZW5nZU5leHRSaXZhbEhpbnQoKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChjaGFsbGVuZ2VQaGFzZSgpID09PSAnYmV0d2VlbicpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY29udGludWVDaGFsbGVuZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNoYWxsZW5nZUNvbnRpbnVlTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydENoYWxsZW5nZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBsYXlBZ2FpbicpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoc2VyaWVzU3VtbWFyeSgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc2VyaWVzXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Nlcmllc1RpdGxlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzZXJpZXNTdW1tYXJ5KCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIEBpZiAobGFzdFNlcmllc1dpbm5lckxhYmVsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Nlcmllc0xhc3RXaW5uZXInKS5yZXBsYWNlKCd7cGxheWVyfScsIGxhc3RTZXJpZXNXaW5uZXJMYWJlbCgpKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocmVtYXRjaFN0YXRlKCkgIT09ICdub25lJykge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzXCIgW2NsYXNzLmlzLWluY29taW5nXT1cInJlbWF0Y2hTdGF0ZSgpID09PSAnaW5jb21pbmcnXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIHJlbWF0Y2hTdGF0ZSgpID09PSAnaW5jb21pbmcnXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzUmVtYXRjaEluY29taW5nVGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hlc3NpbWFsc1JlbWF0Y2hSZXF1ZXN0ZWRUaXRsZScpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgcmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoZXNzaW1hbHNSZW1hdGNoSW5jb21pbmdCb2R5JylcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkQm9keScpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoc2VyaWVzU3VtbWFyeSgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc2VyaWVzIGNoZXNzaW1hbHMtc2VyaWVzLS1jb21wYWN0XCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Nlcmllc1RpdGxlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzZXJpZXNTdW1tYXJ5KCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIEBpZiAobGFzdFNlcmllc1dpbm5lckxhYmVsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Nlcmllc0xhc3RXaW5uZXInKS5yZXBsYWNlKCd7cGxheWVyfScsIGxhc3RTZXJpZXNXaW5uZXJMYWJlbCgpKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllciBjaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyXCI+XG4gICAgICAgICAgICAgICAgQGlmIChyZW1hdGNoT3Bwb25lbnRBdmF0YXJVcmwoKSkge1xuICAgICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwicmVtYXRjaE9wcG9uZW50QXZhdGFyUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIgY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhci0taW5pdGlhbHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcmVtYXRjaE9wcG9uZW50SW5pdGlhbHMoKSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNSaXZhbCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcmVtYXRjaE9wcG9uZW50TmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hPcHBvbmVudEhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyByZW1hdGNoT3Bwb25lbnRIYW5kbGUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwicmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgcmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVxdWVzdE9ubGluZVJlbWF0Y2goKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChyZW1hdGNoTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHt7IHJlbWF0Y2hBY3Rpb25MYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJiBjYW5Db250cm9sQ3VycmVudEdhbWUoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXNpZ24oKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXNpZ24nKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKGdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiBjYW5Db250cm9sQ3VycmVudEdhbWUoKSAmJiByZW1hdGNoU3RhdGUoKSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJyZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVtYXRjaFN0YXRlKCkgPT09ICdyZXF1ZXN0ZWQnIHx8IHJlbWF0Y2hMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0T25saW5lUmVtYXRjaCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAocmVtYXRjaExvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7eyByZW1hdGNoQWN0aW9uTGFiZWwoKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgIT09ICdvbmxpbmUnICYmICFpc0NoYWxsZW5nZUFjdGl2ZSgpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdFJlc3RhcnRHYW1lKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdyZXN0YXJ0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiBnYW1lKCkuaWQgJiYgIXByb2plY3Rpb25Nb2RlKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2hhcmVQcm9qZWN0aW9uTGluaygpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1NoYXJlUHJvamVjdGlvbicpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlTW9kZSgpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFuZ2VNb2RlJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFuZ2VHYW1lJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgPC9tYWluPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc1J1bGVzTW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VSdWxlc01vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwidCgnY2hlc3NpbWFsc1J1bGVzVGl0bGUnKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cInQoJ2NoZXNzaW1hbHNSdWxlc1N1YnRpdGxlJylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFthY3Rpb25zXT1cInJ1bGVzQWN0aW9ucygpXCJcbiAgICAgICAgICBhY3Rpb25zQWxpZ249XCJlbmRcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNsb3NlUnVsZXNNb2RhbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc1wiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX2hlcm9cIlxuICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy90dXRvcmlhbC1zYXZhbm5hLmpwZ1wiXG4gICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj4xPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUdvYWxUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZUdvYWxCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+Mjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVNb3ZlVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVNb3ZlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjM8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlUG93ZXJzVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVQb3dlcnNCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+NDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVDYXJkc1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUVhZ2xlJykgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHQoJ2NoZXNzaW1hbHNSdWxlQnVsbCcpIH19PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUthbmdhcm9vJykgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGlvbicpIH19PC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjU8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGltaXRzVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW1pdHNCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC92YWwtbW9kYWwtbGF5b3V0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiaXNTZXR0aW5nc01vZGFsT3BlbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlU2V0dGluZ3NNb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cInQoJ2NoZXNzaW1hbHNTZXR0aW5nc1RpdGxlJylcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdjaGVzc2ltYWxzU2V0dGluZ3NTdWJ0aXRsZScpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbZm9vdGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VTZXR0aW5nc01vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXNldHRpbmdzXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHZhbC10b2dnbGUtaW5wdXQgW3Byb3BzXT1cIm11c2ljVG9nZ2xlUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgIDx2YWwtcmFuZ2UtaW5wdXQgW3Byb3BzXT1cIm11c2ljVm9sdW1lUHJvcHMoKVwiIChyYW5nZUNoYW5nZSk9XCJzZXRNdXNpY1ZvbHVtZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8dmFsLXRvZ2dsZS1pbnB1dCBbcHJvcHNdPVwic2Z4VG9nZ2xlUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgIDx2YWwtcmFuZ2UtaW5wdXQgW3Byb3BzXT1cInNmeFZvbHVtZVByb3BzKClcIiAocmFuZ2VDaGFuZ2UpPVwic2V0U2Z4Vm9sdW1lKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC92YWwtbW9kYWwtbGF5b3V0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiaXNQcm9ncmVzc01vZGFsT3BlbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlUHJvZ3Jlc3NNb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cInQoJ2NoZXNzaW1hbHNQcm9ncmVzc1RpdGxlJylcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NTdWJ0aXRsZScpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbZm9vdGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VQcm9ncmVzc01vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3MtaGVyb1wiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlWW91clBhdGgnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VXaW5SYXRlTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc0hlcm9Cb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzcy1oZXJvX19zdGF0c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCZXN0Um91bmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWQgfHwgJy0nIH19PC9iPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdFN0cmVhaycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxiPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFdpblN0cmVhayB8fCAnLScgfX08L2I+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1RvdGFsU2NvcmUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VTdGF0cygpLnRvdGFsU2NvcmUgfX08L2I+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19wYW5lbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzTW9kZVdpblJhdGVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc01vZGVzSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyBjaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMtLW1vZGFsXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVRpdGxlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtb2RlV2luUmF0ZUxhYmVsKCdjaGFsbGVuZ2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPGVtPnt7IG1vZGVTdGF0c0xpbmUoJ2NoYWxsZW5nZScpIH19PC9lbT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0JvdE1vZGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1vZGVXaW5SYXRlTGFiZWwoJ2JvdCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8ZW0+e3sgbW9kZVN0YXRzTGluZSgnYm90JykgfX08L2VtPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzT25saW5lUGxheWVyJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtb2RlV2luUmF0ZUxhYmVsKCdvbmxpbmUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPGVtPnt7IG1vZGVTdGF0c0xpbmUoJ29ubGluZScpIH19PC9lbT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX3BhbmVsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NDaGFsbGVuZ2VIaW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19fbWV0cmljc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCZXN0Um91bmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZCB8fCAnLScgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJlc3RTdHJlYWsnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFdpblN0cmVhayB8fCAnLScgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlY2VudFJ1bnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuY2hhbGxlbmdlc1BsYXllZCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQ29tcGxldGVkJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmNoYWxsZW5nZXNDb21wbGV0ZWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzQmVzdFJvdW5kU2NvcmUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kU2NvcmUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzVG90YWxTY29yZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS50b3RhbFNjb3JlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19wYW5lbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NQb3dlcnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzUG93ZXJzSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX21ldHJpY3NcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChwb3dlciBvZiBwcm9ncmVzc1Bvd2VyU3RhdHMoKTsgdHJhY2sgcG93ZXIubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgcG93ZXIubGFiZWwgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHBvd2VyLnZhbHVlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19wYW5lbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc0FjaGlldmVtZW50c0hpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWFjaGlldmVtZW50cyBjaGVzc2ltYWxzLWFjaGlldmVtZW50cy0tbW9kYWxcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChhY2hpZXZlbWVudCBvZiBjaGFsbGVuZ2VBY2hpZXZlbWVudHMoKTsgdHJhY2sgYWNoaWV2ZW1lbnQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5pcy11bmxvY2tlZF09XCJhY2hpZXZlbWVudC51bmxvY2tlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8YiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBhY2hpZXZlbWVudC5pY29uIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGFjaGlldmVtZW50LnRpdGxlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGFjaGlldmVtZW50LmJvZHkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgQGlmIChjaGFsbGVuZ2VIaXN0b3J5KCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19fcGFuZWxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZWNlbnRSdW5zJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5IGNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnktLW1vZGFsXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChydW4gb2YgY2hhbGxlbmdlSGlzdG9yeSgpOyB0cmFjayBydW4uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlUnVuU3RhdHVzTGFiZWwocnVuKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBjaGFsbGVuZ2VSdW5MaW5lKHJ1bikgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc0Fib3V0TW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VBYm91dE1vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwidCgnY2hlc3NpbWFsc0Fib3V0VGl0bGUnKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cInQoJ2NoZXNzaW1hbHNBYm91dFN1YnRpdGxlJylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFthY3Rpb25zXT1cImFib3V0QWN0aW9ucygpXCJcbiAgICAgICAgICBhY3Rpb25zQWxpZ249XCJlbmRcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZUFib3V0TW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNsb3NlQWJvdXRNb2RhbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1hYm91dFwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtYWJvdXRfX2xvZ29cIlxuICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9tZW51LWxvZ28uanBnXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNBYm91dEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZHQ+e3sgdCgnY2hlc3NpbWFsc0Fib3V0TGliVmVyc2lvbicpIH19PC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+e3sgdmFsdGVjaENvbXBvbmVudHNWZXJzaW9uIH19PC9kZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2RsPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC92YWwtbW9kYWwtbGF5b3V0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiISFjb25maXJtQWN0aW9uKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiaGFuZGxlQ29uZmlybU1vZGFsRGlzbWlzc2VkKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwiY29uZmlybVRpdGxlKClcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJjb25maXJtQm9keSgpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbYWN0aW9uc109XCJjb25maXJtQWN0aW9ucygpXCJcbiAgICAgICAgICBhY3Rpb25zQWxpZ249XCJlbmRcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZUNvbmZpcm1Nb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiY29uZmlybVBlbmRpbmdBY3Rpb24oJGV2ZW50LmFjdGlvbj8udG9rZW4pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBhbmVsOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogI2ZmZmFmMTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ2KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg2KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWdsYXNzLWhpZ2hsaWdodDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6ICMyZTNhMmM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tdXRlZDogIzUxNjQzZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjEpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlbGVjdGVkOiAjMzdmMjhhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiOiA1NSwgMjQyLCAxMzg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYzogI2Y3ZDQ1YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYjogMjQ3LCAyMTIsIDkwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtaG90OiAjZmZmNTZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtZGVlcDogI2I3N2ExODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXdhcm5pbmc6ICNmNGM1NDI7XG4gICAgICAgIC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYjogMjQ0LCAxOTcsIDY2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW92ZTogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW92ZS1yZ2I6IHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlOiAjMWZjZGIzO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2I6IDMxLCAyMDUsIDE3OTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3Q6ICM4YzZiNGY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0LXJnYjogMTQwLCAxMDcsIDc5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1saWdodDogI2YzZjRlODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtZGFyazogIzdmOTQ0ZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvYXJkLXNoYWRvdzogcmdiYSg0NiwgNTgsIDQ0LCAwLjE0KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWZpbGw6ICNmZmZmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaWRlOiAjZjNlYWRiO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtbGluZTogcmdiYSg4MiwgNjUsIDQ2LCAwLjEyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoODQsIDYyLCAzNCwgMC41MikpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMTJyZW0gcmdiYSg3MiwgNTgsIDM2LCAwLjIyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMzRyZW0gMC40MnJlbSByZ2JhKDcyLCA1OCwgMzYsIDAuMjIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGw6ICMyNDI5MzY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlOiAjMTcxYjI1O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xcmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMikpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjMycmVtIDAuNDJyZW0gcmdiYSgwLCAwLCAwLCAwLjM2KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1nb2xkOiAjYzc5YTQyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZ29sZC1kYXJrOiAjOGE1ZjIyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmc6ICNmZmZkZjc7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1pbm5lci1iZzogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJvcmRlcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjEyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcjogZHJvcC1zaGFkb3coMCAwLjEycmVtIDAuMTZyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtZmlsdGVyOiBncmF5c2NhbGUoMC4yKSBzYXR1cmF0ZSgwLjcyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1pbWctb3BhY2l0eTogMC43MjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxLjEyNXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogbWluKDEwMCUsIDYwcmVtKTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLXNoZWxsIHtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICMxNzIxMTY7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXN1cmZhY2U6ICMwZjE3MGY7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWdsYXNzLWhpZ2hsaWdodDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0MiwgMjMwLCAyMTMsIDAuMik7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6ICNmNmYzZTk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zb2Z0OiByZ2JhKDExMSwgMTIyLCA2MCwgMC4yMik7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1za3k6ICNjMDZhM2Q7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNreS1yZ2I6IDE5MiwgMTA2LCA2MTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lLXJnYjogMTQyLCAxNDcsIDk4O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjZjNmNGU4O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM3Zjk0NGQ7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWJvYXJkLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM0KTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDI0MiwgMjMwLCAyMTMsIDAuMjQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2gge1xuICAgICAgICBvcmRlcjogMDtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA0MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpLCB0cmFuc3BhcmVudCAyMnJlbSksXG4gICAgICAgICAgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpIDkyJSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMC45cmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaF9fcGF3IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IGNsYW1wKDQuNnJlbSwgMTZ2dywgNS42cmVtKTtcbiAgICAgICAgaGVpZ2h0OiBjbGFtcCg0LjZyZW0sIDE2dncsIDUuNnJlbSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNTVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTYpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4yMikpLFxuICAgICAgICAgIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKSA4MiUsIHdoaXRlKTtcbiAgICAgICAgYm9yZGVyOiAwLjEycmVtIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMS4xNXJlbSAyLjZyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjE2KSxcbiAgICAgICAgICAwIDAgMCAwLjQycmVtIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCksXG4gICAgICAgICAgaW5zZXQgMCAtMC4yNXJlbSAwLjZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1yZXN1bWUtcHVsc2UgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjQ1cmVtLCA5dncsIDMuMzVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMjhyZW0gMC4zOHJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTgpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuNTVyZW0sIDV2dywgMi40cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2ggcCB7XG4gICAgICAgIG1heC13aWR0aDogMjRyZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcmVzdW1lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4yNXJlbSkgc2NhbGUoMS4wNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXNwaW4ge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb25saW5lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgb3BhY2l0eTogMC43ODtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIyKTtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1zaGVsbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICMxNzIxMTY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjMGYxNzBmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNlOGVhZGM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM1ZjcwNDA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlOiAjNjZmMmQ3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2I6IDEwMiwgMjQyLCAyMTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0OiAjY2RiZTliO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdC1yZ2I6IDIwNSwgMTkwLCAxNTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsOiAjZmZmYWZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZTogI2YwZTVkNDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmU6IHJnYmEoODIsIDY1LCA0NiwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDg0LCA2MiwgMzQsIDAuNDgpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjEycmVtIHJnYmEoMCwgMCwgMCwgMC4yNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjM0cmVtIDAuNDJyZW0gcmdiYSgwLCAwLCAwLCAwLjMpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGw6ICMyMDI2MzM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlOiAjMTExNjIwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4zNHJlbSAwLjQ0cmVtIHJnYmEoMCwgMCwgMCwgMC41MikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmc6ICNmZmZkZjc7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1pbm5lci1iZzogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJvcmRlcjogcmdiYSgyNDIsIDIzMCwgMjEzLCAwLjI0KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcjogZHJvcC1zaGFkb3coMCAwLjEycmVtIDAuMTZyZW0gcmdiYSgwLCAwLCAwLCAwLjIyKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtZmlsdGVyOlxuICAgICAgICAgIGdyYXlzY2FsZSgwLjMyKVxuICAgICAgICAgIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjU4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDEuMjVyZW0sIDV2dywgMi41cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAxMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MiksIHRyYW5zcGFyZW50IDIwJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZkZjhlZSAwJSwgI2ZmZmZmZiA0MCUsICNlZGYzZGYgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhlcm8sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTExYTEwIDAlLCAjMTcyMTE2IDQ4JSwgIzBmMTcwZiAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBtaW4oMjJyZW0sIDgydncpO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDFyZW0gMi41cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xKSxcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSg0NiwgNTgsIDQ0LCAwLjA4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgbWF4LWhlaWdodDogMTJyZW07XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8gaDEge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMi40cmVtLCA5dncsIDQuNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwLjk1O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHAsXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBwLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwIHAsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZSxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjYyNXJlbTtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMXJlbSwgNHZ3LCAxLjVyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGFuZWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMzc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS0td2FpdGluZyB7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMzQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIsXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19jcmVhdGUgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luID4gc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2Vycm9yIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKSAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2xvYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW0gMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZyBzcGFuIHtcbiAgICAgICAgd2lkdGg6IDFyZW07XG4gICAgICAgIGhlaWdodDogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAwLjE1cmVtIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXNwaW4gMC43NXMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtY29kZSBpbnB1dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjNyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLWNvZGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLWNvZGUgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMzVyZW0sIDZ2dywgMnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5IHtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGlzdG9yeV9fbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbSBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbSBzdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIGVtIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuODZyZW07XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1zZXR0aW5ncyB7XG4gICAgICAgIGdhcDogMC44cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLXNldHRpbmdzX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQge1xuICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjc1cmVtO1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW0gMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjEpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWJsYWNrLXR1cm4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4yOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4xNCksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtZmluaXNoZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNSksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTgpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1maW5pc2hlZCAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MsICMyZGQzNmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMteW91ci10dXJuIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjQ4KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpLFxuICAgICAgICAgIDAgMC45NXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMteW91ci10dXJuIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjMycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtdHVybi1wdWxzZSAxLjQ1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXRpbWVyLWxvdyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjUpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMTJyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKSxcbiAgICAgICAgICAwIDAuOTVyZW0gMnJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtdGltZXItbG93IC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlci1jb250cmFzdCwgI2ZmZmZmZik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy13YWl0aW5nLXR1cm4gLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtdHVybi1wdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCkgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKSBzY2FsZSgxLjAzNSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jb3B5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RhcnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjJyZW0gMC41cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHN0cm9uZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgMy41dncsIDEuMjVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBwIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMTByZW07XG4gICAgICAgIG1heC13aWR0aDogbWluKDE3cmVtLCA0MiUpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjNyZW0gMC41NXJlbSAwLjNyZW0gMC4zNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItbGlnaHQtcmdiLCAyNDQsIDI0NSwgMjQ4KSwgMC43Mik7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCB2YWwtdXNlci1hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGZsZXg6IDAgMCAyLjI1cmVtO1xuICAgICAgICB3aWR0aDogMi4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjI1cmVtO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhci0taW5pdGlhbHMge1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAgLmNoZXNzaW1hbHMtdHVybi1hdmF0YXIge1xuICAgICAgICB3aWR0aDogMi4yNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMDVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNThyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgIG9yZGVyOiA0O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LFxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5LFxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtaG93dG8sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhvd3RvIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMik7XG4gICAgICAgIGJhY2tncm91bmQ6ICMxNzIxMTY7XG4gICAgICAgIGNvbG9yOiAjZjZmM2U5O1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtaG93dG8gcCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtaG93dG8gcCB7XG4gICAgICAgIGNvbG9yOiAjYzhjZmIxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQge1xuICAgICAgICBvcmRlcjogNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41OHJlbSAwLjZyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyBiIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTI7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX2RldGFpbCB7XG4gICAgICAgIG1hcmdpbjogMC4ycmVtIDAgMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43OHJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjQ1cmVtO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMge1xuICAgICAgICBvcmRlcjogMztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjM1cmVtIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuODVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMC45NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA5KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzID4gc3BhbiB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgICAgICB3aWR0aDogMC43MnJlbTtcbiAgICAgICAgaGVpZ2h0OiAwLjcycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cy5pcy1zeW5jaW5nID4gc3BhbiB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1vbmxpbmUtcHVsc2UgOTAwbXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMuaXMtZXJyb3Ige1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4yOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMuaXMtZXJyb3IgPiBzcGFuIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMzhyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc4MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xOHJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNzhyZW0gMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcy0tY29tcGFjdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXJpZXMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkge1xuICAgICAgICBvcmRlcjogNTtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC44cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgPiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMThyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogMi41cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuODVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgb3JkZXI6IDU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzLmlzLWluY29taW5nIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4zOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcmVtYXRjaC1wbGF5ZXIsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c19fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gaDIsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMmZyKSBtaW5tYXgoMTByZW0sIGF1dG8pIGF1dG87XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50IDYyJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC43cmVtIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2hhZG93LXJnYiksIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2NvcHkgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjA1cmVtLCAyLjV2dywgMS4zMnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDMuOHJlbSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQycmVtIDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fbWV0YSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjlyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fcml2YWwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYmFjay1saW5rIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNzJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjlyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMzc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDU0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXJlbSAyLjJyZW0gcmdiYSg3OSwgNTgsIDM1LCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQtLWRlZGljYXRlZCB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oZXJvLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWZvY3VzLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXNlY29uZGFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMWZyKSBtaW5tYXgoMTRyZW0sIDAuOWZyKTtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMjhyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2NvcHkgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5IHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsX19oZWFkaW5nIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZCBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjI1cmVtLCAzLjV2dywgMS45cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIHAsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc4MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjEyNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1mZWF0dXJlIHtcbiAgICAgICAgbWluLWhlaWdodDogOHJlbTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzcmVtO1xuICAgICAgICBoZWlnaHQ6IDNyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBmb250LXNpemU6IDEuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTRyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGVtIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLW5leHQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTZyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fYWN0aW9ucy0taGVybyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3V0ZSxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYW5lbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGUgPiBkaXY6Zmlyc3QtY2hpbGQsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGFuZWxfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlID4gZGl2OmZpcnN0LWNoaWxkID4gc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgcGFkZGluZy1ibG9jazogMC4xcmVtO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoIHNwYW4ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuMTVyZW07XG4gICAgICAgIGhlaWdodDogMi4xNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZyk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wOHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1jbGVhcmVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4zNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1jdXJyZW50IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuNDgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1maW5hbCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itd2FybmluZy1yZ2IsIDI1NSwgMTk2LCA5KSwgMC40OCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm9zdGVyIGFydGljbGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC40OHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgICAgb3BhY2l0eTogMC43ODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWNsZWFyZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjI2KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgYXJ0aWNsZS5pcy1jdXJyZW50IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMzgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWZpbmFsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci13YXJuaW5nLXJnYiwgMjU1LCAxOTYsIDkpLCAwLjM0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWN1cnJlbnQgPiBzcGFuIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE4O1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNDhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyA+IHNwYW4uaXMtdW5sb2NrZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTQpLCB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBiIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEuOXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjlyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyAuaXMtdW5sb2NrZWQgYiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgY29sb3I6ICNmZmZhZjA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzcGFuIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDZyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY3cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnktLWNvbXBhY3Qge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjQ1cmVtO1xuICAgICAgICBwYWRkaW5nLWJsb2NrOiAwLjQ1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3MtaGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDAuOTVmcikgbWlubWF4KDAsIDEuMDVmcik7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC44cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzcy1oZXJvID4gZGl2OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3MtaGVybyBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzcy1oZXJvIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuNDVyZW0sIDV2dywgMi4xcmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzcy1oZXJvIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzcy1oZXJvX19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzcy1oZXJvX19zdGF0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzLWhlcm9fX3N0YXRzIGIge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX3BhbmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzc19fcGFuZWwgPiBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX21ldHJpY3Mge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX21ldHJpY3Mgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4wOHJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOHJlbTtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX21ldHJpY3Mgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19tZXRyaWNzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb2RlLXdpbnJhdGVzLS1tb2RhbCxcbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cy0tbW9kYWwge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcy0tbW9kYWwge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cy0tbW9kYWwge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5LS1tb2RhbCB7XG4gICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC4ycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeSBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeSBiIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC42cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjEyKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5LmlzLXZpY3Rvcnkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjMyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkuaXMtZGVmZWF0IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVybyxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvID4gc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpO1xuICAgICAgICBmb250LXNpemU6IDEuNTVyZW07XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8gZGl2LFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLXZvaWNlIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xMnJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVybyBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeSBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVybyBwLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLXZvaWNlIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLXZvaWNlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOTVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSA+IHNwYW4ge1xuICAgICAgICB3aWR0aDogMi4zNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjM1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJlY29yZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW0gMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yZWNvcmQgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxLjQ1cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuNDVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGNvbG9yOiAjZmZmYWYwO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yZWNvcmQgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC45cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24uaXMtY3JpdGljYWwge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4zOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjE2KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjI1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLmlzLWNyaXRpY2FsID4gc3BhbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uIHAge1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19zdGF0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjhyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHMgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLW5leHQgZW0ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdGlwIHAsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbGVhcm4tbW9yZSB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RhcnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC43NXJlbSAxLjZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUsXG4gICAgICAuY2hlc3NpbWFscy1tb2RlLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICBvcmRlcjogMztcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgYnV0dG9uLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogMy44NzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW0gMC42NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTMpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNDIpICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXI6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiBhdXRvIDAgMDtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgaGVpZ2h0OiAwLjIycmVtO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCh2YXIoLS10aW1lci1wcm9ncmVzcywgMSkpO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDE4MG1zIGxpbmVhciwgYmFja2dyb3VuZCAxODBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3RpbWVyLmlzLWxvdyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjU4KSAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xNiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKSAhaW1wb3J0YW50O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtdHVybi1wdWxzZSA4MjBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lci5pcy1sb3c6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3RpbWVyLmlzLWxvdyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fc2NvcmUuaXMtcG9wIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuNDIpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXNjb3JlLXB1bHNlIDYyMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3RpbWVyIHN0cm9uZyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmUge1xuICAgICAgICBvcmRlcjogNDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4xZnIpIG1pbm1heCgwLCAxLjM1ZnIpO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjEzKSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjdyZW07XG4gICAgICAgIGhlaWdodDogMi43cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNik7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjM1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE4O1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDNyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNHJlbSAwLjQ1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyBiIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24tLWxpdmUge1xuICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoOS41cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgICAgICdhdmF0YXIgdGl0bGUnXG4gICAgICAgICAgJ2F2YXRhciBib2R5J1xuICAgICAgICAgICdhdmF0YXIgdGVuZGVuY3knO1xuICAgICAgICBjb2x1bW4tZ2FwOiAwLjU1cmVtO1xuICAgICAgICByb3ctZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiA+IHNwYW4ge1xuICAgICAgICBncmlkLWFyZWE6IGF2YXRhcjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiBzdHJvbmcge1xuICAgICAgICBncmlkLWFyZWE6IHRpdGxlO1xuICAgICAgICBhbGlnbi1zZWxmOiBlbmQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gc21hbGwge1xuICAgICAgICBncmlkLWFyZWE6IGJvZHk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gcCB7XG4gICAgICAgIGdyaWQtYXJlYTogdGVuZGVuY3k7XG4gICAgICAgIG1hcmdpbjogMC4xMnJlbSAwIDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNiksXG4gICAgICAgICAgMCAwLjc1cmVtIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjk1cmVtLCAyLjV2dywgMS4ycmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1yYWRpdXM6IG1pbigwLjg1cmVtLCAxNHB4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLW9yaWVudGluZyAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1vcmllbnQtYm9hcmQgMzIwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcC5pcy1maW5pc2hlZCB7XG4gICAgICAgIG92ZXJmbG93LXg6IHZpc2libGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgZmxleDogMCAxIDU4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDU4cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIGNvbnRhaW46IHBhaW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKTtcbiAgICAgICAgY2xpcC1wYXRoOiBpbnNldCgwIHJvdW5kIHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKSk7XG4gICAgICAgIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQod2hpdGUsIGJsYWNrKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAxNiUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDgyJSA3OCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50IDIyJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMzIlIDY4JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN0b25lLXJnYiksIDAuMDUpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDY2JSAzNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksXG4gICAgICAgICAgMCAwLjg1cmVtIDIuMXJlbSB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAuaXMtc3luY2luZyAuY2hlc3NpbWFscy1ib2FyZCB7XG4gICAgICAgIGN1cnNvcjogd2FpdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpIDc4JSwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlLS1yYW5rIHtcbiAgICAgICAgdG9wOiAwLjJyZW07XG4gICAgICAgIGxlZnQ6IDAuMjRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tZmlsZSB7XG4gICAgICAgIHJpZ2h0OiAwLjI0cmVtO1xuICAgICAgICBib3R0b206IDAuMThyZW07XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1vcmllbnQtYm9hcmQge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC43MjtcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoMC4wNnJlbSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4NSk7XG4gICAgICAgIH1cblxuICAgICAgICA1MiUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuOTI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMTIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoMCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZW50ZXItbGluZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXRvcDogMC4wOHJlbSBkYXNoZWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC41Nik7XG4gICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDAuMjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNikpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuODgpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuaXMtY2FwdHVyZSB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODYpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtZWFnbGUge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMTIwLCAyMTAsIDI1NSwgMC41NCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1idWxsIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgxODgsIDEzMSwgNzYsIDAuODYpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMTg4LCAxMzEsIDc2LCAwLjM2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWthbmdhcm9vIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgxNzQsIDEyNCwgMjU1LCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDE3NCwgMTI0LCAyNTUsIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtbGlvbiB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMjU1LCAyMjEsIDEyMCwgMC44OCk7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgyNTUsIDE5MCwgNTYsIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbCA+IHNwYW4ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogdmFyKC0tdHJhaWwteSk7XG4gICAgICAgIGxlZnQ6IHZhcigtLXRyYWlsLXgpO1xuICAgICAgICB3aWR0aDogdmFyKC0tdHJhaWwtbGVuZ3RoKTtcbiAgICAgICAgaGVpZ2h0OiAwLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tdHJhaWwtY29sb3IpIDQyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzVyZW0gdmFyKC0tdHJhaWwtZ2xvdyksXG4gICAgICAgICAgMCAwIDEuNDVyZW0gdmFyKC0tdHJhaWwtZ2xvdyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCk7XG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgNTAlO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItdHJhaWwgNzIwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWVhZ2xlID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMC4yOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpIDQ0JSwgcmdiYSgxMjAsIDIxMCwgMjU1LCAwLjU4KSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQgMCAwLjdyZW0sIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NikgMC43cmVtIDAuOTJyZW0pO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1lYWdsZS10cmFpbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWJ1bGwgPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAwLjcycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MikgMCAwLjE4cmVtLCB0cmFuc3BhcmVudCAwLjE4cmVtIDAuNDJyZW0pLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg2KSk7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBjaGVzc2ltYWxzLWJ1bGwtdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1rYW5nYXJvbyA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDFyZW07XG4gICAgICAgIGJvcmRlci10b3A6IDAuMTZyZW0gZGFzaGVkIHZhcigtLXRyYWlsLWNvbG9yKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDAuOHJlbSB2YXIoLS10cmFpbC1nbG93KSk7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBjaGVzc2ltYWxzLWthbmdhcm9vLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtbGlvbiA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDAuNjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tdHJhaWwtY29sb3IpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpKSxcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDExNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KSAwIDAuMTJyZW0sIHRyYW5zcGFyZW50IDAuMTJyZW0gMC4zNHJlbSk7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBjaGVzc2ltYWxzLWxpb24tdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci10cmFpbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCk7XG4gICAgICAgIH1cblxuICAgICAgICAyOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjcyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZWFnbGUtdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApIHNrZXdYKC0xMGRlZyk7XG4gICAgICAgIH1cblxuICAgICAgICAzMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjgyKSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEuMDUpIHNrZXdYKC0xMGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWJ1bGwtdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApIHNjYWxlWSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM4JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNykgc2NhbGVZKDEuMTgpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpIHNjYWxlWSgwLjgyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMta2FuZ2Fyb28tdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuNHJlbSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMzQlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS4ycmVtKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC42Mik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWxpb24tdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNiUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjQpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC43Nik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS4xKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQge1xuICAgICAgICAtLXBvd2VyLWFjY2VudC1yZ2I6IHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIGJvdHRvbTogMC43NXJlbTtcbiAgICAgICAgei1pbmRleDogNztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IG1pbigyMXJlbSwgY2FsYygxMDAlIC0gMXJlbSkpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLXBvd2VyLWFjY2VudC1yZ2IpLCAwLjQ4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjU2cmVtIDAuNjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1wb3dlci1hY2NlbnQtcmdiKSwgMC4yKSwgcmdiYSh2YXIoLS1wb3dlci1hY2NlbnQtcmdiKSwgMC4wNikgNTQlLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMC44NXJlbSAxLjdyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNoYWRvdy1yZ2IpLCAwLjIpLFxuICAgICAgICAgIDAgMCAxLjE1cmVtIHJnYmEodmFyKC0tcG93ZXItYWNjZW50LXJnYiksIDAuMjgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQgOTUwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItY2FsbG91dC5pcy1jYXB0dXJlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjU4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjIpLCByZ2JhKHZhcigtLXBvd2VyLWFjY2VudC1yZ2IpLCAwLjEpIDU4JSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAuOXJlbSAxLjdyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNoYWRvdy1yZ2IpLCAwLjI0KSxcbiAgICAgICAgICAwIDAgMS4yNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItY2FsbG91dC5lZmZlY3QtZWFnbGUge1xuICAgICAgICAtLXBvd2VyLWFjY2VudC1yZ2I6IDc5LCAxNjksIDIxODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItY2FsbG91dC5lZmZlY3QtYnVsbCB7XG4gICAgICAgIC0tcG93ZXItYWNjZW50LXJnYjogMjIwLCAxMTYsIDU4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci1jYWxsb3V0LmVmZmVjdC1rYW5nYXJvbyB7XG4gICAgICAgIC0tcG93ZXItYWNjZW50LXJnYjogMTM5LCAxMTIsIDIyMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItY2FsbG91dC5lZmZlY3QtbGlvbiB7XG4gICAgICAgIC0tcG93ZXItYWNjZW50LXJnYjogMjIxLCAxNTgsIDI2O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci1jYWxsb3V0ID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjNyZW07XG4gICAgICAgIGhlaWdodDogMi4zcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLXBvd2VyLWFjY2VudC1yZ2IpLCAwLjMyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXBvd2VyLWFjY2VudC1yZ2IpLCAwLjE2KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA2cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItY2FsbG91dCBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci1jYWxsb3V0IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45cmVtLCAzdncsIDEuMDhyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItY2FsbG91dCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjY4cmVtLCAyLjR2dywgMC43OHJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLWNhbGxvdXQgZW0ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogNC4ycmVtO1xuICAgICAgICBtYXgtd2lkdGg6IDYuNHJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMS42NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1wb3dlci1hY2NlbnQtcmdiKSwgMC4yOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjIycmVtIDAuNDhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tcG93ZXItYWNjZW50LXJnYiksIDAuMTUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcG93ZXItY2FsbG91dCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDAuN3JlbSkgc2NhbGUoMC45Nik7XG4gICAgICAgIH1cblxuICAgICAgICAxOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCkgc2NhbGUoMS4wMik7XG4gICAgICAgIH1cblxuICAgICAgICA3MiUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC0wLjM1cmVtKSBzY2FsZSgwLjk4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zY29yZS1wb3Age1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IHZhcigtLXNjb3JlLXBvcC14KTtcbiAgICAgICAgdG9wOiB2YXIoLS1zY29yZS1wb3AteSk7XG4gICAgICAgIHotaW5kZXg6IDg7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjA0cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDUuNXJlbTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oOXJlbSwgNDR2dyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC05MiUpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOTVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDJyZW0gMC41OHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuOTIpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjg0KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmYWYwO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMC45cmVtIDEuOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI0KSxcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI4KTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1zY29yZS1wb3AgMTA1MG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNjb3JlLXBvcC5pcy1jb21ibyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itd2FybmluZy1yZ2IsIDI1NSwgMTk2LCA5KSwgMC41OCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itd2FybmluZy1yZ2IsIDI1NSwgMTk2LCA5KSwgMC45NCksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuODYpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2NvcmUtcG9wIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wOHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zY29yZS1wb3Agc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLXNjb3JlLXBvcCBiIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IDAuNjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2NvcmUtcG9wIGIge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4wOHJlbSAwLjMycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtc2NvcmUtcG9wIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTYyJSkgc2NhbGUoMC44Mik7XG4gICAgICAgIH1cblxuICAgICAgICAxOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTk2JSkgc2NhbGUoMS4wNSk7XG4gICAgICAgIH1cblxuICAgICAgICA3MiUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTExMiUpIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtMTMyJSkgc2NhbGUoMC45Nik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXNjb3JlLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQyJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEuMDM1KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA3O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgwLjc1cmVtLCA0dncsIDEuMzVyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM2JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI0KSwgdHJhbnNwYXJlbnQgMzQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIwLCAxMiwgMjIsIDAuNDgpLCByZ2JhKDgsIDE4LCAxMywgMC4zNCkpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMS41cHgpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvLWluIDI2MG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICB3aWR0aDogbWluKDE4cmVtLCA5MiUpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMzQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAxLjFyZW0gMi4zcmVtIHJnYmEoMCwgMCwgMCwgMC4yNCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDRyZW07XG4gICAgICAgIGhlaWdodDogNHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDI0JSwgdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNik7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpLFxuICAgICAgICAgIDAgMC43cmVtIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBmb250LXNpemU6IDIuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NvcHkgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI0O1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fZmFjdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC4zOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBiIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8gLmNoZXNzaW1hbHMtcHJpbWFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNDVyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvLWluIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM0JSwgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjM0KSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMzQpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjAsIDEyLCAyMiwgMC44OCksIHJnYmEoOCwgMTgsIDEzLCAwLjc4KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzQlLCByZ2JhKDE0MywgMTY4LCAyMDYsIDAuMjYpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSg3MiwgODYsIDExNSwgMC40MiksIHRyYW5zcGFyZW50IDQyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg5LCAxMiwgMjAsIDAuOSksIHJnYmEoMjgsIDMwLCA0MywgMC44KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXk6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAyMCUgMzAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc1JSAyNSUsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43KSAwIDAuMXJlbSwgdHJhbnNwYXJlbnQgMC4xMnJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA2OCUgNzIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjU0KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgNzglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4NCUgNjYlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzgpIDAgMC4wNnJlbSwgdHJhbnNwYXJlbnQgMC4wOHJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNCUgNjQlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwLjcyO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtdmljdG9yeS1zcGFya3MgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmF5cyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0xOCU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoXG4gICAgICAgICAgICBmcm9tIDhkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAwIDdkZWcsXG4gICAgICAgICAgICByZ2JhKDI1NSwgMjI2LCAxMjksIDAuMTYpIDdkZWcgMTFkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAxMWRlZyAyMmRlZ1xuICAgICAgICAgICk7XG4gICAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmF5cyA4cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JheXMge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KFxuICAgICAgICAgICAgZnJvbSA4ZGVnLFxuICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCA4ZGVnLFxuICAgICAgICAgICAgcmdiYSgxODAsIDIwNCwgMjQwLCAwLjEpIDhkZWcgMTJkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAxMmRlZyAyNGRlZ1xuICAgICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTJzO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTIwJTtcbiAgICAgICAgd2lkdGg6IDAuNDJyZW07XG4gICAgICAgIGhlaWdodDogNTQlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43MiksIHRyYW5zcGFyZW50KTtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1yaWJib24tYW5nbGUsIDEyZGVnKSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmliYm9uIDIuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCByZ2JhKDE4MCwgMjA0LCAyNDAsIDAuNDIpLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNDg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbi5yaWJib24tYSB7XG4gICAgICAgIGxlZnQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IC0xOGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1iIHtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAtLXJpYmJvbi1hbmdsZTogOGRlZztcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAzMjBtcztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1jIHtcbiAgICAgICAgcmlnaHQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IDIwZGVnO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDY0MG1zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5ID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjMycmVtIDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS42NXJlbSwgOHZ3LCAzcmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMS4yNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBjbGFtcCgzcmVtLCAxNHZ3LCA0LjZyZW0pO1xuICAgICAgICBoZWlnaHQ6IGNsYW1wKDNyZW0sIDE0dncsIDQuNnJlbSk7XG4gICAgICAgIGJvcmRlcjogMC4xNnJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmUyODEsICNiOTg0MzYpO1xuICAgICAgICBjb2xvcjogIzJkMjQxMjtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjFyZW0sIDV2dywgMS42NXJlbSk7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC4xMiksXG4gICAgICAgICAgMCAxcmVtIDJyZW0gcmdiYSgwLCAwLCAwLCAwLjI2KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWZpbmFsZS1tZWRhbCAxLjhzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCBlbSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNkOWUyZWYsICM2OTc1OGUpO1xuICAgICAgICBjb2xvcjogIzE4MjAzMjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMTgwLCAyMDQsIDI0MCwgMC4xKSxcbiAgICAgICAgICAwIDFyZW0gMnJlbSByZ2JhKDAsIDAsIDAsIDAuMzIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGIge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgc21hbGwge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjlyZW0sIDN2dywgMS4xcmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgd2lkdGg6IG1pbigyNnJlbSwgOTIlKTtcbiAgICAgICAgbWFyZ2luOiAwLjJyZW0gYXV0byAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC40MnJlbSAwLjQ2cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkdCxcbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGRkIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZHQge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY4KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjUycmVtLCAyLjF2dywgMC42NnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGRkIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC42OHJlbSwgMi44dncsIDAuODhyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtdmljdG9yeS1zcGFya3Mge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC40NjtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMC45OCk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuOTU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjM1cmVtKSBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLXJheXMge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLXJpYmJvbiB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjE4O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cmVtKSByb3RhdGUodmFyKC0tcmliYm9uLWFuZ2xlKSk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEuNHJlbSkgcm90YXRlKHZhcigtLXJpYmJvbi1hbmdsZSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1maW5hbGUtbWVkYWwge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMThyZW0pIHNjYWxlKDEuMDQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtYmc6IHZhcigtLWNoZXNzaW1hbHMtY2VsbC1saWdodCk7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMjYlIDI0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA3OCUgNzYlLCByZ2JhKDYxLCA1NCwgMzYsIDAuMDYpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCksIHRyYW5zcGFyZW50IDUyJSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA0KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYmFja2dyb3VuZCAxNjBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTYwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTYwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbDo6YmVmb3JlLFxuICAgICAgLmNoZXNzaW1hbHMtY2VsbDo6YWZ0ZXIge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBvcGFjaXR5OiAwLjQyO1xuICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14LCAyOCUpIHZhcigtLXdlYXIteSwgMzIlKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgdHJhbnNwYXJlbnQgMTclKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB2YXIoLS13ZWFyLXgyLCA3NCUpIHZhcigtLXdlYXIteTIsIDY4JSksIHJnYmEoNzUsIDY2LCA0MiwgMC4wOSksIHRyYW5zcGFyZW50IDI1JSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh2YXIoLS13ZWFyLWFuZ2xlLCAyNmRlZyksIHJnYmEoNzUsIDY2LCA0MiwgMC4wNDUpIDAgMXB4LCB0cmFuc3BhcmVudCAxcHggMC41MnJlbSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSwgdHJhbnNwYXJlbnQgNDIlLCByZ2JhKDUyLCA0NCwgMjgsIDAuMDQ1KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwLjA4cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc1LCA2NiwgNDIsIDAuMDUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjE4cmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAuMDhyZW0gMC4wOHJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCksXG4gICAgICAgICAgaW5zZXQgLTAuMDhyZW0gLTAuMDhyZW0gMCByZ2JhKDUyLCA0NCwgMjgsIDAuMDQ1KTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtZWRnZS1jZWxsIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTY7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14LCAyOCUpIHZhcigtLXdlYXIteSwgMzIlKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB2YXIoLS13ZWFyLXgyLCA3NCUpIHZhcigtLXdlYXIteTIsIDY4JSksIHJnYmEoNzUsIDY2LCA0MiwgMC4xNCksIHRyYW5zcGFyZW50IDI4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg3MCwgNTIsIDI4LCAwLjA1NSksIHRyYW5zcGFyZW50IDQ0JSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA5KSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh2YXIoLS13ZWFyLWFuZ2xlLCAyNmRlZyksIHJnYmEoNzUsIDY2LCA0MiwgMC4wNTUpIDAgMXB4LCB0cmFuc3BhcmVudCAxcHggMC40OHJlbSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci0wIHtcbiAgICAgICAgLS13ZWFyLXg6IDIyJTtcbiAgICAgICAgLS13ZWFyLXk6IDI0JTtcbiAgICAgICAgLS13ZWFyLXgyOiA3OCU7XG4gICAgICAgIC0td2Vhci15MjogNzIlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDE4ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMSB7XG4gICAgICAgIC0td2Vhci14OiA2NCU7XG4gICAgICAgIC0td2Vhci15OiAxOCU7XG4gICAgICAgIC0td2Vhci14MjogMzAlO1xuICAgICAgICAtLXdlYXIteTI6IDc2JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtMjRkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci0yIHtcbiAgICAgICAgLS13ZWFyLXg6IDQyJTtcbiAgICAgICAgLS13ZWFyLXk6IDU4JTtcbiAgICAgICAgLS13ZWFyLXgyOiA4MiU7XG4gICAgICAgIC0td2Vhci15MjogMjYlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDQyZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMyB7XG4gICAgICAgIC0td2Vhci14OiA3NCU7XG4gICAgICAgIC0td2Vhci15OiA2OCU7XG4gICAgICAgIC0td2Vhci14MjogMjQlO1xuICAgICAgICAtLXdlYXIteTI6IDI4JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtMTJkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci00IHtcbiAgICAgICAgLS13ZWFyLXg6IDM0JTtcbiAgICAgICAgLS13ZWFyLXk6IDE4JTtcbiAgICAgICAgLS13ZWFyLXgyOiA2MiU7XG4gICAgICAgIC0td2Vhci15MjogODQlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDY0ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItNSB7XG4gICAgICAgIC0td2Vhci14OiAxOCU7XG4gICAgICAgIC0td2Vhci15OiA3MCU7XG4gICAgICAgIC0td2Vhci14MjogNzAlO1xuICAgICAgICAtLXdlYXIteTI6IDM0JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtNDhkZWc7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuMzQ7XG4gICAgICAgIG1peC1ibGVuZC1tb2RlOiBzb2Z0LWxpZ2h0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWRhcmstY2VsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtZGFyayk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtc2VsZWN0ZWQge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjI4KSAwIDM2JSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkKSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNDIpLFxuICAgICAgICAgIDAgMCAwLjU1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjU2KSxcbiAgICAgICAgICAwIDAgMS41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLmlzLXBvd2VyLWFpbWluZyAuY2hlc3NpbWFscy1jZWxsLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM4KSAwIDM0JSwgdHJhbnNwYXJlbnQgNjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMyJSAyNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCksIHRyYW5zcGFyZW50IDI4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuOHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjYpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjlyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNSksXG4gICAgICAgICAgMCAwIDAuN3JlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC42MiksXG4gICAgICAgICAgMCAwIDEuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC5pcy1wb3dlci1haW1pbmcgLmNoZXNzaW1hbHMtY2VsbC5pcy1sZWdhbDpub3QoLmlzLWNhcHR1cmUpOjphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuOTQpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjcycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC42cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQuaXMtcG93ZXItYWltaW5nIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtaG90KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksXG4gICAgICAgICAgMCAwIDAuOTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNjIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWxlZ2FsOm5vdCguaXMtY2FwdHVyZSk6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMTMlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuOCUpIHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtbW92ZSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNTVyZW07XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwLjc0O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1sYXN0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtbGVnYWwpOm5vdCguaXMtY2FwdHVyZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1sYXN0LXJnYiksIDAuMTYpIDAgNDIlLCB0cmFuc3BhcmVudCA2OCUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZSB7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjQpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMTQpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC44NCksXG4gICAgICAgICAgaW5zZXQgMCAwIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjI0KSxcbiAgICAgICAgICAwIDAgMC45NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtYXVyYSAxLjM1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiA0JTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNjRyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUyKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNCksIHRyYW5zcGFyZW50IDU4JSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTQyJSkgc2NhbGUoMC45KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtc3dlZXAgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiA4JTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgYm9yZGVyOiBtYXgoMnB4LCAxLjU1JSkgc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC45KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC42MnJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC43NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjUpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjcycmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLWNhcHR1cmUtcmVhZHk6bm90KC5pcy1zZWxlY3RlZCk6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMTYlO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuNDUlKSBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC43Mik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjY1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy13aW5uaW5nLmlzLWxlZ2FsOm5vdCguaXMtY2FwdHVyZSk6OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjkyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC40OCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNThyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy13aW5uaW5nIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtd2FybmluZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4yMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjIpLFxuICAgICAgICAgIDAgMCAwLjk1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjE2KSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIGZpbHRlcjpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjUyKSlcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLXRocmVhdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWNhcHR1cmUpIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgZmlsdGVyOlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAwLjM4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTIpKVxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSk6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwLjI2cmVtO1xuICAgICAgICByaWdodDogMC4yNnJlbTtcbiAgICAgICAgei1pbmRleDogNDtcbiAgICAgICAgd2lkdGg6IDAuNDhyZW07XG4gICAgICAgIGhlaWdodDogMC40OHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuOTYpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjE4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuMjIpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtYXVyYSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNzgpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yKSxcbiAgICAgICAgICAgIDAgMCAwLjY0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzIpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMjIpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuOTYpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDEuMzRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCksXG4gICAgICAgICAgICAwIDAgMS4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1jYXB0dXJlLXN3ZWVwIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MiUpIHNjYWxlKDAuODgpO1xuICAgICAgICB9XG5cbiAgICAgICAgNDIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjY2O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQ4JSkgc2NhbGUoMC45Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtc291cmNlLWVmZmVjdDpub3QoLmlzLW1vdmluZy1zb3VyY2UpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4xMikgMCAzNCUsIHRyYW5zcGFyZW50IDY0JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Qge1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yMikgMCAzNCUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODYpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNiksXG4gICAgICAgICAgMCAwIDEuMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMTJyZW07XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40MiksIHRyYW5zcGFyZW50IDU4JSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzIpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItaW1wYWN0IDcwMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0OjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMjhyZW07XG4gICAgICAgIHotaW5kZXg6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXI6IDAuMTRyZW0gc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41OHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNiksXG4gICAgICAgICAgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItZnJhbWUgODYwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtY2FwdHVyZS1lZmZlY3Qge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQgNzgwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3QtZWFnbGU6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQgMTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzgpIDQ4JSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzYpLCB0cmFuc3BhcmVudCA2MiUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1idWxsOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkgMCAwLjE2cmVtLCB0cmFuc3BhcmVudCAwLjE2cmVtIDAuMzRyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zOCksIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWthbmdhcm9vOjpiZWZvcmUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDQyJSA0NCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1OCUgNTYlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCA2NCUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1saW9uOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NiksIHRyYW5zcGFyZW50LCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLWltcGFjdCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nikgcm90YXRlKDJkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMykgcm90YXRlKDhkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci1mcmFtZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE2KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM1JSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjM1KSBicmlnaHRuZXNzKDEuMDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbW92aW5nLXNvdXJjZSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDY4JTtcbiAgICAgICAgaGVpZ2h0OiA3NCU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZmlsbDogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1saW5lOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utb3V0bGluZTogcmdiYSg4MiwgNjUsIDQ2LCAwLjM0KTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDY7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC8gdmFyKC0tYm9hcmQtc2l6ZSkpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpXG4gICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1waWVjZS10cmF2ZWwgMzYwbXMgY3ViaWMtYmV6aWVyKDAuMiwgMC44MiwgMC4yNCwgMSkgYm90aDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICA2OCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1yb3cpICogMTAwJSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHNjYWxlKDEuMDcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX3NpZGUsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9faGVhZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19iYXNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3JkZXI6IG1heCgxcHgsIDEuMjUlKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19zaWRlIHtcbiAgICAgICAgdG9wOiA0NiU7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIHdpZHRoOiA1OCU7XG4gICAgICAgIGhlaWdodDogNDElO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzNCUgMzQlIDEyJSAxMiU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDk2ZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGUpIDAgMzQlLCB0cmFuc3BhcmVudCAzNSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigyMiUgMCwgNzglIDAsIDk2JSAxMDAlLCA0JSAxMDAlKTtcbiAgICAgICAgb3BhY2l0eTogMC45MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICB0b3A6IDElO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICB3aWR0aDogNDglO1xuICAgICAgICBoZWlnaHQ6IDQwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMCUgMjIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpIDAgMTMlLCB0cmFuc3BhcmVudCAxNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yOCkgMCAzNCUsIHRyYW5zcGFyZW50IDM1JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xOHJlbSAtMC4xMnJlbSAwIHJnYmEoODIsIDY1LCA0NiwgMC4wNiksXG4gICAgICAgICAgaW5zZXQgMCAtMXB4IDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2UuaXMtYmxhY2sgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAuMThyZW0gLTAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpLFxuICAgICAgICAgIGluc2V0IDAgLTFweCAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIge1xuICAgICAgICB0b3A6IDM3JTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgd2lkdGg6IDcyJTtcbiAgICAgICAgaGVpZ2h0OiAxNSU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNmNWNkNzcgMCUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZCkgNTUlLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyaykgMTAwJSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZC1kYXJrKSA3MiUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjgpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMDhyZW0gMCByZ2JhKDcwLCA0NiwgMTgsIDAuMjIpLFxuICAgICAgICAgIDAgMC4wOHJlbSAwLjE4cmVtIHJnYmEoNzAsIDQ2LCAxOCwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19uZWNrIHtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIHdpZHRoOiA1MiU7XG4gICAgICAgIGhlaWdodDogMzElO1xuICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTYlIDAsIDg0JSAwLCAxMDAlIDEwMCUsIDAgMTAwJSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDI4JSwgdHJhbnNwYXJlbnQgMjklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utc2lkZSkpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xMnJlbSAwLjFyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fYmFzZSB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgd2lkdGg6IDg2JTtcbiAgICAgICAgaGVpZ2h0OiAxNyU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNDJyZW0gMC40MnJlbSAwLjIycmVtIDAuMjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDE4JSwgdHJhbnNwYXJlbnQgMTklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA5MiUsICNmZmZmZmYpLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMXJlbSAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIHdpZHRoOiAxNiU7XG4gICAgICAgIGhlaWdodDogMTYlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb3ZlKTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMC45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tb3ZlLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDE4MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxODBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxODBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yOHJlbSAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMTYlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDc2JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHRyYW5zcGFyZW50IDU2JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yOCksXG4gICAgICAgICAgMCAwIDEuMzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDgpLFxuICAgICAgICAgIDAgMC45cmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTgpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YmVmb3JlLFxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0wLjVyZW07XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDI0JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuODgpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc4JSAyMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDg2JSA2MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjcyKSAwIDAuMDZyZW0sIHRyYW5zcGFyZW50IDAuMDhyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjglIDc4JSwgcmdiYSgyNTUsIDI0NSwgMTExLCAwLjc4KSAwIDAuMDdyZW0sIHRyYW5zcGFyZW50IDAuMDlyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTQlIDglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjgpIDAgMC4wNXJlbSwgdHJhbnNwYXJlbnQgMC4wN3JlbSk7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzTWFnaWNQYXJ0aWNsZXMgMS44cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAxMmRlZywgdHJhbnNwYXJlbnQgMCAxNmRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMikgMTZkZWcgMjJkZWcsIHRyYW5zcGFyZW50IDIyZGVnIDQ0ZGVnKTtcbiAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgZmlsdGVyOiBibHVyKDAuMDRyZW0pO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNNYWdpY0F1cmEgMy4ycyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIHtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMy4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM0cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpLCB0cmFuc3BhcmVudCA1NSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmcpO1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkgOTIlLCAjMDAwKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXIpLFxuICAgICAgICAgIDAgMC40NXJlbSAxLjE1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtaW5uZXItYmcpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSg0NiwgNTgsIDQ0LCAwLjA4KTtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXJlYWR5IC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSAyMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDYyJSA3OCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIyKSwgdHJhbnNwYXJlbnQgNDglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnKTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDk0JSwgIzAwMCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICAwIDAgMC44NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4zNCksXG4gICAgICAgICAgMCAwLjc1cmVtIDEuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWZpbHRlcik7XG4gICAgICAgIG9wYWNpdHk6IDAuODY7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nLFxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXVzZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nIHtcbiAgICAgICAgb3BhY2l0eTogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtaW1nLW9wYWNpdHkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ2KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpLFxuICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXVubG9jay1wdWxzZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc1Bvd2Vyc1VubG9ja2VkIDExODBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtdW5sb2NrLXB1bHNlIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIHtcbiAgICAgICAgYW5pbWF0aW9uOlxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlcklnbml0ZSA3NjBtcyBlYXNlLW91dCBib3RoLFxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCA3NjBtcyBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJQdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNQb3dlcnNVbmxvY2tlZCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAwIDAgMCAwLjE4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI4KSxcbiAgICAgICAgICAgIDAgMCAyLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMzgpLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xNik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJJZ25pdGUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTYpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQyJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjA4cmVtKSBzY2FsZSgxLjAyNSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjQpLFxuICAgICAgICAgICAgMCAwIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40Nik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc01hZ2ljUGFydGljbGVzIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNTQ7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTQpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4xOHJlbSkgc2NhbGUoMS4wMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzTWFnaWNBdXJhIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgb3JkZXI6IDY7XG4gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMTAwJSwgMTJyZW0pLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIG1heC13aWR0aDogbWluKDk2dncsIDkwcmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYWN0aW9ucyxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLW9ubGluZSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzOiBtaW4oMC42MjVyZW0sIDEwcHgpO1xuICAgICAgICB3aWR0aDogbWluKDk2dncsIDgydmgsIDU4cmVtKTtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCxcbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5LFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgICAgd2lkdGg6IG1pbigxMDAlLCA0NHJlbSk7XG4gICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDExcmVtLCAwLjY4ZnIpIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNldHRpbmdzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXR0aW5ncyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjlyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0X19sb2dvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBtaW4oMzByZW0sIDEwMCUpO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEyODAgLyA2OTg7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDJyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sIHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZGwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMC45NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZHQsXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkZCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZHQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgdmFyKC0tY2hlc3NpbWFscy1tdXRlZCkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19faGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxNiAvIDk7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjM1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDIuMjVyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMmYyYTNhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBhcnRpY2xlID4gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHVsIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGxpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2ZjZhN2EpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LFxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy42MjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxLjEyNXJlbSAyLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LmlzLXdvcmtpbmcsXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkuaXMtd29ya2luZyB7XG4gICAgICAgIGN1cnNvcjogd2FpdDtcbiAgICAgICAgb3BhY2l0eTogMC44MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXIge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyOiAwLjE0cmVtIHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1zcGluIDcyMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLXNpemUsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCB7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhlcm8sXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1mb2N1cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXNlY29uZGFyeSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZCB7XG4gICAgICAgICAgcGFkZGluZzogMC44NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wcm9ncmVzcy1oZXJvIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzLWhlcm9fX3N0YXRzLFxuICAgICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMtLW1vZGFsIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0bztcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC45NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHkge1xuICAgICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZzogMC4xOHJlbSAwLjVyZW07XG4gICAgICAgICAgZm9udC1zaXplOiAwLjZyZW07XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDQ1ZW07XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjkycmVtLCA0LjR2dywgMS4xMnJlbSk7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgcCB7XG4gICAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCB7XG4gICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICBwYWRkaW5nOiAwLjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIge1xuICAgICAgICAgIGZsZXg6IDAgMCAxLjhyZW07XG4gICAgICAgICAgd2lkdGg6IDEuOHJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QgOjpuZy1kZWVwIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCAuY2hlc3NpbWFscy10dXJuLWF2YXRhciB7XG4gICAgICAgICAgd2lkdGg6IDEuOHJlbTtcbiAgICAgICAgICBtaW4td2lkdGg6IDEuOHJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICAgIGdhcDogMC4zcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIGRpdiB7XG4gICAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDIuMnJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjgycmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMzRyZW0gMC4zcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHNtYWxsIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNThyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuNzhyZW0sIDMuMnZ3LCAwLjk0cmVtKTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCA+IHNwYW4ge1xuICAgICAgICAgIHdpZHRoOiAyLjM1cmVtO1xuICAgICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgcCB7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgICBnYXA6IDAuM3JlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIHNwYW4ge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDIuMzVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zMnJlbSAwLjM2cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc21hbGwge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41NnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIGIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyB7XG4gICAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY2FyZCB7XG4gICAgICAgICAgZ2FwOiAwLjQycmVtO1xuICAgICAgICAgIHdpZHRoOiBtaW4oMTUuNXJlbSwgOTQlKTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjZyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhciB7XG4gICAgICAgICAgd2lkdGg6IDMuMDVyZW07XG4gICAgICAgICAgaGVpZ2h0OiAzLjA1cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS42MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4wMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBiIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzRyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8gLmNoZXNzaW1hbHMtcHJpbWFyeSB7XG4gICAgICAgICAgbWluLWhlaWdodDogMi4xNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXRpcCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LFxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXksXG4gICAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMsXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHtcbiAgICAgICAgICBnYXA6IDAuMnJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjc1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwIHN0cm9uZyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHN0cm9uZyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHN0cm9uZyxcbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgICAgZmxleDogMSAxIDhyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXJnaW4taW5saW5lOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMge1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZyB7XG4gICAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgaDIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZyBzcGFuIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjIycmVtIDAuNDhyZW07XG4gICAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgICBnYXA6IDAuMjVyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMy45NXJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMzRyZW0gMC4yMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgICB3aWR0aDogMi4zNXJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDIuMzVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4yNnJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNjJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZCB7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1yYWRpdXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNThyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmJlZm9yZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjphZnRlcixcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3QsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0OjpiZWZvcmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0OjphZnRlcixcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtY2FwdHVyZS1lZmZlY3QsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vdmluZy1waWVjZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtc2NvcmUtcG9wLFxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8sXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fc2NvcmUuaXMtcG9wIHtcbiAgICAgICAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vdmluZy1waWVjZSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoZXNzaW1hbHNHYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvbmxpbmUgPSBpbmplY3QoQ2hlc3NpbWFsc09ubGluZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYWxsZW5nZVByb2dyZXNzID0gaW5qZWN0KENoZXNzaW1hbHNDaGFsbGVuZ2VQcm9ncmVzc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFwdGljcyA9IGluamVjdChIYXB0aWNzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgYm9hcmRPcmllbnRhdGlvblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3ZlQW5pbWF0aW9uVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGJvdFR1cm5UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgb25saW5lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGlzdG9yeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhpc3RvcnlVaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoaXN0b3J5V2F0Y2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUVmZmVjdFN0YXJ0VGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdmVFZmZlY3RDbGVhclRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzY29yZVBvcENsZWFyVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHBvd2VyVW5sb2NrVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZUludHJvVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHR1cm5UaW1lckludGVydmFsOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgdHVyblRpbWVyS2V5ID0gJyc7XG4gIHByaXZhdGUgdHVyblRpbWVyRGVhZGxpbmUgPSAwO1xuICBwcml2YXRlIHR1cm5UaW1lckR1cmF0aW9uID0gMDtcbiAgcHJpdmF0ZSB0dXJuVGltZXJFeHBpcmVkS2V5ID0gJyc7XG4gIHByaXZhdGUgcGVuZGluZ09ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9wZW5pbmdPbmxpbmVHYW1lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvcGVuZWRPbmxpbmVHYW1lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0T3V0Y29tZVNvdW5kS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbGFzdENoYWxsZW5nZUhhbmRsZWRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0TW9kZVN0YXRzSGFuZGxlZEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2JvYXJkQW5jaG9yJykgcHJpdmF0ZSBib2FyZEFuY2hvcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHJlYWRvbmx5IGJvYXJkU2l6ZXM6IENoZXNzaW1hbHNCb2FyZFNpemVbXSA9IFs2LCA4XTtcbiAgcmVhZG9ubHkgbG9jYWxNb2RlczogQ2hlc3NpbWFsc0xvY2FsTW9kZVtdID0gWydvbmUtZGV2aWNlJywgJ2JvdCddO1xuICByZWFkb25seSBib3REaWZmaWN1bHRpZXM6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5W10gPSBbJ2Vhc3knLCAnbm9ybWFsJywgJ2hhcmQnXTtcbiAgcmVhZG9ubHkgYm90UHJvZmlsZXMgPSBDSEVTU0lNQUxTX0JPVF9QUk9GSUxFUztcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFkZGVyID0gQ0hFU1NJTUFMU19DSEFMTEVOR0VfTEFEREVSO1xuICByZWFkb25seSBhbmltYWxzID0gQU5JTUFMUztcbiAgcmVhZG9ubHkgdmFsdGVjaENvbXBvbmVudHNWZXJzaW9uID0gVkFMVEVDSF9DT01QT05FTlRTX1ZFUlNJT047XG4gIHJlYWRvbmx5IHNjcmVlbiA9IHNpZ25hbDwnaG9tZScgfCAnY2hhbGxlbmdlJyB8ICdnYW1lJz4oJ2hvbWUnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb2FyZFNpemUgPSBzaWduYWw8Q2hlc3NpbWFsc0JvYXJkU2l6ZT4oNik7XG4gIHJlYWRvbmx5IHNlbGVjdGVkTG9jYWxNb2RlID0gc2lnbmFsPENoZXNzaW1hbHNMb2NhbE1vZGU+KCdvbmUtZGV2aWNlJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm90RGlmZmljdWx0eSA9IHNpZ25hbDxDaGVzc2ltYWxzQm90RGlmZmljdWx0eT4oJ25vcm1hbCcpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdFByb2ZpbGVJZCA9IHNpZ25hbDxDaGVzc2ltYWxzQm90UHJvZmlsZUlkPignaHVudGVyJyk7XG4gIHJlYWRvbmx5IGdhbWVCb3RQcm9maWxlSWQgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZ2FtZSA9IHNpZ25hbDxDaGVzc2ltYWxzR2FtZVN0YXRlPihjcmVhdGVDaGVzc2ltYWxzR2FtZSg2KSk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVBoYXNlID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VQaGFzZT4oJ2lkbGUnKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlUnVuID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVN0YXRzID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0cz4odGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpO1xuICByZWFkb25seSBjaGFsbGVuZ2VIaXN0b3J5ID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSdW5bXT4oW10pO1xuICByZWFkb25seSBhY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4gPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVJ1biB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFzdFdvbiA9IHNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VMYXN0Qm90ID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VOZXdSZWNvcmQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjaGFsbGVuZ2VJbnRyb1Zpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSB0dXJuU2Vjb25kc1JlbWFpbmluZyA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkUGllY2VJZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQW5pbWFsID0gc2lnbmFsPENoZXNzaW1hbHNBbmltYWxUeXBlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpc1J1bGVzTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNTZXR0aW5nc01vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzUHJvZ3Jlc3NNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc0Fib3V0TW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxNb2RlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNCb2FyZE9yaWVudGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vdmluZ1BpZWNlID0gc2lnbmFsPENoZXNzaW1hbHNNb3ZpbmdQaWVjZVZpZXcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG1vdmVFZmZlY3QgPSBzaWduYWw8Q2hlc3NpbWFsc01vdmVFZmZlY3RWaWV3IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBzY29yZVBvcCA9IHNpZ25hbDxDaGVzc2ltYWxzU2NvcmVQb3BWaWV3IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBwb3dlclVubG9ja1B1bHNlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92ZVRyYWlsID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc01vdmVUcmFpbFZpZXcgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICBpZiAoIWVmZmVjdCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGJvYXJkU2l6ZSA9IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZTtcbiAgICBjb25zdCBmcm9tQ29sID0gdGhpcy5kaXNwbGF5Q29sSW5kZXgoZWZmZWN0LmZyb20uY29sKSArIDAuNTtcbiAgICBjb25zdCBmcm9tUm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgoZWZmZWN0LmZyb20ucm93KSArIDAuNTtcbiAgICBjb25zdCB0b0NvbCA9IHRoaXMuZGlzcGxheUNvbEluZGV4KGVmZmVjdC50by5jb2wpICsgMC41O1xuICAgIGNvbnN0IHRvUm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgoZWZmZWN0LnRvLnJvdykgKyAwLjU7XG4gICAgY29uc3QgZnJvbVggPSAoZnJvbUNvbCAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZnJvbVkgPSAoZnJvbVJvdyAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZHggPSAoKHRvQ29sIC0gZnJvbUNvbCkgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGR5ID0gKCh0b1JvdyAtIGZyb21Sb3cpIC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heCgxMCwgTWF0aC5oeXBvdChkeCwgZHkpKTtcbiAgICBjb25zdCBhbmdsZSA9IE1hdGguYXRhbjIoZHksIGR4KSAqICgxODAgLyBNYXRoLlBJKTtcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBgJHtmcm9tWH0lYCxcbiAgICAgIHk6IGAke2Zyb21ZfSVgLFxuICAgICAgbGVuZ3RoOiBgJHtsZW5ndGh9JWAsXG4gICAgICBhbmdsZTogYCR7YW5nbGV9ZGVnYCxcbiAgICAgIGFuaW1hbDogZWZmZWN0LmFuaW1hbCxcbiAgICAgIGNhcHR1cmU6IGVmZmVjdC5jYXB0dXJlLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBwb3dlckNhbGxvdXQgPSBjb21wdXRlZDxDaGVzc2ltYWxzUG93ZXJDYWxsb3V0VmlldyB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIGlmICghZWZmZWN0Py5hbmltYWwpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgYW5pbWFsS2V5ID0gdGhpcy5jYXBpdGFsaXplKGVmZmVjdC5hbmltYWwpO1xuICAgIGNvbnN0IHJlc3VsdEtleSA9IGVmZmVjdC5jYXB0dXJlID8gJ0NhcHR1cmUnIDogJyc7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0aGlzLnQoYGNoZXNzaW1hbHNQb3dlckNhbGxvdXQke2FuaW1hbEtleX0ke3Jlc3VsdEtleX1UaXRsZWApLFxuICAgICAgYm9keTogdGhpcy50KGBjaGVzc2ltYWxzUG93ZXJDYWxsb3V0JHthbmltYWxLZXl9JHtyZXN1bHRLZXl9Qm9keWApLFxuICAgICAgaW1wYWN0OiB0aGlzLnQoZWZmZWN0LmNhcHR1cmUgPyAnY2hlc3NpbWFsc1Bvd2VyQ2FsbG91dENhcHR1cmVJbXBhY3QnIDogJ2NoZXNzaW1hbHNQb3dlckNhbGxvdXRNb3ZlSW1wYWN0JyksXG4gICAgICBhbmltYWw6IGVmZmVjdC5hbmltYWwsXG4gICAgICBjYXB0dXJlOiBlZmZlY3QuY2FwdHVyZSxcbiAgICB9O1xuICB9KTtcbiAgcmVhZG9ubHkgYm90VGhpbmtpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjb25maXJtQWN0aW9uID0gc2lnbmFsPENoZXNzaW1hbHNDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1lZEFjdGlvbiA9IHNpZ25hbDxDaGVzc2ltYWxzQ29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25saW5lSm9pbkNvZGUgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBvbmxpbmVMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgb25saW5lQWN0aW9uID0gc2lnbmFsPCdjcmVhdGUnIHwgJ2pvaW4nIHwgJ2FjY2VwdCcgfCAncmVqZWN0JyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25saW5lRXJyb3IgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBvbmxpbmVVaWQgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVIaXN0b3J5ID0gc2lnbmFsPENoZXNzaW1hbHNIaXN0b3J5RW50cnlbXT4oW10pO1xuICByZWFkb25seSByZXN1bWVTcGxhc2hWaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgcmVtYXRjaExvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZlU3luY2luZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG9ubGluZUNvbm5lY3Rpb25TdGF0ZSA9IHNpZ25hbDwnaWRsZScgfCAnY29ubmVjdGluZycgfCAnbGl2ZScgfCAnZXJyb3InPignaWRsZScpO1xuICByZWFkb25seSByZXZpZXdJbmRleCA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGxvZ2dlZEluVXNlciA9IHRoaXMuYXV0aC51c2VyO1xuICByZWFkb25seSBsb2NhbFBsYXllclByb2ZpbGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKSk7XG4gIHJlYWRvbmx5IGxvY2FsUGxheWVyQXZhdGFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKT8uYXZhdGFyID8/ICfwn4yfJyk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllck5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gICAgaWYgKHVzZXI/Lm5hbWU/LnRyaW0oKSkgcmV0dXJuIHVzZXIubmFtZS50cmltKCk7XG4gICAgaWYgKHVzZXI/LmVtYWlsPy50cmltKCkpIHJldHVybiB1c2VyLmVtYWlsLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcy5wbGF5ZXJQcm9maWxlcy5kaXNwbGF5TmFtZSh0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpLCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJykpO1xuICB9KTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVySGFuZGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgIGNvbnN0IGhhbmRsZSA9IHVzZXI/LmhhbmRsZT8udHJpbSgpO1xuICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGUuc3RhcnRzV2l0aCgnQCcpID8gaGFuZGxlIDogYEAke2hhbmRsZX1gO1xuICAgIGlmICh1c2VyPy51c2VySWQpIHJldHVybiBgSUQgJHt0aGlzLnNob3J0VXNlcklkKHVzZXIudXNlcklkKX1gO1xuICAgIGNvbnN0IHByb2ZpbGVJZCA9IHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCk/LmlkO1xuICAgIHJldHVybiBwcm9maWxlSWQgPyBgSUQgJHt0aGlzLnNob3J0VXNlcklkKHByb2ZpbGVJZCl9YCA6ICcnO1xuICB9KTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVyQXZhdGFyUHJvcHMgPSBjb21wdXRlZDxVc2VyQXZhdGFyTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgdXNlcjogdGhpcy5sb2dnZWRJblVzZXIoKSxcbiAgICBzaXplOiAnc21hbGwnLFxuICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIGNzc0NsYXNzOiAnY2hlc3NpbWFscy10dXJuLWF2YXRhcicsXG4gIH0pKTtcbiAgcmVhZG9ubHkgbXVzaWNFbmFibGVkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLmF1ZGlvLm11c2ljRW5hYmxlZCgpLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBzZnhFbmFibGVkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLmF1ZGlvLnNmeEVuYWJsZWQoKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgbXVzaWNWb2x1bWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKE1hdGgucm91bmQodGhpcy5hdWRpby5tdXNpY1ZvbHVtZSgpICogMTAwKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgc2Z4Vm9sdW1lQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChNYXRoLnJvdW5kKHRoaXMuYXVkaW8uc2Z4Vm9sdW1lKCkgKiAxMDApLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBtdXNpY1RvZ2dsZVByb3BzID0gY29tcHV0ZWQ8VG9nZ2xlSW5wdXRNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBjb250cm9sOiB0aGlzLm11c2ljRW5hYmxlZENvbnRyb2wsXG4gICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc011c2ljRW5hYmxlZCcpLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAganVzdGlmeTogJ3NwYWNlLWJldHdlZW4nLFxuICB9KSk7XG4gIHJlYWRvbmx5IHNmeFRvZ2dsZVByb3BzID0gY29tcHV0ZWQ8VG9nZ2xlSW5wdXRNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBjb250cm9sOiB0aGlzLnNmeEVuYWJsZWRDb250cm9sLFxuICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNTZnhFbmFibGVkJyksXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBqdXN0aWZ5OiAnc3BhY2UtYmV0d2VlbicsXG4gIH0pKTtcbiAgcmVhZG9ubHkgbXVzaWNWb2x1bWVQcm9wcyA9IGNvbXB1dGVkPFJhbmdlSW5wdXRNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBjb250cm9sOiB0aGlzLm11c2ljVm9sdW1lQ29udHJvbCxcbiAgICBsYWJlbDogYCR7dGhpcy50KCdjaGVzc2ltYWxzTXVzaWNWb2x1bWUnKX0gwrcgJHtNYXRoLnJvdW5kKHRoaXMuYXVkaW8ubXVzaWNWb2x1bWUoKSAqIDEwMCl9JWAsXG4gICAgbWluOiAwLFxuICAgIG1heDogMTAwLFxuICAgIHN0ZXA6IDUsXG4gICAgcGluOiB0cnVlLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc3RhcnRMYWJlbDogJzAnLFxuICAgIGVuZExhYmVsOiAnMTAwJyxcbiAgICBwaW5Gb3JtYXR0ZXI6ICh2YWx1ZSkgPT4gYCR7dmFsdWV9JWAsXG4gIH0pKTtcbiAgcmVhZG9ubHkgc2Z4Vm9sdW1lUHJvcHMgPSBjb21wdXRlZDxSYW5nZUlucHV0TWV0YWRhdGE+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5zZnhWb2x1bWVDb250cm9sLFxuICAgIGxhYmVsOiBgJHt0aGlzLnQoJ2NoZXNzaW1hbHNTZnhWb2x1bWUnKX0gwrcgJHtNYXRoLnJvdW5kKHRoaXMuYXVkaW8uc2Z4Vm9sdW1lKCkgKiAxMDApfSVgLFxuICAgIG1pbjogMCxcbiAgICBtYXg6IDEwMCxcbiAgICBzdGVwOiA1LFxuICAgIHBpbjogdHJ1ZSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIHN0YXJ0TGFiZWw6ICcwJyxcbiAgICBlbmRMYWJlbDogJzEwMCcsXG4gICAgcGluRm9ybWF0dGVyOiAodmFsdWUpID0+IGAke3ZhbHVlfSVgLFxuICB9KSk7XG4gIHJlYWRvbmx5IGF2YWlsYWJsZUJvdFByb2ZpbGVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvdFByb2ZpbGVzLmZpbHRlcigocHJvZmlsZSkgPT4gcHJvZmlsZS5kaWZmaWN1bHR5ID09PSB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eSgpKSxcbiAgKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb3RQcm9maWxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQoKSksXG4gICk7XG4gIHJlYWRvbmx5IGdhbWVCb3RQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGVJZCA9IHRoaXMuZ2FtZUJvdFByb2ZpbGVJZCgpO1xuICAgIHJldHVybiBwcm9maWxlSWQgPyB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IHByb2ZpbGVJZCkgOiB1bmRlZmluZWQ7XG4gIH0pO1xuICByZWFkb25seSBhY3RpdmVDaGFsbGVuZ2VCb3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1bikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbTWF0aC5tYXgoMCwgcnVuLmN1cnJlbnRSb3VuZCAtIDEpXTtcbiAgfSk7XG4gIHJlYWRvbmx5IHJlc3VtYWJsZUNoYWxsZW5nZVJ1biA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bigpO1xuICAgIHJldHVybiB0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKHJ1bikgPyBydW4gOiB1bmRlZmluZWQ7XG4gIH0pO1xuXG4gIEBJbnB1dCgpIHNldCBvbmxpbmVHYW1lSWQodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBnYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodmFsdWUgPz8gJycpO1xuICAgIGlmICghZ2FtZUlkKSByZXR1cm47XG4gICAgdGhpcy5wZW5kaW5nT25saW5lR2FtZUlkID0gZ2FtZUlkO1xuICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCAhPT0gZ2FtZUlkICYmIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCAhPT0gZ2FtZUlkKSB7XG4gICAgICB2b2lkIHRoaXMub3Blbk9ubGluZUdhbWUoZ2FtZUlkKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgbWluaUdhbWVzUm91dGUgPSAnL21pbmktZ2FtZXMnO1xuICBASW5wdXQoKSBwcm9qZWN0aW9uTW9kZSA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHJlcGxheUVudHJpZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5tb3ZlSGlzdG9yeSA/PyBbXSk7XG4gIHJlYWRvbmx5IGFjdGl2ZVJldmlld0luZGV4ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLnJlcGxheUVudHJpZXMoKTtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IGVudHJpZXMubGVuZ3RoIDw9IDEpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJldmlld0luZGV4KCkgPz8gZW50cmllcy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChpbmRleCwgMCksIGVudHJpZXMubGVuZ3RoIC0gMSk7XG4gIH0pO1xuICByZWFkb25seSBoYXNSZXBsYXlDb250cm9scyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKSAhPT0gdW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmV2aWV3R2FtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICBjb25zdCBlbnRyeSA9IGluZGV4ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0aGlzLnJlcGxheUVudHJpZXMoKVtpbmRleF07XG4gICAgcmV0dXJuIGVudHJ5ID8gY3JlYXRlQ2hlc3NpbWFsc1Jldmlld1N0YXRlKHRoaXMuZ2FtZSgpLCBlbnRyeSkgOiB0aGlzLmdhbWUoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRQbGF5ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5wbGF5ZXJzW3RoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuXSk7XG4gIHJlYWRvbmx5IHBvd2VyUGxheWVyQ29sb3IgPSBjb21wdXRlZCgoKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICAgIHJldHVybiByb2xlID09PSAnd2hpdGUnIHx8IHJvbGUgPT09ICdibGFjaycgPyByb2xlIDogZ2FtZS5jdXJyZW50VHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHJldHVybiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgcG93ZXJQbGF5ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5wbGF5ZXJzW3RoaXMucG93ZXJQbGF5ZXJDb2xvcigpXSk7XG4gIHJlYWRvbmx5IGNhblVzZVBvd2VyQ2FyZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBnYW1lLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyAmJlxuICAgICAgdGhpcy5wb3dlclBsYXllckNvbG9yKCkgPT09IGdhbWUuY3VycmVudFR1cm4gJiZcbiAgICAgIHRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgJiZcbiAgICAgICF0aGlzLmJvdFRoaW5raW5nKCkgJiZcbiAgICAgICF0aGlzLm1vdmluZ1BpZWNlKClcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgbGVnYWxNb3ZlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwaWVjZUlkID0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgICBpZiAoIXBpZWNlSWQpIHJldHVybiBbXTtcbiAgICBpZiAoIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkpIHJldHVybiBbXTtcbiAgICBjb25zdCBtb3ZlcyA9IGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHRoaXMuZ2FtZSgpLCBwaWVjZUlkLCB0aGlzLnNlbGVjdGVkQW5pbWFsKCkpO1xuICAgIGNvbnN0IGV4cGVjdGVkID0gdGhpcy50dXRvcmlhbEV4cGVjdGVkTW92ZSgpO1xuICAgIGlmICghZXhwZWN0ZWQpIHJldHVybiBtb3ZlcztcbiAgICByZXR1cm4gbW92ZXMuZmlsdGVyKFxuICAgICAgKG1vdmUpID0+XG4gICAgICAgIG1vdmUucGllY2VJZCA9PT0gZXhwZWN0ZWQucGllY2VJZCAmJlxuICAgICAgICBwb3NpdGlvbktleShtb3ZlLnRvKSA9PT0gcG9zaXRpb25LZXkoZXhwZWN0ZWQudG8pICYmXG4gICAgICAgIChtb3ZlLmFuaW1hbCA/PyB1bmRlZmluZWQpID09PSAoZXhwZWN0ZWQuYW5pbWFsID8/IHVuZGVmaW5lZCksXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxlZ2FsTW92ZUtleXMgPSBjb21wdXRlZCgoKSA9PiBuZXcgU2V0KHRoaXMubGVnYWxNb3ZlcygpLm1hcCgobW92ZSkgPT4gcG9zaXRpb25LZXkobW92ZS50bykpKSk7XG4gIHJlYWRvbmx5IGNhcHR1cmVNb3ZlS2V5cyA9IGNvbXB1dGVkKFxuICAgICgpID0+IG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkuZmlsdGVyKChtb3ZlKSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpbm5pbmdNb3ZlS2V5cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgcHJvbW90aW9uUm93ID0gZ2FtZS5jdXJyZW50VHVybiA9PT0gJ3doaXRlJyA/IDAgOiBnYW1lLmJvYXJkU2l6ZSAtIDE7XG4gICAgcmV0dXJuIG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkuZmlsdGVyKChtb3ZlKSA9PiBtb3ZlLnRvLnJvdyA9PT0gcHJvbW90aW9uUm93KS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSk7XG4gIH0pO1xuICByZWFkb25seSBjYXB0dXJlUmVhZHlQaWVjZUlkcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKSAhPT0gdW5kZWZpbmVkIHx8IGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgbW92ZXMgPSB0aGlzLmJhc2ljTW92ZXNGb3JDb2xvcihnYW1lLCBnYW1lLmN1cnJlbnRUdXJuKS5maWx0ZXIoKG1vdmUpID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpO1xuICAgIHJldHVybiBuZXcgU2V0KG1vdmVzLm1hcCgobW92ZSkgPT4gbW92ZS5waWVjZUlkKSk7XG4gIH0pO1xuICByZWFkb25seSB0aHJlYXRlbmVkUGllY2VJZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmICh0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgIT09IHVuZGVmaW5lZCB8fCBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IG9wcG9uZW50ID0gZ2FtZS5jdXJyZW50VHVybiA9PT0gJ3doaXRlJyA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIGNvbnN0IHRocmVhdGVuZWQgPSB0aGlzLmJhc2ljTW92ZXNGb3JDb2xvcihnYW1lLCBvcHBvbmVudClcbiAgICAgIC5tYXAoKG1vdmUpID0+IG1vdmUuY2FwdHVyZXNQaWVjZUlkKVxuICAgICAgLmZpbHRlcigocGllY2VJZCk6IHBpZWNlSWQgaXMgc3RyaW5nID0+ICEhcGllY2VJZCk7XG4gICAgcmV0dXJuIG5ldyBTZXQodGhyZWF0ZW5lZCk7XG4gIH0pO1xuICByZWFkb25seSBpc0FjdGlvbmFibGVUdXJuID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiYgdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSAmJiAhdGhpcy5ib3RUaGlua2luZygpICYmICF0aGlzLm1vdmVTeW5jaW5nKCksXG4gICk7XG4gIHJlYWRvbmx5IGlzV2FpdGluZ0ZvclR1cm4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyAmJiAhdGhpcy5pc0FjdGlvbmFibGVUdXJuKCksXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkUm93cyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KSk7XG4gIHJlYWRvbmx5IGJvYXJkQ29scyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KSk7XG4gIHJlYWRvbmx5IGRpc3BsYXlSb3dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gWy4uLnRoaXMuYm9hcmRSb3dzKCldLnJldmVyc2UoKSA6IHRoaXMuYm9hcmRSb3dzKCksXG4gICk7XG4gIHJlYWRvbmx5IGRpc3BsYXlDb2xzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gWy4uLnRoaXMuYm9hcmRDb2xzKCldLnJldmVyc2UoKSA6IHRoaXMuYm9hcmRDb2xzKCksXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkT3JpZW50YXRpb25Db2xvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAodGhpcy50dXRvcmlhbE1vZGUoKSkgcmV0dXJuICd3aGl0ZSc7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB1aWQgPyB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudFNpZGUoZ2FtZSwgdWlkKSA/PyAnd2hpdGUnIDogJ3doaXRlJztcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHJldHVybiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgb25saW5lUm9sZSA9IGNvbXB1dGVkKCgpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCAnd2FpdGluZycgfCAncGVuZGluZycgfCAnc3BlY3RhdG9yJyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKCF1aWQpIHJldHVybiAnc3BlY3RhdG9yJztcbiAgICBpZiAodGhpcy5vbmxpbmUuaXNIb3N0V2FpdGluZyhnYW1lLCB1aWQpKSByZXR1cm4gJ3dhaXRpbmcnO1xuICAgIGlmICh0aGlzLm9ubGluZS5pc1BlbmRpbmdHdWVzdChnYW1lLCB1aWQpKSByZXR1cm4gJ3BlbmRpbmcnO1xuICAgIHJldHVybiB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudFNpZGUoZ2FtZSwgdWlkKSA/PyAnc3BlY3RhdG9yJztcbiAgfSk7XG4gIHJlYWRvbmx5IGNhblBsYXlDdXJyZW50VHVybiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUiAmJiAhdGhpcy5ib3RUaGlua2luZygpO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMub25saW5lUm9sZSgpID09PSBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgY2FuQ29udHJvbEN1cnJlbnRHYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgcmV0dXJuIHJvbGUgPT09ICd3aGl0ZScgfHwgcm9sZSA9PT0gJ2JsYWNrJztcbiAgfSk7XG4gIHJlYWRvbmx5IHJlbWF0Y2hTdGF0ZSA9IGNvbXB1dGVkPENoZXNzaW1hbHNSZW1hdGNoU3RhdGU+KCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybiAnbm9uZSc7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoIXVpZCB8fCB0aGlzLm9ubGluZVJvbGUoKSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiAnbm9uZSc7XG5cbiAgICBjb25zdCBoYXNNaW5lID0gdGhpcy5vbmxpbmUuaGFzQ3VycmVudFJlbWF0Y2hSZXF1ZXN0KGdhbWUsIHVpZCk7XG4gICAgY29uc3QgaGFzT3RoZXIgPSB0aGlzLm9ubGluZS5oYXNPcHBvbmVudFJlbWF0Y2hSZXF1ZXN0KGdhbWUsIHVpZCk7XG5cbiAgICBpZiAoaGFzT3RoZXIgJiYgIWhhc01pbmUpIHJldHVybiAnaW5jb21pbmcnO1xuICAgIGlmIChoYXNNaW5lKSByZXR1cm4gJ3JlcXVlc3RlZCc7XG4gICAgcmV0dXJuICdub25lJztcbiAgfSk7XG4gIHJlYWRvbmx5IHJlbWF0Y2hBY3Rpb25MYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMucmVtYXRjaFN0YXRlKCk7XG4gICAgaWYgKHRoaXMucmVtYXRjaExvYWRpbmcoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudChzdGF0ZSA9PT0gJ2luY29taW5nJyA/ICdjaGVzc2ltYWxzQWNjZXB0aW5nUmVtYXRjaCcgOiAnY2hlc3NpbWFsc1JlcXVlc3RpbmdSZW1hdGNoJyk7XG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2luY29taW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0FjY2VwdFJlbWF0Y2gnKTtcbiAgICBpZiAoc3RhdGUgPT09ICdyZXF1ZXN0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZEFjdGlvbicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZW1hdGNoJyk7XG4gIH0pO1xuICByZWFkb25seSBzaG91bGRTaG93T25saW5lU3RhdHVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAhdGhpcy5wcm9qZWN0aW9uTW9kZSAmJiB0aGlzLmdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICd3YWl0aW5nJyxcbiAgKTtcbiAgcmVhZG9ubHkgb25saW5lU3RhdHVzVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Nvbm5lY3RpbmcnIHx8IHRoaXMubW92ZVN5bmNpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVN5bmNpbmdUaXRsZScpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkVGl0bGUnKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdleHBpcmVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUV4cGlyZWRUaXRsZScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUZpbmlzaGVkVGl0bGUnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGVuZGluZ1RpdGxlJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3BlY3RhdG9yVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lQ29ubmVjdGVkVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IG9ubGluZVN0YXR1c0JvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Nvbm5lY3RpbmcnIHx8IHRoaXMubW92ZVN5bmNpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVN5bmNpbmdCb2R5Jyk7XG4gICAgaWYgKHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlKCkgPT09ICdlcnJvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVEaXNjb25uZWN0ZWRCb2R5Jyk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZXhwaXJlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFeHBpcmVkQm9keScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUZpbmlzaGVkQm9keScpO1xuICAgIGlmIChyb2xlID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ0JvZHknKTtcbiAgICBpZiAocm9sZSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVWaWV3ZXInKTtcbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09IHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm5Cb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUdXJuJyk7XG4gIH0pO1xuICByZWFkb25seSB0dXRvcmlhbFN0ZXBJbmRleCA9IGNvbXB1dGVkKCgpID0+IE1hdGgubWluKHRoaXMuZ2FtZSgpLm1vdmVDb3VudCwgQ0hFU1NJTUFMU19UVVRPUklBTF9TVEVQUykpO1xuICByZWFkb25seSB0dXRvcmlhbFByb2dyZXNzTGFiZWwgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1xuICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNUdXRvcmlhbENvbXBsZXRlUHJvZ3Jlc3MnKVxuICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXRvcmlhbFByb2dyZXNzJylcbiAgICAgICAgICAucmVwbGFjZSgne3N0ZXB9JywgU3RyaW5nKHRoaXMudHV0b3JpYWxTdGVwSW5kZXgoKSArIDEpKVxuICAgICAgICAgIC5yZXBsYWNlKCd7dG90YWx9JywgU3RyaW5nKENIRVNTSU1BTFNfVFVUT1JJQUxfU1RFUFMpKSxcbiAgKTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxEb25lVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzVHV0b3JpYWxTdGVwJHt0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxfVRpdGxlYCk7XG4gIH0pO1xuICByZWFkb25seSB0dXRvcmlhbEJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1dG9yaWFsRG9uZUJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzVHV0b3JpYWxTdGVwJHt0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxfUJvZHlgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRUdXJuVGl0bGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc0N1cnJlbnRUdXJuJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpblRpdGxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ2NoZXNzaW1hbHNXaW5UaXRsZScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy53aW5uZXJEaXNwbGF5TmFtZSgpKSxcbiAgKTtcbiAgcmVhZG9ubHkgd2luQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByZWFzb24gPSB0aGlzLmdhbWUoKS53aW5uZXJSZWFzb24gPz8gJ3Byb21vdGlvbic7XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIHJlYXNvbiA9PT0gJ2VsaW1pbmF0aW9uJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzV2luRWxpbWluYXRpb24nXG4gICAgICAgIDogcmVhc29uID09PSAncmVzaWduYXRpb24nXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc1dpblJlc2lnbmF0aW9uJ1xuICAgICAgICAgIDogJ2NoZXNzaW1hbHNXaW5Qcm9tb3Rpb24nO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KTtcbiAgfSk7XG4gIHJlYWRvbmx5IHdpblJlYXNvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlYXNvbiA9IHRoaXMuZ2FtZSgpLndpbm5lclJlYXNvbiA/PyAncHJvbW90aW9uJztcbiAgICBjb25zdCBrZXkgPVxuICAgICAgcmVhc29uID09PSAnZWxpbWluYXRpb24nXG4gICAgICAgID8gJ2NoZXNzaW1hbHNSZWFzb25FbGltaW5hdGlvbidcbiAgICAgICAgOiByZWFzb24gPT09ICdyZXNpZ25hdGlvbidcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzUmVhc29uUmVzaWduYXRpb24nXG4gICAgICAgICAgOiAnY2hlc3NpbWFsc1JlYXNvblByb21vdGlvbic7XG4gICAgcmV0dXJuIHRoaXMudChrZXkpO1xuICB9KTtcbiAgcmVhZG9ubHkgbW92ZXNTdW1tYXJ5ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ2NoZXNzaW1hbHNNb3Zlc1N1bW1hcnknKS5yZXBsYWNlKCd7bW92ZXN9JywgYCR7dGhpcy5nYW1lKCkubW92ZUNvdW50fWApLFxuICApO1xuICByZWFkb25seSBjYXB0dXJlc0J5Q29sb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2NvcmU6IFJlY29yZDxDaGVzc2ltYWxzUGxheWVyQ29sb3IsIG51bWJlcj4gPSB7IHdoaXRlOiAwLCBibGFjazogMCB9O1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcy5nYW1lKCkubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlPy5jYXB0dXJlc1BpZWNlSWQpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgcGllY2UgPSBlbnRyeS5waWVjZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbW92ZS5waWVjZUlkKTtcbiAgICAgIGlmIChwaWVjZT8uY29sb3IpIHNjb3JlW3BpZWNlLmNvbG9yXSArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcmU7XG4gIH0pO1xuICByZWFkb25seSByZXN1bHRDYXB0dXJlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5yZXBsYXlFbnRyaWVzKCkuZmlsdGVyKChlbnRyeSkgPT4gISFlbnRyeS5tb3ZlPy5jYXB0dXJlc1BpZWNlSWQpLmxlbmd0aCxcbiAgKTtcbiAgcmVhZG9ubHkgcmVzdWx0UG93ZXJzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnJlcGxheUVudHJpZXMoKVxuICAgICAgLm1hcCgoZW50cnkpID0+IGVudHJ5Lm1vdmU/LmFuaW1hbClcbiAgICAgIC5maWx0ZXIoKGFuaW1hbCk6IGFuaW1hbCBpcyBDaGVzc2ltYWxzQW5pbWFsVHlwZSA9PiAhIWFuaW1hbCksXG4gICk7XG4gIHJlYWRvbmx5IGxpdmVTY29yZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpID8gdGhpcy5jcmVhdGVHYW1lU2NvcmUodGhpcy5nYW1lKCksICdXJykuc2NvcmUgOiB0aGlzLmNyZWF0ZUdhbWVTY29yZSh0aGlzLmdhbWUoKSkuc2NvcmUsXG4gICk7XG4gIHJlYWRvbmx5IHJlc3VsdFNjb3JlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jcmVhdGVHYW1lU2NvcmUodGhpcy5nYW1lKCkpKTtcbiAgcmVhZG9ubHkgcmVzdWx0U3RhdHMgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdFNjb3JlJyksXG4gICAgICB2YWx1ZTogU3RyaW5nKHRoaXMucmVzdWx0U2NvcmUoKS5zY29yZSksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0TW92ZXMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5nYW1lKCkubW92ZUNvdW50KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRDYXB0dXJlcycpLFxuICAgICAgdmFsdWU6IFN0cmluZyh0aGlzLnJlc3VsdENhcHR1cmVzKCkpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdFBvd2VycycpLFxuICAgICAgdmFsdWU6IFN0cmluZyh0aGlzLnJlc3VsdFBvd2VycygpLmxlbmd0aCksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0UmVhc29uJyksXG4gICAgICB2YWx1ZTogdGhpcy53aW5SZWFzb25MYWJlbCgpLFxuICAgIH0sXG4gIF0pO1xuICByZWFkb25seSByZXN1bHRQb3dlcnNMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwb3dlcnMgPSB0aGlzLnJlc3VsdFBvd2VycygpO1xuICAgIGlmICghcG93ZXJzLmxlbmd0aCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdE5vUG93ZXJzJyk7XG4gICAgcmV0dXJuIHBvd2Vycy5tYXAoKGFuaW1hbCkgPT4gdGhpcy5hbmltYWxMYWJlbChhbmltYWwpKS5qb2luKCcgwrcgJyk7XG4gIH0pO1xuICByZWFkb25seSBsaXZlU2NvcmVMYWJlbCA9IGNvbXB1dGVkKCgpID0+IFN0cmluZyh0aGlzLmxpdmVTY29yZSgpKSk7XG4gIHJlYWRvbmx5IHJlc3VsdEJlc3RNb3ZlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYmVzdE1vdmUgPSB0aGlzLnJlc3VsdFNjb3JlKCkuYmVzdE1vdmU7XG4gICAgaWYgKCFiZXN0TW92ZSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdE5vQmVzdE1vdmUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0QmVzdE1vdmVMaW5lJylcbiAgICAgIC5yZXBsYWNlKCd7c2NvcmV9JywgU3RyaW5nKGJlc3RNb3ZlLnNjb3JlKSlcbiAgICAgIC5yZXBsYWNlKCd7bW92ZX0nLCBiZXN0TW92ZS5sYWJlbCk7XG4gIH0pO1xuICByZWFkb25seSBzaG91bGRTaG93Qm90UmVwb3J0ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5tb2RlID09PSAnbG9jYWwnICYmXG4gICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmXG4gICAgIXRoaXMudHV0b3JpYWxNb2RlKCkgJiZcbiAgICAhIXRoaXMuZ2FtZUJvdFByb2ZpbGUoKSxcbiAgKTtcbiAgcmVhZG9ubHkgYm90UmVwb3J0VGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZ2FtZUJvdFByb2ZpbGUoKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90UmVwb3J0VnMnKS5yZXBsYWNlKFxuICAgICAgJ3tib3R9JyxcbiAgICAgIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSxcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgYm90UmVwb3J0Qm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5nYW1lQm90UHJvZmlsZSgpO1xuICAgIGNvbnN0IGJvdE1vdmVzID0gdGhpcy5yZXBsYXlFbnRyaWVzKCkuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkubW92ZT8ucGllY2VJZC5zdGFydHNXaXRoKCdCJykpO1xuICAgIGNvbnN0IGNhcHR1cmVzID0gYm90TW92ZXMuZmlsdGVyKChlbnRyeSkgPT4gISFlbnRyeS5tb3ZlPy5jYXB0dXJlc1BpZWNlSWQpLmxlbmd0aDtcbiAgICBjb25zdCBwb3dlcnMgPSBib3RNb3Zlcy5maWx0ZXIoKGVudHJ5KSA9PiAhIWVudHJ5Lm1vdmU/LmFuaW1hbCkubGVuZ3RoO1xuICAgIGNvbnN0IG91dGNvbWVLZXkgPVxuICAgICAgdGhpcy5nYW1lKCkud2lubmVyID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICAgICA/ICdjaGVzc2ltYWxzQm90UmVwb3J0T3V0Y29tZVdvbidcbiAgICAgICAgOiAnY2hlc3NpbWFsc0JvdFJlcG9ydE91dGNvbWVMb3N0JztcblxuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRCb2R5JylcbiAgICAgIC5yZXBsYWNlKCd7b3V0Y29tZX0nLCB0aGlzLnQob3V0Y29tZUtleSkpXG4gICAgICAucmVwbGFjZSgne2NhcHR1cmVzfScsIFN0cmluZyhjYXB0dXJlcykpXG4gICAgICAucmVwbGFjZSgne3Bvd2Vyc30nLCBTdHJpbmcocG93ZXJzKSlcbiAgICAgIC5yZXBsYWNlKCd7c3R5bGV9JywgcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGUpIDogJycpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VyaWVzR2FtZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3Bwb25lbnRVaWQgPSB0aGlzLmN1cnJlbnRPcHBvbmVudFVpZCgpO1xuICAgIGlmICghb3Bwb25lbnRVaWQpIHJldHVybiBbXSBhcyBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5W107XG4gICAgcmV0dXJuIHRoaXMub25saW5lSGlzdG9yeSgpLmZpbHRlcihcbiAgICAgIChlbnRyeSkgPT4gZW50cnkub3Bwb25lbnRVaWQgPT09IG9wcG9uZW50VWlkICYmIGVudHJ5LnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyxcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VyaWVzU2NvcmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZXMgPSB0aGlzLnNlcmllc0dhbWVzKCk7XG4gICAgaWYgKCFnYW1lcy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1pbmU6IGdhbWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lm91dGNvbWUgPT09ICd3b24nKS5sZW5ndGgsXG4gICAgICByaXZhbDogZ2FtZXMuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkub3V0Y29tZSA9PT0gJ2xvc3QnKS5sZW5ndGgsXG4gICAgICB0b3RhbDogZ2FtZXMubGVuZ3RoLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBzZXJpZXNTdW1tYXJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNjb3JlID0gdGhpcy5zZXJpZXNTY29yZSgpO1xuICAgIGlmICghc2NvcmUgfHwgc2NvcmUudG90YWwgPCAyKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1Nlcmllc1Njb3JlJylcbiAgICAgIC5yZXBsYWNlKCd7bWluZX0nLCBTdHJpbmcoc2NvcmUubWluZSkpXG4gICAgICAucmVwbGFjZSgne3JpdmFsfScsIFN0cmluZyhzY29yZS5yaXZhbCkpXG4gICAgICAucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnJlbWF0Y2hPcHBvbmVudE5hbWUoKSk7XG4gIH0pO1xuICByZWFkb25seSBsYXN0U2VyaWVzV2lubmVyTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGFzdCA9IHRoaXMuc2VyaWVzR2FtZXMoKVswXTtcbiAgICBpZiAoIWxhc3QpIHJldHVybiAnJztcbiAgICByZXR1cm4gbGFzdC5vdXRjb21lID09PSAnd29uJyA/IHRoaXMudCgnY2hlc3NpbWFsc1lvdScpIDogbGFzdC5vcHBvbmVudE5hbWUgfHwgdGhpcy5yZW1hdGNoT3Bwb25lbnROYW1lKCk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc3RhcnRUaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc2lnblRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1HYW1lc1RpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29uZmlybU5ld1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1Nb2RlVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1Cb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXN0YXJ0Qm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc2lnbkJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybUdhbWVzQm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdjaGFsbGVuZ2UtbmV3JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUNvbmZpcm1OZXdCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1Nb2RlQm9keScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogdGhpcy50KCdjYW5jZWwnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY2FuY2VsJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6XG4gICAgICAgICAgYWN0aW9uID09PSAncmVzaWduJ1xuICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNSZXNpZ24nKVxuICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdyZXN0YXJ0J1xuICAgICAgICAgICAgICA/IHRoaXMudCgncmVzdGFydCcpXG4gICAgICAgICAgICAgIDogYWN0aW9uID09PSAnZ2FtZXMnXG4gICAgICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFuZ2VHYW1lJylcbiAgICAgICAgICAgICAgICA6IGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnXG4gICAgICAgICAgICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXJ0TmV3Q29uZmlybScpXG4gICAgICAgICAgICAgICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0NoYW5nZU1vZGUnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgICB9LFxuICAgIF07XG4gIH0pO1xuICByZWFkb25seSBydWxlc0FjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiBbXG4gICAge1xuICAgICAgdGV4dDogdGhpcy50KCdjbG9zZScpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjbG9zZScsXG4gICAgfSxcbiAgXSk7XG4gIHJlYWRvbmx5IGFib3V0QWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IFtcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2Nsb3NlJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2Nsb3NlJyxcbiAgICB9LFxuICBdKTtcbiAgcmVhZG9ubHkgYWN0aW9uSGludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwaWVjZUlkID0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgICBpZiAoIXBpZWNlSWQpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrQW55UGllY2UnKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEFuaW1hbCgpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja1Bvd2VyVGFyZ2V0Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tUYXJnZXQnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gICAgdGhpcy5hdWRpby5wcmVsb2FkQ2hlc3NpbWFsc1NhbXBsZXMoKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5tdXNpY0VuYWJsZWRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGVuYWJsZWQpID0+IHtcbiAgICAgICAgdGhpcy5hdWRpby5zZXRNdXNpY0VuYWJsZWQoZW5hYmxlZCk7XG4gICAgICAgIGlmIChlbmFibGVkKSB0aGlzLnN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zZnhFbmFibGVkQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChlbmFibGVkKSA9PiB0aGlzLmF1ZGlvLnNldFNmeEVuYWJsZWQoZW5hYmxlZCkpLFxuICAgICk7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLm11c2ljVm9sdW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2b2x1bWUpID0+IHRoaXMuc2V0TXVzaWNWb2x1bWUodm9sdW1lKSksXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2b2x1bWUpID0+IHRoaXMuc2V0U2Z4Vm9sdW1lKHZvbHVtZSkpLFxuICAgICk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgdGhpcy5xdWV1ZUhpc3RvcnlXYXRjaCgpO1xuICAgICAgICB0aGlzLndhdGNoQ2hhbGxlbmdlU3RhdHMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5oaXN0b3J5VWlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVIaXN0b3J5LnNldChbXSk7XG4gICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzLnNldCh0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmVtcHR5U3RhdHMoKSk7XG4gICAgICB0aGlzLmNoYWxsZW5nZUhpc3Rvcnkuc2V0KFtdKTtcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgICAgY29uc3Qga2V5ID0gYCR7Z2FtZS5pZH06JHtnYW1lLm1vdmVDb3VudH06JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfWA7XG4gICAgICBpZiAodGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICB0aGlzLmxhc3RDaGFsbGVuZ2VIYW5kbGVkS2V5ID0ga2V5O1xuICAgICAgdGhpcy5oYW5kbGVDaGFsbGVuZ2VSb3VuZEZpbmlzaGVkKGdhbWUpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tb2RlU3RhdHNSZXN1bHQoZ2FtZSk7XG4gICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuICAgICAgY29uc3Qga2V5ID0gYCR7cmVzdWx0Lm1vZGV9OiR7Z2FtZS5pZH06JHtnYW1lLm1vdmVDb3VudH06JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfWA7XG4gICAgICBpZiAodGhpcy5sYXN0TW9kZVN0YXRzSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICB0aGlzLmxhc3RNb2RlU3RhdHNIYW5kbGVkS2V5ID0ga2V5O1xuICAgICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLnJlY29yZE1vZGVSZXN1bHQocmVzdWx0Lm1vZGUsIHJlc3VsdC53b24pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBtb2RlIHN0YXRzIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jVHVyblRpbWVyKCk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcbiAgICBpZiAodGhpcy5zY29yZVBvcENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcik7XG4gICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcik7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIGlmICh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcik7XG4gICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMucGVuZGluZ09ubGluZUdhbWVJZDtcbiAgICBpZiAoZ2FtZUlkICYmIHRoaXMub3BlbmVkT25saW5lR2FtZUlkICE9PSBnYW1lSWQgJiYgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkICE9PSBnYW1lSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNaW5pR2FtZXMnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvcnRVc2VySWQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRyaW0oKTtcbiAgICBpZiAobm9ybWFsaXplZC5sZW5ndGggPD0gMTApIHJldHVybiBub3JtYWxpemVkO1xuICAgIHJldHVybiBgJHtub3JtYWxpemVkLnNsaWNlKDAsIDQpfeKApiR7bm9ybWFsaXplZC5zbGljZSgtNCl9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlOiBudW1iZXIgfCBSYW5nZVZhbHVlKTogbnVtYmVyIHtcbiAgICBjb25zdCByYXcgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiB2YWx1ZS51cHBlciA/PyB2YWx1ZS5sb3dlciA/PyAwO1xuICAgIHJldHVybiBNYXRoLm1pbigxMDAsIE1hdGgubWF4KDAsIE1hdGgucm91bmQocmF3KSkpO1xuICB9XG5cbiAgc3RhcnRDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkgJiYgdGhpcy5yZXN1bWFibGVDaGFsbGVuZ2VSdW4oKSkge1xuICAgICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnY2hhbGxlbmdlLW5ldycpO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0YWxlUnVuID0gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoc3RhbGVSdW4gJiYgIXRoaXMuaXNSZXN1bWFibGVDaGFsbGVuZ2VSdW4oc3RhbGVSdW4pKSB7XG4gICAgICB0aGlzLmFiYW5kb25DaGFsbGVuZ2VSdW4oc3RhbGVSdW4pO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZU5ld0NoYWxsZW5nZVJ1bigpO1xuICB9XG5cbiAgb3BlbkNoYWxsZW5nZVZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdjaGFsbGVuZ2UnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGJhY2tUb0hvbWUoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5ld0NoYWxsZW5nZVJ1bigpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgcnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgaWQ6IGBjaGFsbGVuZ2UtJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA4KX1gLFxuICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxpdmVzU3RhcnQ6IDMsXG4gICAgICBsaXZlc1JlbWFpbmluZzogMyxcbiAgICAgIGN1cnJlbnRSb3VuZDogMSxcbiAgICAgIHdpbnM6IDAsXG4gICAgICBsb3NzZXM6IDAsXG4gICAgICBiZXN0U3RyZWFrSW5SdW46IDAsXG4gICAgICBjdXJyZW50U3RyZWFrOiAwLFxuICAgICAgYm90TGFkZGVyOiB0aGlzLmNoYWxsZW5nZUxhZGRlci5tYXAoKGJvdCkgPT4gYm90LmlkKSxcbiAgICAgIHJvdW5kUmVzdWx0czogW10sXG4gICAgICBzdGFydGVkQXQ6IG5vdyxcbiAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgIH07XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChmYWxzZSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnN0YXJ0Q2hhbGxlbmdlUm91bmQocnVuKTtcbiAgICB2b2lkIHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MucmVjb3JkQ2hhbGxlbmdlU3RhcnRlZCh0aGlzLmNoYWxsZW5nZVJ1bigpID8/IHJ1bikuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjaGFsbGVuZ2UgcnVuIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVzdW1lQ2hhbGxlbmdlKHJ1biA9IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZXN1bWFibGVDaGFsbGVuZ2VSdW4ocnVuKSkge1xuICAgICAgdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4uc2V0KHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldChydW4pO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIGNvbnN0IHNhdmVkR2FtZSA9IHRoaXMuYWN0aXZlR2FtZUZvclJ1bihydW4pO1xuICAgIGlmIChzYXZlZEdhbWUpIHtcbiAgICAgIHRoaXMuZW50ZXJDaGFsbGVuZ2VSb3VuZChydW4sIHNhdmVkR2FtZSwgZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXJ0Q2hhbGxlbmdlUm91bmQocnVuKTtcbiAgfVxuXG4gIGNvbnRpbnVlQ2hhbGxlbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4gfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpICE9PSAnYmV0d2VlbicpIHJldHVybjtcbiAgICB0aGlzLnN0YXJ0Q2hhbGxlbmdlUm91bmQocnVuKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDaGFsbGVuZ2VSb3VuZChydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiB2b2lkIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhZGRlcltNYXRoLm1heCgwLCBydW4uY3VycmVudFJvdW5kIC0gMSldO1xuICAgIGlmICghYm90KSB7XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnY29tcGxldGVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW50ZXJDaGFsbGVuZ2VSb3VuZChydW4sIGNyZWF0ZUNoZXNzaW1hbHNHYW1lKGJvdC5ib2FyZFNpemUpLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW50ZXJDaGFsbGVuZ2VSb3VuZChydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4sIGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHNob3dJbnRybzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gICAgaWYgKCFib3QpIHtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdjb21wbGV0ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlLnNldCgnYm90Jyk7XG4gICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoYm90LmJvYXJkU2l6ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGJvdC5kaWZmaWN1bHR5KTtcbiAgICB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkLnNldChib3QucHJvZmlsZUlkKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KGJvdC5wcm9maWxlSWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdwbGF5aW5nJyk7XG4gICAgdGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmdhbWUuc2V0KGdhbWUpO1xuICAgIHRoaXMucGVyc2lzdEFjdGl2ZUNoYWxsZW5nZUdhbWUoZ2FtZSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICBpZiAoc2hvd0ludHJvKSB0aGlzLnNob3dDaGFsbGVuZ2VJbnRybygpO1xuICAgIGVsc2UgdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQpOiBydW4gaXMgQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biB7XG4gICAgaWYgKCFydW4gfHwgcnVuLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmxpdmVzUmVtYWluaW5nIDw9IDApIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmN1cnJlbnRSb3VuZCA8IDEgfHwgcnVuLmN1cnJlbnRSb3VuZCA+IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChydW4ud2lucyA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmN1cnJlbnRSb3VuZCAhPT0gcnVuLndpbnMgKyAxKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICEhdGhpcy5jaGFsbGVuZ2VMYWRkZXJbcnVuLmN1cnJlbnRSb3VuZCAtIDFdO1xuICB9XG5cbiAgc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChmYWxzZSk7XG4gICAgdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyA/IHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQoKSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5nYW1lLnNldChjcmVhdGVDaGVzc2ltYWxzR2FtZSh0aGlzLnNlbGVjdGVkQm9hcmRTaXplKCkpKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYWxsZW5nZVJvdW5kRmluaXNoZWQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBpZiAoIXJ1biB8fCAhYm90KSByZXR1cm47XG5cbiAgICBjb25zdCB3b24gPSBnYW1lLndpbm5lciA9PT0gJ3doaXRlJztcbiAgICBjb25zdCByb3VuZFN0YXRzID0gdGhpcy5jcmVhdGVDaGFsbGVuZ2VSb3VuZFN0YXRzKGdhbWUpO1xuICAgIGNvbnN0IG5leHRMaXZlcyA9IHdvbiA/IHJ1bi5saXZlc1JlbWFpbmluZyA6IE1hdGgubWF4KDAsIHJ1bi5saXZlc1JlbWFpbmluZyAtIDEpO1xuICAgIGNvbnN0IG5leHRTdHJlYWsgPSB3b24gPyBydW4uY3VycmVudFN0cmVhayArIDEgOiAwO1xuICAgIGNvbnN0IG5leHRSb3VuZCA9IHdvbiA/IE1hdGgubWluKHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCwgcnVuLmN1cnJlbnRSb3VuZCArIDEpIDogcnVuLmN1cnJlbnRSb3VuZDtcbiAgICBjb25zdCBjb21wbGV0ZWQgPSB3b24gJiYgcnVuLmN1cnJlbnRSb3VuZCA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGg7XG4gICAgY29uc3QgZmFpbGVkID0gIXdvbiAmJiBuZXh0TGl2ZXMgPD0gMDtcbiAgICBjb25zdCBmaW5pc2hlZEF0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IHJvdW5kUmVzdWx0OiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRSZXN1bHQgPSB7XG4gICAgICByb3VuZDogcnVuLmN1cnJlbnRSb3VuZCxcbiAgICAgIGJvdElkOiBib3QuaWQsXG4gICAgICBwcm9maWxlSWQ6IGJvdC5wcm9maWxlSWQsXG4gICAgICB3b24sXG4gICAgICBsaXZlc1JlbWFpbmluZzogbmV4dExpdmVzLFxuICAgICAgc3RhdHM6IHJvdW5kU3RhdHMsXG4gICAgICBmaW5pc2hlZEF0LFxuICAgIH07XG4gICAgY29uc3QgbmV4dFJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biA9IHtcbiAgICAgIC4uLnJ1bixcbiAgICAgIHN0YXR1czogY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiBmYWlsZWQgPyAnZmFpbGVkJyA6ICdhY3RpdmUnLFxuICAgICAgbGl2ZXNSZW1haW5pbmc6IG5leHRMaXZlcyxcbiAgICAgIHdpbnM6IHJ1bi53aW5zICsgKHdvbiA/IDEgOiAwKSxcbiAgICAgIGxvc3NlczogcnVuLmxvc3NlcyArICh3b24gPyAwIDogMSksXG4gICAgICBjdXJyZW50U3RyZWFrOiBuZXh0U3RyZWFrLFxuICAgICAgYmVzdFN0cmVha0luUnVuOiBNYXRoLm1heChydW4uYmVzdFN0cmVha0luUnVuLCBuZXh0U3RyZWFrKSxcbiAgICAgIGN1cnJlbnRSb3VuZDogY29tcGxldGVkIHx8IGZhaWxlZCA/IHJ1bi5jdXJyZW50Um91bmQgOiBuZXh0Um91bmQsXG4gICAgICByb3VuZFJlc3VsdHM6IFsuLi5ydW4ucm91bmRSZXN1bHRzLCByb3VuZFJlc3VsdF0sXG4gICAgICBhY3RpdmVHYW1lOiB1bmRlZmluZWQsXG4gICAgICB1cGRhdGVkQXQ6IGZpbmlzaGVkQXQsXG4gICAgICBmaW5pc2hlZEF0OiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gZmluaXNoZWRBdCA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KG5leHRSdW4pO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQod29uKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KGJvdCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQocm91bmRTdGF0cyk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KFxuICAgICAgcnVuLmN1cnJlbnRSb3VuZCA+IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkXG4gICAgICAgIHx8IE1hdGgubWF4KHJ1bi5iZXN0U3RyZWFrSW5SdW4sIG5leHRTdHJlYWspID4gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLmJlc3RXaW5TdHJlYWssXG4gICAgKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldChjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6IGZhaWxlZCA/ICdmYWlsZWQnIDogJ2JldHdlZW4nKTtcblxuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5hcHBseVJvdW5kUmVzdWx0KHtcbiAgICAgIHJ1bjogbmV4dFJ1bixcbiAgICAgIHJvdW5kUmVhY2hlZDogcnVuLmN1cnJlbnRSb3VuZCxcbiAgICAgIHdvbixcbiAgICAgIGNvbXBsZXRlZCxcbiAgICAgIHJvdW5kU3RhdHMsXG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjaGFsbGVuZ2Ugc3RhdHMgc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFiYW5kb25DaGFsbGVuZ2VJZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuIHx8IHJ1bi5zdGF0dXMgIT09ICdhY3RpdmUnIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2lkbGUnKSByZXR1cm47XG4gICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlUnVuKHJ1bik7XG4gIH1cblxuICBwcml2YXRlIGFiYW5kb25DaGFsbGVuZ2VSdW4ocnVuPzogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHZvaWQge1xuICAgIGlmICghcnVuIHx8IHJ1bi5zdGF0dXMgIT09ICdhY3RpdmUnKSByZXR1cm47XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IG5leHRSdW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICAuLi5ydW4sXG4gICAgICBzdGF0dXM6ICdhYmFuZG9uZWQnLFxuICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICBmaW5pc2hlZEF0OiBub3csXG4gICAgfTtcbiAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB2b2lkIHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3Muc2F2ZVJ1bihuZXh0UnVuKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBhYmFuZG9uIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhcnRUdXRvcmlhbCgpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUuc2V0KCdvbmUtZGV2aWNlJyk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5nYW1lLnNldCh0aGlzLmNyZWF0ZVR1dG9yaWFsR2FtZSgpKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9ubGluZUdhbWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Nvbm5lY3RpbmcnKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ2NyZWF0ZScpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZ2FtZSA9IGF3YWl0IHRoaXMub25saW5lLmNyZWF0ZUdhbWUodGhpcy5zZWxlY3RlZEJvYXJkU2l6ZSgpKTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gZ2FtZS5pZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKGdhbWUuaWQpO1xuICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZ2FtZS5pZCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjcmVhdGUgb25saW5lIGdhbWUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGpvaW5PbmxpbmVHYW1lQnlDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh0aGlzLm9ubGluZUpvaW5Db2RlKCkpO1xuICAgIGlmICghdGhpcy5vbmxpbmUuaXNWYWxpZEdhbWVJZChnYW1lSWQpKSB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVJbnZhbGlkQ29kZScpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChnYW1lSWQpO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgnam9pbicpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPT09IGdhbWVJZCkge1xuICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWVJZCkpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRHYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKTtcbiAgICBpZiAoIXRoaXMub25saW5lLmlzVmFsaWRHYW1lSWQobm9ybWFsaXplZEdhbWVJZCkpIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUludmFsaWRDb2RlJykpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlbmVkT25saW5lR2FtZUlkID09PSBub3JtYWxpemVkR2FtZUlkIHx8IHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9PT0gbm9ybWFsaXplZEdhbWVJZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5vbmxpbmVFcnJvci5zZXQoJycpO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Nvbm5lY3RpbmcnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gbm9ybWFsaXplZEdhbWVJZDtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUuam9pbkdhbWUobm9ybWFsaXplZEdhbWVJZCk7XG4gICAgICB0aGlzLm9ubGluZVVpZC5zZXQodGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgICB0aGlzLnF1ZXVlSGlzdG9yeVdhdGNoKCk7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IG5vcm1hbGl6ZWRHYW1lSWQ7XG4gICAgICB0aGlzLndhdGNoT25saW5lR2FtZShub3JtYWxpemVkR2FtZUlkKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zZWxlY3Rpb24oKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gb3BlbiBvbmxpbmUgZ2FtZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnZXJyb3InKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMub25saW5lT3BlbkVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICByZXN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5nYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICB2b2lkIHRoaXMucmVxdWVzdE9ubGluZVJlbWF0Y2goKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5nYW1lLnNldCh0aGlzLnR1dG9yaWFsTW9kZSgpID8gdGhpcy5jcmVhdGVUdXRvcmlhbEdhbWUoKSA6IGNyZWF0ZUNoZXNzaW1hbHNHYW1lKHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSkpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIGV4aXRUdXRvcmlhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICB9XG5cbiAgcmVzZXRUb01vZGVTZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmFiYW5kb25DaGFsbGVuZ2VJZk5lZWRlZCgpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgfVxuXG4gIHJlc2V0VG9HYW1lc01lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHJldHVybkhvbWUgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8IGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgdGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5nYW1lLnNldChjcmVhdGVDaGVzc2ltYWxzR2FtZShnYW1lLmJvYXJkU2l6ZSkpO1xuICAgIGlmIChyZXR1cm5Ib21lKSB7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RSZXN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSByZXR1cm47XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzdGFydCcpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnbW9kZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZUdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnZ2FtZXMnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXNpZ24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyB8fCAhdGhpcy5jYW5Db250cm9sQ3VycmVudEdhbWUoKSkgcmV0dXJuO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc2lnbicpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgaGFuZGxlQ29uZmlybU1vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1lZEFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGlmICghYWN0aW9uKSByZXR1cm47XG5cbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHtcbiAgICAgIHRoaXMucmVzdGFydEdhbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ21vZGUnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9Nb2RlU2V0dXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykge1xuICAgICAgdGhpcy5yZXNldFRvR2FtZXNNZW51KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSB7XG4gICAgICB0aGlzLnJlc2lnbkdhbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnKSB7XG4gICAgICB0aGlzLmFiYW5kb25DaGFsbGVuZ2VSdW4odGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSk7XG4gICAgICB0aGlzLmNyZWF0ZU5ld0NoYWxsZW5nZVJ1bigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpcm1QZW5kaW5nQWN0aW9uKHRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRva2VuICE9PSAnY29uZmlybScpIHtcbiAgICAgIHRoaXMuY2xvc2VDb25maXJtTW9kYWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICB0aGlzLmNvbmZpcm1lZEFjdGlvbi5zZXQoYWN0aW9uKTtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2lnbkdhbWUoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICB2b2lkIHRoaXMub25saW5lLnJlc2lnbihnYW1lLmlkKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMuZ2FtZS5zZXQocmVzaWduQ2hlc3NpbWFsc0dhbWUoZ2FtZSwgZ2FtZS5jdXJyZW50VHVybikpO1xuICAgIHRoaXMuc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMucGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQoKTtcbiAgfVxuXG4gIG9wZW5SdWxlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSdWxlc01vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZVJ1bGVzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1J1bGVzTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBvcGVuU2V0dGluZ3NNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2V0dGluZ3NNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VTZXR0aW5nc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTZXR0aW5nc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgb3BlblByb2dyZXNzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Byb2dyZXNzTW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlUHJvZ3Jlc3NNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUHJvZ3Jlc3NNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIG9wZW5BYm91dE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBYm91dE1vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUFib3V0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0Fib3V0TW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBzZXRNdXNpY1ZvbHVtZSh2YWx1ZTogbnVtYmVyIHwgUmFuZ2VWYWx1ZSk6IHZvaWQge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMucmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodGhpcy5tdXNpY1ZvbHVtZUNvbnRyb2wudmFsdWUgIT09IHZvbHVtZSkge1xuICAgICAgdGhpcy5tdXNpY1ZvbHVtZUNvbnRyb2wuc2V0VmFsdWUodm9sdW1lLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uc2V0TXVzaWNWb2x1bWUodm9sdW1lIC8gMTAwKTtcbiAgICBpZiAodm9sdW1lID4gMCAmJiB0aGlzLmF1ZGlvLm11c2ljRW5hYmxlZCgpKSB0aGlzLnN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk7XG4gIH1cblxuICBzZXRTZnhWb2x1bWUodmFsdWU6IG51bWJlciB8IFJhbmdlVmFsdWUpOiB2b2lkIHtcbiAgICBjb25zdCB2b2x1bWUgPSB0aGlzLnJhbmdlVmFsdWVUb051bWJlcih2YWx1ZSk7XG4gICAgaWYgKHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC52YWx1ZSAhPT0gdm9sdW1lKSB7XG4gICAgICB0aGlzLnNmeFZvbHVtZUNvbnRyb2wuc2V0VmFsdWUodm9sdW1lLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uc2V0U2Z4Vm9sdW1lKHZvbHVtZSAvIDEwMCk7XG4gIH1cblxuICBwcml2YXRlIHR1dG9yaWFsRXhwZWN0ZWRNb3ZlKCk6IENoZXNzaW1hbHNUdXRvcmlhbEV4cGVjdGVkTW92ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnR1dG9yaWFsTW9kZSgpIHx8IHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdGVwczogQ2hlc3NpbWFsc1R1dG9yaWFsRXhwZWN0ZWRNb3ZlW10gPSBbXG4gICAgICB7IHBpZWNlSWQ6ICdUVzEnLCB0bzogeyByb3c6IDMsIGNvbDogMSB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUQjEnLCB0bzogeyByb3c6IDIsIGNvbDogMiB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUVzEnLCB0bzogeyByb3c6IDIsIGNvbDogMiB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUQjInLCB0bzogeyByb3c6IDIsIGNvbDogNSB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUVzEnLCB0bzogeyByb3c6IDEsIGNvbDogNCB9LCBhbmltYWw6ICdrYW5nYXJvbycgfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMicsIHRvOiB7IHJvdzogMywgY29sOiA1IH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMCwgY29sOiA0IH0gfSxcbiAgICBdO1xuICAgIHJldHVybiBzdGVwc1t0aGlzLmdhbWUoKS5tb3ZlQ291bnRdO1xuICB9XG5cbiAgaXNQb3dlckNhcmRCbG9ja2VkQnlUdXRvcmlhbChhbmltYWw6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSB0aGlzLnR1dG9yaWFsRXhwZWN0ZWRNb3ZlKCk7XG4gICAgcmV0dXJuICEhZXhwZWN0ZWQ/LmFuaW1hbCAmJiBleHBlY3RlZC5hbmltYWwgIT09IGFuaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVHV0b3JpYWxHYW1lKCk6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICAgIGNvbnN0IGJhc2UgPSBjcmVhdGVDaGVzc2ltYWxzR2FtZSg2KTtcbiAgICBjb25zdCBwaWVjZXM6IENoZXNzaW1hbHNQaWVjZVtdID0gW1xuICAgICAgeyBpZDogJ1RXMScsIGNvbG9yOiAnd2hpdGUnLCBwb3NpdGlvbjogeyByb3c6IDQsIGNvbDogMSB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICAgIHsgaWQ6ICdUQjEnLCBjb2xvcjogJ2JsYWNrJywgcG9zaXRpb246IHsgcm93OiAxLCBjb2w6IDIgfSwgY2FwdHVyZWQ6IGZhbHNlIH0sXG4gICAgICB7IGlkOiAnVEIyJywgY29sb3I6ICdibGFjaycsIHBvc2l0aW9uOiB7IHJvdzogMSwgY29sOiA1IH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgICAgeyBpZDogJ1RCMycsIGNvbG9yOiAnYmxhY2snLCBwb3NpdGlvbjogeyByb3c6IDEsIGNvbDogNCB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICBdO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5iYXNlLFxuICAgICAgaWQ6ICdUVVRPUklBTCcsXG4gICAgICBwaWVjZXMsXG4gICAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICAgIG1vdmVDb3VudDogMCxcbiAgICAgIHBsYXllcnM6IHtcbiAgICAgICAgd2hpdGU6IHtcbiAgICAgICAgICAuLi5iYXNlLnBsYXllcnMud2hpdGUsXG4gICAgICAgICAgcG93ZXJVbmxvY2tlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGJsYWNrOiB7XG4gICAgICAgICAgLi4uYmFzZS5wbGF5ZXJzLmJsYWNrLFxuICAgICAgICAgIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG1vdmVIaXN0b3J5OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtb3ZlTnVtYmVyOiAwLFxuICAgICAgICAgIHBpZWNlczogcGllY2VzLm1hcCgocGllY2UpID0+ICh7IC4uLnBpZWNlLCBwb3NpdGlvbjogeyAuLi5waWVjZS5wb3NpdGlvbiB9IH0pKSxcbiAgICAgICAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICAgICAgICBzdGF0dXM6ICdpbl9wcm9ncmVzcycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJhc2ljTW92ZXNGb3JDb2xvcihnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gICAgY29uc3QgdHVyblN0YXRlID0gY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4gPyBnYW1lIDogeyAuLi5nYW1lLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgICByZXR1cm4gdHVyblN0YXRlLnBpZWNlc1xuICAgICAgLmZpbHRlcigocGllY2UpID0+IHBpZWNlLmNvbG9yID09PSBjb2xvciAmJiAhcGllY2UuY2FwdHVyZWQpXG4gICAgICAuZmxhdE1hcCgocGllY2UpID0+IGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHR1cm5TdGF0ZSwgcGllY2UuaWQpKTtcbiAgfVxuXG4gIHNlbGVjdENlbGwocG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fCB0aGlzLm1vdmluZ1BpZWNlKCkgfHwgdGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm47XG5cbiAgICBjb25zdCBwaWVjZSA9IGdldENoZXNzaW1hbHNQaWVjZUF0KGdhbWUsIHBvc2l0aW9uKTtcbiAgICBpZiAocGllY2U/LmNvbG9yID09PSBnYW1lLmN1cnJlbnRUdXJuKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQocGllY2UuaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmUgPSB0aGlzLmxlZ2FsTW92ZXMoKS5maW5kKChpdGVtKSA9PiBwb3NpdGlvbktleShpdGVtLnRvKSA9PT0gcG9zaXRpb25LZXkocG9zaXRpb24pKTtcbiAgICBpZiAoIW1vdmUpIHJldHVybjtcblxuICAgIHRoaXMuY29tbWl0Q2hlc3NpbWFsc01vdmUoZ2FtZSwgbW92ZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbW1pdENoZXNzaW1hbHNNb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICAgICAgaWYgKG1vdmUuYW5pbWFsKSB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSk7XG4gICAgICBpZiAodXBkYXRlZC5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHRoaXMucGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQodXBkYXRlZCk7XG4gICAgICB0aGlzLmFuaW1hdGVNb3ZlKGdhbWUsIG1vdmUsIHVwZGF0ZWQpO1xuICAgICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgICAgdGhpcy5tb3ZlU3luY2luZy5zZXQodHJ1ZSk7XG4gICAgICAgIHZvaWQgdGhpcy5vbmxpbmVcbiAgICAgICAgICAubW92ZShnYW1lLmlkLCBtb3ZlKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLmltcGFjdChtb3ZlLmNhcHR1cmVzUGllY2VJZCA/ICdtZWRpdW0nIDogJ2xpZ2h0Jyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBvbmxpbmUgbW92ZSBmYWlsZWQnLCB7IGdhbWVJZDogZ2FtZS5pZCwgbW92ZSwgZXJyb3IgfSk7XG4gICAgICAgICAgICB0aGlzLmdhbWUuc2V0KGdhbWUpO1xuICAgICAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLmVycm9yKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdmVTeW5jaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgICBpZiAoIW1vdmUuYW5pbWFsKSB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN5bmNUdXJuVGltZXIoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy50dXJuVGltZXJEdXJhdGlvblNlY29uZHMoKTtcbiAgICBpZiAoXG4gICAgICAhZHVyYXRpb24gfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fFxuICAgICAgdGhpcy5ib3RUaGlua2luZygpIHx8XG4gICAgICB0aGlzLm1vdmVTeW5jaW5nKCkgfHxcbiAgICAgIHRoaXMubW92aW5nUGllY2UoKVxuICAgICkge1xuICAgICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IGAke2dhbWUuaWR9OiR7Z2FtZS5jdXJyZW50VHVybn06JHtnYW1lLm1vdmVDb3VudH06JHtkdXJhdGlvbn1gO1xuICAgIGlmICh0aGlzLnR1cm5UaW1lcktleSA9PT0ga2V5ICYmIHRoaXMudHVyblRpbWVySW50ZXJ2YWwpIHJldHVybjtcblxuICAgIHRoaXMuY2xlYXJUdXJuVGltZXIoKTtcbiAgICB0aGlzLnR1cm5UaW1lcktleSA9IGtleTtcbiAgICB0aGlzLnR1cm5UaW1lckR1cmF0aW9uID0gZHVyYXRpb247XG4gICAgdGhpcy50dXJuVGltZXJEZWFkbGluZSA9IERhdGUubm93KCkgKyBkdXJhdGlvbiAqIDEwMDA7XG4gICAgdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZy5zZXQoZHVyYXRpb24pO1xuICAgIHRoaXMudHVyblRpbWVySW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLnRpY2tUdXJuVGltZXIoKSwgMjUwKTtcbiAgfVxuXG4gIHByaXZhdGUgdGlja1R1cm5UaW1lcigpOiB2b2lkIHtcbiAgICBjb25zdCByZW1haW5pbmcgPSBNYXRoLm1heCgwLCBNYXRoLmNlaWwoKHRoaXMudHVyblRpbWVyRGVhZGxpbmUgLSBEYXRlLm5vdygpKSAvIDEwMDApKTtcbiAgICB0aGlzLnR1cm5TZWNvbmRzUmVtYWluaW5nLnNldChyZW1haW5pbmcpO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSByZXR1cm47XG5cbiAgICBjb25zdCBleHBpcmVkS2V5ID0gdGhpcy50dXJuVGltZXJLZXk7XG4gICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgIGlmICghZXhwaXJlZEtleSB8fCB0aGlzLnR1cm5UaW1lckV4cGlyZWRLZXkgPT09IGV4cGlyZWRLZXkpIHJldHVybjtcbiAgICB0aGlzLnR1cm5UaW1lckV4cGlyZWRLZXkgPSBleHBpcmVkS2V5O1xuICAgIHRoaXMuaGFuZGxlVHVyblRpbWVyRXhwaXJlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclR1cm5UaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50dXJuVGltZXJJbnRlcnZhbCkgY2xlYXJJbnRlcnZhbCh0aGlzLnR1cm5UaW1lckludGVydmFsKTtcbiAgICB0aGlzLnR1cm5UaW1lckludGVydmFsID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudHVyblRpbWVyS2V5ID0gJyc7XG4gICAgdGhpcy50dXJuVGltZXJEZWFkbGluZSA9IDA7XG4gICAgdGhpcy50dXJuVGltZXJEdXJhdGlvbiA9IDA7XG4gICAgdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZy5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgdHVyblRpbWVyRHVyYXRpb25TZWNvbmRzKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMudHV0b3JpYWxNb2RlKCkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuaXNDaGFsbGVuZ2VBY3RpdmUoKSAmJiB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdwbGF5aW5nJykge1xuICAgICAgcmV0dXJuIGdhbWUuYm9hcmRTaXplID09PSA4ID8gQ0hFU1NJTUFMU19DSEFMTEVOR0VfRklOQUxfVFVSTl9TRUNPTkRTIDogQ0hFU1NJTUFMU19DSEFMTEVOR0VfVFVSTl9TRUNPTkRTO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIENIRVNTSU1BTFNfT05MSU5FX1RVUk5fU0VDT05EUztcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVUdXJuVGltZXJFeHBpcmVkKCk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoXG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgfHxcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcoKSB8fFxuICAgICAgdGhpcy5tb3ZlU3luY2luZygpIHx8XG4gICAgICB0aGlzLm1vdmluZ1BpZWNlKClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtb3ZlID0gdGhpcy5jaG9vc2VBdXRvbWF0aWNUdXJuTW92ZShnYW1lKTtcbiAgICBpZiAoIW1vdmUpIHtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc1R1cm5UaW1lck5vTW92ZScpLFxuICAgICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgICBkdXJhdGlvbjogMjIwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlc2lnbkdhbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc1R1cm5UaW1lckF1dG9Nb3ZlJyksXG4gICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgZHVyYXRpb246IDIyMDAsXG4gICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgfSk7XG4gICAgdGhpcy5jb21taXRDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hvb3NlQXV0b21hdGljVHVybk1vdmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtb3ZlcyA9IGdhbWUucGllY2VzXG4gICAgICAuZmlsdGVyKChwaWVjZSkgPT4gcGllY2UuY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4gJiYgIXBpZWNlLmNhcHR1cmVkKVxuICAgICAgLmZsYXRNYXAoKHBpZWNlKSA9PiBnZXRDaGVzc2ltYWxzTGVnYWxNb3ZlcyhnYW1lLCBwaWVjZS5pZCkpO1xuICAgIGNvbnN0IGJhc2ljTW92ZXMgPSBtb3Zlcy5maWx0ZXIoKG1vdmUpID0+IG1vdmUua2luZCA9PT0gJ2Jhc2ljJyk7XG4gICAgcmV0dXJuIGJhc2ljTW92ZXMuZmluZCgobW92ZSkgPT4gdGhpcy5pc1Byb21vdGlvbk1vdmUoZ2FtZSwgbW92ZSkpXG4gICAgICA/PyBiYXNpY01vdmVzLmZpbmQoKG1vdmUpID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpXG4gICAgICA/PyBiYXNpY01vdmVzWzBdXG4gICAgICA/PyBtb3Zlcy5maW5kKChtb3ZlKSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKVxuICAgICAgPz8gbW92ZXNbMF07XG4gIH1cblxuICBwcml2YXRlIGlzUHJvbW90aW9uTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtb3ZlLmtpbmQgPT09ICdiYXNpYycgJiYgbW92ZS50by5yb3cgPT09IChnYW1lLmN1cnJlbnRUdXJuID09PSAnd2hpdGUnID8gMCA6IGdhbWUuYm9hcmRTaXplIC0gMSk7XG4gIH1cblxuICBwcml2YXRlIGFuaW1hdGVNb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIHRoaXMucXVldWVNb3ZlRWZmZWN0KG1vdmUpO1xuXG4gICAgY29uc3QgbW92aW5nUGllY2UgPSBnYW1lLnBpZWNlcy5maW5kKChwaWVjZSkgPT4gcGllY2UuaWQgPT09IG1vdmUucGllY2VJZCk7XG4gICAgaWYgKCFtb3ZpbmdQaWVjZSkge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh7XG4gICAgICBjb2xvcjogbW92aW5nUGllY2UuY29sb3IsXG4gICAgICBmcm9tUm93OiB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLmZyb20ucm93KSxcbiAgICAgIGZyb21Db2w6IHRoaXMuZGlzcGxheUNvbEluZGV4KG1vdmUuZnJvbS5jb2wpLFxuICAgICAgdG9Sb3c6IHRoaXMuZGlzcGxheVJvd0luZGV4KG1vdmUudG8ucm93KSxcbiAgICAgIHRvQ29sOiB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLnRvLmNvbCksXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICB9LCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBbmltYXRlZE1vdmUocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZ2FtZS5zZXQodXBkYXRlZCk7XG4gICAgdGhpcy5wZXJzaXN0QWN0aXZlQ2hhbGxlbmdlR2FtZSh1cGRhdGVkKTtcbiAgICB0aGlzLnF1ZXVlU2NvcmVQb3AocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIHRoaXMucGxheVBvd2VyVW5sb2NrU291bmQocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIGlmIChcbiAgICAgIHVwZGF0ZWQuY3VycmVudFR1cm4gIT09IHByZXZpb3VzLmN1cnJlbnRUdXJuICYmXG4gICAgICB1cGRhdGVkLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJlxuICAgICAgIXRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWModXBkYXRlZClcbiAgICApIHtcbiAgICAgIHRoaXMudHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCh1cGRhdGVkKTtcbiAgICB9XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVHYW1lRm9yUnVuKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IENoZXNzaW1hbHNHYW1lU3RhdGUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gICAgY29uc3QgZ2FtZSA9IHJ1bi5hY3RpdmVHYW1lO1xuICAgIGlmICghYm90IHx8ICFnYW1lKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5ib2FyZFNpemUgIT09IGJvdC5ib2FyZFNpemUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmVDaGFsbGVuZ2VHYW1lKGdhbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0QWN0aXZlQ2hhbGxlbmdlR2FtZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCBydW4uc3RhdHVzICE9PSAnYWN0aXZlJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuO1xuICAgIGNvbnN0IG5leHRSdW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICAuLi5ydW4sXG4gICAgICBhY3RpdmVHYW1lOiB0aGlzLmNsb25lQ2hhbGxlbmdlR2FtZShnYW1lKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KG5leHRSdW4pO1xuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5zYXZlUnVuKG5leHRSdW4pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY2hhbGxlbmdlIHNuYXBzaG90IHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZUNoYWxsZW5nZUdhbWUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHsgLi4uZ2FtZSwgb25saW5lOiB1bmRlZmluZWQgfSkpIGFzIENoZXNzaW1hbHNHYW1lU3RhdGU7XG4gIH1cblxuICBwcml2YXRlIHBsYXlQb3dlclVubG9ja1NvdW5kKHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3Qgd2hpdGVVbmxvY2tlZCA9ICFwcmV2aW91cy5wbGF5ZXJzLndoaXRlLnBvd2VyVW5sb2NrZWQgJiYgdXBkYXRlZC5wbGF5ZXJzLndoaXRlLnBvd2VyVW5sb2NrZWQ7XG4gICAgY29uc3QgYmxhY2tVbmxvY2tlZCA9ICFwcmV2aW91cy5wbGF5ZXJzLmJsYWNrLnBvd2VyVW5sb2NrZWQgJiYgdXBkYXRlZC5wbGF5ZXJzLmJsYWNrLnBvd2VyVW5sb2NrZWQ7XG4gICAgaWYgKHdoaXRlVW5sb2NrZWQgfHwgYmxhY2tVbmxvY2tlZCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXJVbmxvY2tlZCgpO1xuICAgICAgdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldChmYWxzZSk7XG4gICAgICBjb25zdCBzdGFydFB1bHNlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnBvd2VyVW5sb2NrUHVsc2Uuc2V0KHRydWUpO1xuICAgICAgICBpZiAodGhpcy5wb3dlclVubG9ja1RpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5wb3dlclVubG9ja1RpbWVyKTtcbiAgICAgICAgdGhpcy5wb3dlclVubG9ja1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnBvd2VyVW5sb2NrUHVsc2Uuc2V0KGZhbHNlKSwgMTM1MCk7XG4gICAgICB9O1xuICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0YXJ0UHVsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdGFydFB1bHNlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUJvdFR1cm5JZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnIHx8XG4gICAgICBnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICkge1xuICAgICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ib3RUdXJuVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvdFR1cm5UaW1lcik7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmJvdFRoaW5raW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wbGF5Qm90VHVybigpLCBDSEVTU0lNQUxTX0JPVF9USElOS0lOR19NUyk7XG4gIH1cblxuICBwcml2YXRlIHBsYXlCb3RUdXJuKCk6IHZvaWQge1xuICAgIHRoaXMuYm90VHVyblRpbWVyID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoXG4gICAgICBnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICkge1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmUgPSBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZShnYW1lLCB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eSgpLCB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkKCkpO1xuICAgIGlmICghbW92ZSkge1xuICAgICAgdGhpcy5nYW1lLnNldChyZXNpZ25DaGVzc2ltYWxzR2FtZShnYW1lLCBDSEVTU0lNQUxTX0JPVF9DT0xPUikpO1xuICAgICAgdGhpcy5zaG93TGF0ZXN0UmV2aWV3U25hcHNob3QoKTtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMucGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoZ2FtZSwgbW92ZSk7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICBpZiAobW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlLCB0cnVlKTtcbiAgICAgIGlmICh1cGRhdGVkLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCh1cGRhdGVkKTtcbiAgICAgIHRoaXMuYW5pbWF0ZU1vdmUoZ2FtZSwgbW92ZSwgdXBkYXRlZCk7XG4gICAgICBpZiAoIW1vdmUuYW5pbWFsKSB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSwgdHJ1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQm90VHVybigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ib3RUdXJuVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvdFR1cm5UaW1lcik7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYygpKSByZXR1cm47XG4gICAgaWYgKHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpO1xuICAgIHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQoZmFsc2UpO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQoZmFsc2UpLCAzNDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYyhnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlID0gdGhpcy5nYW1lKCkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy50dXRvcmlhbE1vZGUoKSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JztcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNCb2FyZFNvb24oKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5ib2FyZEFuY2hvcj8ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XG4gICAgICB9LCA4MCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5zY3JlZW4oKSA9PT0gJ2dhbWUnKSByZXR1cm47XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5zY3JlZW4oKSA9PT0gJ2dhbWUnKSByZXR1cm47XG4gICAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnNjcmVlbigpICE9PSAnZ2FtZScpIHJldHVybjtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnNjcmVlbigpICE9PSAnZ2FtZScpIHJldHVybjtcbiAgICAgIHZvaWQgdGhpcy5hdWRpby5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jQ2hlc3NpbWFsc011c2ljQWZ0ZXJTZXR0aW5nc0NoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnKSB7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2NyZWVuKCkgPT09ICdnYW1lJyAmJiB0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGxheU1vdmVTb3VuZChtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgaXNCb3QgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmIChtb3ZlLmFuaW1hbCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXIobW92ZS5hbmltYWwpO1xuICAgICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMuYXVkaW8uY2hlc3NpbWFsc0NhcHR1cmUoKSwgMTUwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNDYXB0dXJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0JvdCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzQm90TW92ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNNb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIHBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUgPSB0aGlzLmdhbWUoKSk6IHZvaWQge1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuO1xuICAgIGNvbnN0IGtleSA9IGAke2dhbWUuaWR9OiR7Z2FtZS5zdGF0dXN9OiR7Z2FtZS53aW5uZXIgPz8gJ25vbmUnfToke2dhbWUud2lubmVyUmVhc29uID8/ICdub25lJ306JHtnYW1lLm1vdmVDb3VudH1gO1xuICAgIGlmICh0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPT09IGtleSkgcmV0dXJuO1xuICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IGtleTtcbiAgICBjb25zdCB3aW5uZXIgPSBnYW1lLndpbm5lcjtcbiAgICBjb25zdCBzaWRlID0gdGhpcy5jdXJyZW50UGxheWVyU2lkZUZvck91dGNvbWUoZ2FtZSk7XG4gICAgaWYgKCF3aW5uZXIgfHwgIXNpZGUgfHwgd2lubmVyID09PSBzaWRlKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNWaWN0b3J5KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc0RlZmVhdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50UGxheWVyU2lkZUZvck91dGNvbWUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIHJldHVybiB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudFNpZGUoZ2FtZSwgdGhpcy5vbmxpbmVVaWQoKSA/PyB0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHJldHVybiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLndpbm5lclJlYXNvbiA9PT0gJ3Jlc2lnbmF0aW9uJyA/IGdhbWUuY3VycmVudFR1cm4gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyUmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMucmV2aWV3SW5kZXguc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIHNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbnRyaWVzID0gdGhpcy5nYW1lKCkubW92ZUhpc3RvcnkgPz8gW107XG4gICAgdGhpcy5yZXZpZXdJbmRleC5zZXQoZW50cmllcy5sZW5ndGggPiAxID8gZW50cmllcy5sZW5ndGggLSAxIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcXVldWVNb3ZlRWZmZWN0KG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKTtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpO1xuXG4gICAgaWYgKCFtb3ZlLmFuaW1hbCAmJiAhbW92ZS5jYXB0dXJlc1BpZWNlSWQpIHtcbiAgICAgIHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZGVsYXlNcyA9IE1hdGgubWF4KDAsIENIRVNTSU1BTFNfTU9WRV9BTklNQVRJT05fTVMgLSA5MCk7XG4gICAgdGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh7XG4gICAgICAgIGFuaW1hbDogbW92ZS5hbmltYWwsXG4gICAgICAgIGZyb206IHsgLi4ubW92ZS5mcm9tIH0sXG4gICAgICAgIHRvOiB7IC4uLm1vdmUudG8gfSxcbiAgICAgICAgY2FwdHVyZTogISFtb3ZlLmNhcHR1cmVzUGllY2VJZCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpLCA5NTApO1xuICAgIH0sIGRlbGF5TXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZVNjb3JlUG9wKHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NvcmVQb3BDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5zY29yZVBvcENsZWFyVGltZXIpO1xuICAgIGNvbnN0IGVudHJ5ID0gdXBkYXRlZC5tb3ZlSGlzdG9yeT8uW3VwZGF0ZWQubW92ZUhpc3RvcnkubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgbW92ZSA9IGVudHJ5Py5tb3ZlO1xuICAgIGlmICghZW50cnkgfHwgIW1vdmUgfHwgcHJldmlvdXMubW92ZUNvdW50ID09PSB1cGRhdGVkLm1vdmVDb3VudCkge1xuICAgICAgdGhpcy5zY29yZVBvcC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0NvbWJvID0gdGhpcy5jYXB0dXJlQ29tYm9CZWZvcmVNb3ZlKHByZXZpb3VzLCBtb3ZlLnBpZWNlSWQpO1xuICAgIGNvbnN0IG1vdmVDb2xvciA9IHRoaXMuY29sb3JGcm9tUGllY2VJZChtb3ZlLnBpZWNlSWQpO1xuICAgIGNvbnN0IHByb21vdGlvbiA9IGVudHJ5LnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyAmJiBlbnRyeS53aW5uZXJSZWFzb24gPT09ICdwcm9tb3Rpb24nICYmIGVudHJ5Lndpbm5lciA9PT0gbW92ZUNvbG9yO1xuICAgIGNvbnN0IHNjb3JlID0gdGhpcy5zY29yZUNoZXNzaW1hbHNNb3ZlKG1vdmUsIHByb21vdGlvbiwgcHJldmlvdXNDb21ibyk7XG4gICAgaWYgKHNjb3JlLnNjb3JlIDw9IDEpIHtcbiAgICAgIHRoaXMuc2NvcmVQb3Auc2V0KHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29sID0gdGhpcy5kaXNwbGF5Q29sSW5kZXgobW92ZS50by5jb2wpICsgMC41O1xuICAgIGNvbnN0IHJvdyA9IHRoaXMuZGlzcGxheVJvd0luZGV4KG1vdmUudG8ucm93KSArIDAuNTtcbiAgICB0aGlzLnNjb3JlUG9wLnNldCh7XG4gICAgICAuLi5zY29yZSxcbiAgICAgIHg6IGAkeyhjb2wgLyB1cGRhdGVkLmJvYXJkU2l6ZSkgKiAxMDB9JWAsXG4gICAgICB5OiBgJHsocm93IC8gdXBkYXRlZC5ib2FyZFNpemUpICogMTAwfSVgLFxuICAgIH0pO1xuICAgIHRoaXMuc2NvcmVQb3BDbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnNjb3JlUG9wLnNldCh1bmRlZmluZWQpLCAxMTUwKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FwdHVyZUNvbWJvQmVmb3JlTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBwaWVjZUlkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5jb2xvckZyb21QaWVjZUlkKHBpZWNlSWQpO1xuICAgIGlmICghY29sb3IpIHJldHVybiAwO1xuICAgIGxldCBjb21ibyA9IDA7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBnYW1lLm1vdmVIaXN0b3J5ID8/IFtdKSB7XG4gICAgICBjb25zdCBtb3ZlID0gZW50cnkubW92ZTtcbiAgICAgIGlmICghbW92ZSB8fCB0aGlzLmNvbG9yRnJvbVBpZWNlSWQobW92ZS5waWVjZUlkKSAhPT0gY29sb3IpIGNvbnRpbnVlO1xuICAgICAgY29tYm8gPSBtb3ZlLmNhcHR1cmVzUGllY2VJZCA/IGNvbWJvICsgMSA6IDA7XG4gICAgfVxuICAgIHJldHVybiBjb21ibztcbiAgfVxuXG4gIHRvZ2dsZUFuaW1hbChhbmltYWw6IENoZXNzaW1hbHNBbmltYWxWaWV3KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgIXRoaXMuY2FuVXNlUG93ZXJDYXJkcygpKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaXNQb3dlckNhcmRCbG9ja2VkQnlUdXRvcmlhbChhbmltYWwudHlwZSkpIHJldHVybjtcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLnBvd2VyUGxheWVyKCk7XG4gICAgaWYgKCFwbGF5ZXIucG93ZXJVbmxvY2tlZCB8fCBwbGF5ZXIuY2FyZHNbYW5pbWFsLnR5cGVdLnVzZWQpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zZWxlY3RlZEFuaW1hbCgpO1xuICAgIGNvbnN0IG5leHQgPSBjdXJyZW50ID09PSBhbmltYWwudHlwZSA/IHVuZGVmaW5lZCA6IGFuaW1hbC50eXBlO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KG5leHQpO1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFBpZWNlSWQoKSkge1xuICAgICAgY29uc3QgZmlyc3RQaWVjZSA9IHRoaXMuZ2FtZSgpLnBpZWNlcy5maW5kKFxuICAgICAgICAocGllY2UpID0+ICFwaWVjZS5jYXB0dXJlZCAmJiBwaWVjZS5jb2xvciA9PT0gdGhpcy5nYW1lKCkuY3VycmVudFR1cm4sXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KGZpcnN0UGllY2U/LmlkKTtcbiAgICB9XG4gICAgaWYgKG5leHQpIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyUHJldmlldyhhbmltYWwudHlwZSk7XG4gIH1cblxuICBwaWVjZUF0KHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IENoZXNzaW1hbHNQaWVjZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldENoZXNzaW1hbHNQaWVjZUF0KHRoaXMucmV2aWV3R2FtZSgpLCB7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNEYXJrQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHJvdyArIGNvbCkgJSAyID09PSAxO1xuICB9XG5cbiAgaXNFZGdlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBsYXN0ID0gdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIC0gMTtcbiAgICByZXR1cm4gcm93ID09PSAwIHx8IGNvbCA9PT0gMCB8fCByb3cgPT09IGxhc3QgfHwgY29sID09PSBsYXN0O1xuICB9XG5cbiAgY2VsbFdlYXIocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoKHJvdyAqIDE3ICsgY29sICogMzEgKyByb3cgKiBjb2wgKiA3KSAlIDYpO1xuICB9XG5cbiAgaXNTZWxlY3RlZENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGllY2UgPSB0aGlzLnBpZWNlQXQocm93LCBjb2wpO1xuICAgIHJldHVybiAhIXBpZWNlICYmIHBpZWNlLmlkID09PSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICB9XG5cbiAgaXNMZWdhbENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGVnYWxNb3ZlS2V5cygpLmhhcyhwb3NpdGlvbktleSh7IHJvdywgY29sIH0pKTtcbiAgfVxuXG4gIGlzQ2FwdHVyZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FwdHVyZU1vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNUaHJlYXRlbmVkQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBwaWVjZSA9IHRoaXMucGllY2VBdChyb3csIGNvbCk7XG4gICAgcmV0dXJuICEhcGllY2UgJiYgdGhpcy50aHJlYXRlbmVkUGllY2VJZHMoKS5oYXMocGllY2UuaWQpO1xuICB9XG5cbiAgaXNDYXB0dXJlUmVhZHlDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBpZWNlID0gdGhpcy5waWVjZUF0KHJvdywgY29sKTtcbiAgICByZXR1cm4gISFwaWVjZSAmJiBwaWVjZS5jb2xvciA9PT0gdGhpcy5nYW1lKCkuY3VycmVudFR1cm4gJiYgdGhpcy5jYXB0dXJlUmVhZHlQaWVjZUlkcygpLmhhcyhwaWVjZS5pZCk7XG4gIH1cblxuICBpc1dpbm5pbmdDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndpbm5pbmdNb3ZlS2V5cygpLmhhcyhwb3NpdGlvbktleSh7IHJvdywgY29sIH0pKTtcbiAgfVxuXG4gIGlzTGFzdE1vdmVDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhc3RNb3ZlID0gdGhpcy5yZXZpZXdHYW1lKCkubGFzdE1vdmU7XG4gICAgcmV0dXJuICF0aGlzLnNlbGVjdGVkUGllY2VJZCgpICYmICEhbGFzdE1vdmUgJiYgcG9zaXRpb25LZXkobGFzdE1vdmUudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZpbmdTb3VyY2VDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1vdmluZyA9IHRoaXMubW92aW5nUGllY2UoKTtcbiAgICBpZiAoIW1vdmluZykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlSb3dJbmRleChyb3cpID09PSBtb3ZpbmcuZnJvbVJvdyAmJiB0aGlzLmRpc3BsYXlDb2xJbmRleChjb2wpID09PSBtb3ZpbmcuZnJvbUNvbDtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyLCBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIGlmICghZWZmZWN0KSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGFuaW1hbCAmJiBlZmZlY3QuYW5pbWFsICE9PSBhbmltYWwpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gcG9zaXRpb25LZXkoZWZmZWN0LnRvKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdFNvdXJjZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgcmV0dXJuICEhZWZmZWN0ICYmIHBvc2l0aW9uS2V5KGVmZmVjdC5mcm9tKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdENhcHR1cmVDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIHJldHVybiAhIWVmZmVjdD8uY2FwdHVyZSAmJiBwb3NpdGlvbktleShlZmZlY3QudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgZmlsZUxhYmVsKGNvbDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NSArIGNvbCk7XG4gIH1cblxuICByYW5rTGFiZWwocm93OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSByb3d9YDtcbiAgfVxuXG4gIHNob3dSYW5rTGFiZWwoY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sID09PSB0aGlzLmRpc3BsYXlDb2xzKClbMF07XG4gIH1cblxuICBzaG93RmlsZUxhYmVsKHJvdzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuZGlzcGxheVJvd3MoKTtcbiAgICByZXR1cm4gcm93ID09PSByb3dzW3Jvd3MubGVuZ3RoIC0gMV07XG4gIH1cblxuICBwbGF5ZXJMYWJlbChjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyB0aGlzLnQoJ2NoZXNzaW1hbHNXaGl0ZScpIDogdGhpcy50KCdjaGVzc2ltYWxzQmxhY2snKTtcbiAgfVxuXG4gIGNhcHR1cmVzU2NvcmVMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNjb3JlID0gdGhpcy5jYXB0dXJlc0J5Q29sb3IoKTtcbiAgICByZXR1cm4gYCR7c2NvcmUud2hpdGV9LSR7c2NvcmUuYmxhY2t9YDtcbiAgfVxuXG4gIHR1cm5UaW1lckxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcoKTtcbiAgICByZXR1cm4gc2Vjb25kcyA9PT0gdW5kZWZpbmVkID8gJy0nIDogYCR7c2Vjb25kc31zYDtcbiAgfVxuXG4gIHNjb3JlQ29tYm9MYWJlbChjb21ibzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzU2NvcmVDb21ibycpLnJlcGxhY2UoJ3tjb21ib30nLCBTdHJpbmcoY29tYm8pKTtcbiAgfVxuXG4gIHR1cm5UaW1lclByb2dyZXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcoKTtcbiAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMudHVyblRpbWVyRHVyYXRpb247XG4gICAgaWYgKHNlY29uZHMgPT09IHVuZGVmaW5lZCB8fCBkdXJhdGlvbiA8PSAwKSByZXR1cm4gJzEnO1xuICAgIHJldHVybiBTdHJpbmcoTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgc2Vjb25kcyAvIGR1cmF0aW9uKSkpO1xuICB9XG5cbiAgaXNUdXJuVGltZXJMb3coKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcoKTtcbiAgICByZXR1cm4gc2Vjb25kcyAhPT0gdW5kZWZpbmVkICYmIHNlY29uZHMgPD0gNTtcbiAgfVxuXG4gIHR1cm5TdGF0ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0ZpbmlzaGVkQ2hpcCcpO1xuICAgIGlmICh0aGlzLmlzQWN0aW9uYWJsZVR1cm4oKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuJyk7XG4gICAgaWYgKHRoaXMuYm90VGhpbmtpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFRoaW5raW5nVGl0bGUnKTtcbiAgICBpZiAodGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMuaXNXYWl0aW5nRm9yVHVybigpID8gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1R1cm5MYWJlbCcpIDogdGhpcy5tb2RlQ2hpcExhYmVsKCk7XG4gIH1cblxuICB0dXJuU3RhdGVCb2R5KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMud2luQm9keSgpO1xuICAgIGlmICh0aGlzLmlzQWN0aW9uYWJsZVR1cm4oKSkge1xuICAgICAgaWYgKHRoaXMuaXNUdXJuVGltZXJMb3coKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1cm5UaW1lckxvd0JvZHknKTtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnICYmIHRoaXMuZ2FtZSgpLm1vZGUgPT09ICdsb2NhbCdcbiAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RZb3VyVHVybkJvZHknKVxuICAgICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuQm9keScpO1xuICAgIH1cbiAgICBpZiAodGhpcy5ib3RUaGlua2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdCb2R5Jyk7XG4gICAgaWYgKHRoaXMubW92ZVN5bmNpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVN5bmNpbmdCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUdXJuJyk7XG4gIH1cblxuICB3aW5uZXJEaXNwbGF5TmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHdpbm5lciA9IHRoaXMuZ2FtZSgpLndpbm5lciA/PyAnd2hpdGUnO1xuICAgIHJldHVybiB0aGlzLnBsYXllckRpc3BsYXlOYW1lKHdpbm5lcik7XG4gIH1cblxuICB3aW5uZXJTaWRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wbGF5ZXJMYWJlbCh0aGlzLmdhbWUoKS53aW5uZXIgPz8gJ3doaXRlJyk7XG4gIH1cblxuICB3aW5uZXJJbml0aWFscygpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLndpbm5lckRpc3BsYXlOYW1lKCkudHJpbSgpO1xuICAgIGNvbnN0IGluaXRpYWxzID0gbmFtZVxuICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5zbGljZSgwLCAyKVxuICAgICAgLm1hcCgocGFydCkgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gaW5pdGlhbHMgfHwgdGhpcy53aW5uZXJTaWRlTGFiZWwoKS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIHdpbm5lckF2YXRhclVybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB3aW5uZXIgPSBnYW1lLndpbm5lcjtcbiAgICBpZiAoIXdpbm5lciB8fCBnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/Llt3aW5uZXJdPy5hdmF0YXJVcmw/LnRyaW0oKSA/PyAnJztcbiAgfVxuXG4gIGlzQ3VycmVudFBsYXllclZpY3RvcnkoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCAhZ2FtZS53aW5uZXIpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGxheWVyU2lkZUZvck91dGNvbWUoZ2FtZSkgPT09IGdhbWUud2lubmVyO1xuICB9XG5cbiAgaXNDdXJyZW50UGxheWVyRGVmZWF0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgIWdhbWUud2lubmVyKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgc2lkZSA9IHRoaXMuY3VycmVudFBsYXllclNpZGVGb3JPdXRjb21lKGdhbWUpO1xuICAgIHJldHVybiAhIXNpZGUgJiYgc2lkZSAhPT0gZ2FtZS53aW5uZXI7XG4gIH1cblxuICBwcml2YXRlIHBsYXllckRpc3BsYXlOYW1lKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgY29uc3QgcGFydGljaXBhbnQgPSBnYW1lLm9ubGluZT8ucGFydGljaXBhbnRzPy5bY29sb3JdO1xuICAgICAgY29uc3QgbmFtZSA9IHBhcnRpY2lwYW50Py5uYW1lPy50cmltKCk7XG4gICAgICBpZiAobmFtZSkgcmV0dXJuIG5hbWU7XG4gICAgICBjb25zdCBoYW5kbGUgPSBwYXJ0aWNpcGFudD8uaGFuZGxlPy50cmltKCk7XG4gICAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgIHJldHVybiBjb2xvciA9PT0gQ0hFU1NJTUFMU19CT1RfQ09MT1IgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJykgOiB0aGlzLmxvZ2dlZFBsYXllck5hbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGxheWVyTGFiZWwoY29sb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1hdGNoT3Bwb25lbnQoKTogQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnIHx8IChyb2xlICE9PSAnd2hpdGUnICYmIHJvbGUgIT09ICdibGFjaycpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9wcG9uZW50U2lkZTogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gcm9sZSA9PT0gJ3doaXRlJyA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLm9ubGluZT8ucGFydGljaXBhbnRzPy5bb3Bwb25lbnRTaWRlXTtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudE9wcG9uZW50VWlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LnVpZCA/PyAnJztcbiAgfVxuXG4gIG1vZGVDaGlwTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZScpIDogdGhpcy50KCdjaGVzc2ltYWxzT25lRGV2aWNlJyk7XG4gICAgfVxuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAocm9sZSA9PT0gJ3dhaXRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lV2FpdGluZycpO1xuICAgIGlmIChyb2xlID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVQZW5kaW5nJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzU3BlY3RhdG9yJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBsYXllcicpO1xuICB9XG5cbiAgdHVyblRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyAmJiBnYW1lLmN1cnJlbnRUdXJuID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUikge1xuICAgICAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdUaXRsZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFR1cm5UaXRsZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09IGdhbWUuY3VycmVudFR1cm4pIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDdXJyZW50VHVybicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wbGF5ZXJMYWJlbChnYW1lLmN1cnJlbnRUdXJuKSk7XG4gIH1cblxuICBub3JtYWxpemVHYW1lSWQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh2YWx1ZSk7XG4gIH1cblxuICBhc3luYyBjb3B5T25saW5lTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLm9ubGluZS5zaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQ/LndyaXRlVGV4dCh1cmwpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzTGlua0NvcGllZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzaGFyZU9ubGluZUxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUuc2hhcmVVcmwodGhpcy5nYW1lKCkuaWQsIHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCkpO1xuICAgIGlmIChuYXZpZ2F0b3Iuc2hhcmUpIHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5zaGFyZSh7IHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNUaXRsZScpLCB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNTaGFyZVRleHQnKSwgdXJsIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmNvcHlPbmxpbmVMaW5rKCk7XG4gIH1cblxuICBhc3luYyBzaGFyZVByb2plY3Rpb25MaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnByb2plY3Rpb25TaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgaWYgKG5hdmlnYXRvci5zaGFyZSkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25UaXRsZScpLFxuICAgICAgICB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNQcm9qZWN0aW9uU2hhcmVUZXh0JyksXG4gICAgICAgIHVybCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZD8ud3JpdGVUZXh0KHVybCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQcm9qZWN0aW9uTGlua0NvcGllZCcpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMjIwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIGNhblJldmlld1BlbmRpbmdHdWVzdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICByZXR1cm4gISF1aWRcbiAgICAgICYmIGdhbWUubW9kZSA9PT0gJ29ubGluZSdcbiAgICAgICYmIHRoaXMub25saW5lLmlzSG9zdFdhaXRpbmcoZ2FtZSwgdWlkKVxuICAgICAgJiYgISFnYW1lLm9ubGluZS5wZW5kaW5nR3Vlc3Q7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3ROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5uYW1lID8/IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKTtcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEhhbmRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdD8uaGFuZGxlID8/ICcnO1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0QXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5hdmF0YXJVcmwgPz8gJyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RJbml0aWFscygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGd1ZXN0ID0gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q7XG4gICAgY29uc3QgbmFtZSA9IChndWVzdD8ubmFtZSB8fCBndWVzdD8uaGFuZGxlIHx8IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSkudHJpbSgpO1xuICAgIGNvbnN0IGluaXRpYWxzID0gbmFtZVxuICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5zbGljZSgwLCAyKVxuICAgICAgLm1hcCgocGFydCkgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gaW5pdGlhbHMgfHwgJz8nO1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0QXZhdGFyUHJvcHMoKTogVXNlckF2YXRhck1ldGFkYXRhIHtcbiAgICBjb25zdCBndWVzdCA9IHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0O1xuICAgIHJldHVybiB7XG4gICAgICB1c2VyOiB7XG4gICAgICAgIG5hbWU6IGd1ZXN0Py5uYW1lLFxuICAgICAgICBoYW5kbGU6IGd1ZXN0Py5oYW5kbGUsXG4gICAgICAgIGF2YXRhclVybDogZ3Vlc3Q/LmF2YXRhclVybCxcbiAgICAgIH0sXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIHJlbWF0Y2hPcHBvbmVudE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8ubmFtZT8udHJpbSgpIHx8IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKTtcbiAgfVxuXG4gIHJlbWF0Y2hPcHBvbmVudEhhbmRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlbWF0Y2hPcHBvbmVudCgpPy5oYW5kbGU/LnRyaW0oKSA/PyAnJztcbiAgfVxuXG4gIHJlbWF0Y2hPcHBvbmVudEF2YXRhclVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlbWF0Y2hPcHBvbmVudCgpPy5hdmF0YXJVcmw/LnRyaW0oKSA/PyAnJztcbiAgfVxuXG4gIHJlbWF0Y2hPcHBvbmVudEluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3Bwb25lbnQgPSB0aGlzLnJlbWF0Y2hPcHBvbmVudCgpO1xuICAgIGNvbnN0IG5hbWUgPSAob3Bwb25lbnQ/Lm5hbWUgfHwgb3Bwb25lbnQ/LmhhbmRsZSB8fCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJykpLnRyaW0oKTtcbiAgICBjb25zdCBpbml0aWFscyA9IG5hbWVcbiAgICAgIC5zcGxpdCgvXFxzKy8pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuc2xpY2UoMCwgMilcbiAgICAgIC5tYXAoKHBhcnQpID0+IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkpXG4gICAgICAuam9pbignJyk7XG4gICAgcmV0dXJuIGluaXRpYWxzIHx8ICc/JztcbiAgfVxuXG4gIHJlbWF0Y2hPcHBvbmVudEF2YXRhclByb3BzKCk6IFVzZXJBdmF0YXJNZXRhZGF0YSB7XG4gICAgY29uc3Qgb3Bwb25lbnQgPSB0aGlzLnJlbWF0Y2hPcHBvbmVudCgpO1xuICAgIHJldHVybiB7XG4gICAgICB1c2VyOiB7XG4gICAgICAgIG5hbWU6IG9wcG9uZW50Py5uYW1lLFxuICAgICAgICBoYW5kbGU6IG9wcG9uZW50Py5oYW5kbGUsXG4gICAgICAgIGF2YXRhclVybDogb3Bwb25lbnQ/LmF2YXRhclVybCxcbiAgICAgIH0sXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIHdhaXRpbmdUaXRsZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzSm9pblJlcXVlc3RUaXRsZScpO1xuICAgIGlmICh0aGlzLm9ubGluZVJvbGUoKSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTG9iYnlHdWVzdFdhaXRpbmdUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nVGl0bGUnKTtcbiAgfVxuXG4gIHdhaXRpbmdCb2R5KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdEJvZHknKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGVuZGluZ0d1ZXN0TmFtZSgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ0JvZHknKTtcbiAgfVxuXG4gIGFzeW5jIGFjY2VwdE9ubGluZUd1ZXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkgcmV0dXJuO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgnYWNjZXB0Jyk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUuYWNjZXB0R3Vlc3QodGhpcy5nYW1lKCkuaWQpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzR3Vlc3RBY2NlcHRlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGFjY2VwdCBndWVzdCBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZWplY3RPbmxpbmVHdWVzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHJldHVybjtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ3JlamVjdCcpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub25saW5lLnJlamVjdEd1ZXN0KHRoaXMuZ2FtZSgpLmlkKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc0d1ZXN0UmVqZWN0ZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIyMDAsIHBvc2l0aW9uOiAndG9wJyB9KTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3Mud2FybmluZygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSByZWplY3QgZ3Vlc3QgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLmVycm9yKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25saW5lQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgb3Blbkhpc3RvcnlHYW1lKGVudHJ5OiBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5KTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVKb2luQ29kZS5zZXQoZW50cnkuZ2FtZUlkKTtcbiAgICB2b2lkIHRoaXMub3Blbk9ubGluZUdhbWUoZW50cnkuZ2FtZUlkKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jaGVzc2ltYWxzR2FtZVJvdXRlKGVudHJ5LmdhbWVJZCkpO1xuICB9XG5cbiAgaGlzdG9yeU91dGNvbWVMYWJlbChlbnRyeTogQ2hlc3NpbWFsc0hpc3RvcnlFbnRyeSk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3V0Y29tZUtleSA9IGBjaGVzc2ltYWxzSGlzdG9yeSR7ZW50cnkub3V0Y29tZVxuICAgICAgLnNwbGl0KCdfJylcbiAgICAgIC5tYXAoKHBhcnQpID0+IHRoaXMuY2FwaXRhbGl6ZShwYXJ0KSlcbiAgICAgIC5qb2luKCcnKX1gO1xuICAgIGNvbnN0IG9wcG9uZW50ID0gZW50cnkub3Bwb25lbnROYW1lXG4gICAgICA/IGAgwrcgJHt0aGlzLnQoJ2NoZXNzaW1hbHNIaXN0b3J5QWdhaW5zdCcpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgZW50cnkub3Bwb25lbnROYW1lKX1gXG4gICAgICA6ICcnO1xuICAgIHJldHVybiBgJHt0aGlzLnQob3V0Y29tZUtleSl9JHtvcHBvbmVudH1gO1xuICB9XG5cbiAgYXN5bmMgcmVxdWVzdE9ubGluZVJlbWF0Y2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSByZXR1cm47XG4gICAgaWYgKHRoaXMucmVtYXRjaFN0YXRlKCkgPT09ICdyZXF1ZXN0ZWQnIHx8IHRoaXMucmVtYXRjaExvYWRpbmcoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGFjY2VwdGluZyA9IHRoaXMucmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZyc7XG4gICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5leHQgPSBhd2FpdCB0aGlzLm9ubGluZS5yZXF1ZXN0UmVtYXRjaCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICBpZiAobmV4dD8uc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnKSB7XG4gICAgICAgIHRoaXMuYXBwbHlPbmxpbmVHYW1lU25hcHNob3QodGhpcy5nYW1lKCksIG5leHQpO1xuICAgICAgfVxuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KGFjY2VwdGluZyA/ICdjaGVzc2ltYWxzUmVtYXRjaEFjY2VwdGVkJyA6ICdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZFRvYXN0JyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAyNDAwLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVIaXN0b3J5V2F0Y2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKTtcbiAgICB0aGlzLmhpc3RvcnlXYXRjaFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLndhdGNoT25saW5lSGlzdG9yeSgpLCAyMjApO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaE9ubGluZUhpc3RvcnkoKTogdm9pZCB7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmUuY3VycmVudFVpZDtcbiAgICBpZiAoIXVpZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmhpc3RvcnlVaWQgPT09IHVpZCAmJiB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24pIHJldHVybjtcbiAgICB0aGlzLmhpc3RvcnlVaWQgPSB1aWQ7XG4gICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbiA9IHRoaXMub25saW5lLndhdGNoSGlzdG9yeSgyNCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChoaXN0b3J5KSA9PiB0aGlzLm9ubGluZUhpc3Rvcnkuc2V0KGhpc3RvcnkpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMub25saW5lSGlzdG9yeS5zZXQoW10pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaENoYWxsZW5nZVN0YXRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uKSByZXR1cm47XG4gICAgdGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3Mud2F0Y2hTdGF0cygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoc3RhdHMpID0+IHRoaXMuY2hhbGxlbmdlU3RhdHMuc2V0KHN0YXRzID8/IHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MuZW1wdHlTdGF0cygpKSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLmNoYWxsZW5nZVN0YXRzLnNldCh0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmVtcHR5U3RhdHMoKSksXG4gICAgfSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW5zU3Vic2NyaXB0aW9uID0gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy53YXRjaFJlY2VudFJ1bnMoNCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChydW5zKSA9PiB0aGlzLmNoYWxsZW5nZUhpc3Rvcnkuc2V0KHJ1bnMpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuY2hhbGxlbmdlSGlzdG9yeS5zZXQoW10pLFxuICAgIH0pO1xuICAgIHRoaXMuY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uID0gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy53YXRjaEFjdGl2ZVJ1bigpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocnVuKSA9PiB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pID8gcnVuIDogdW5kZWZpbmVkKSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKSxcbiAgICB9KTtcbiAgfVxuXG4gIHVubG9ja2VkTGFiZWwoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLnBsYXllcnNbY29sb3JdLnBvd2VyVW5sb2NrZWQgPyB0aGlzLnQoJ2NoZXNzaW1hbHNVbmxvY2tlZCcpIDogdGhpcy50KCdjaGVzc2ltYWxzTG9ja2VkJyk7XG4gIH1cblxuICBsb2NhbE1vZGVMYWJlbChtb2RlOiBDaGVzc2ltYWxzTG9jYWxNb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9kZSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2UnKTtcbiAgfVxuXG4gIGxvY2FsTW9kZURlc2NyaXB0aW9uKG1vZGU6IENoZXNzaW1hbHNMb2NhbE1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGVCb2R5JykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2VCb2R5Jyk7XG4gIH1cblxuICBzZWxlY3RCb3REaWZmaWN1bHR5KGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGRpZmZpY3VsdHkpO1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZGlmZmljdWx0eSA9PT0gZGlmZmljdWx0eSk7XG4gICAgaWYgKHByb2ZpbGUpIHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KHByb2ZpbGUuaWQpO1xuICB9XG5cbiAgYm90RGlmZmljdWx0eUxhYmVsKGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5KTogc3RyaW5nIHtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ2Vhc3knKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90RWFzeScpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnaGFyZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RIYXJkJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdE5vcm1hbCcpO1xuICB9XG5cbiAgYm90UHJvZmlsZUxhYmVsKHByb2ZpbGU6IENoZXNzaW1hbHNCb3RQcm9maWxlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KHByb2ZpbGUubGFiZWxLZXkpO1xuICB9XG5cbiAgYm90UHJvZmlsZURlc2NyaXB0aW9uKHByb2ZpbGU6IENoZXNzaW1hbHNCb3RQcm9maWxlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KHByb2ZpbGUuZGVzY3JpcHRpb25LZXkpO1xuICB9XG5cbiAgYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGU6IENoZXNzaW1hbHNCb3RQcm9maWxlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzQm90JHt0aGlzLmNhcGl0YWxpemUocHJvZmlsZS5pZCl9VGVuZGVuY3lgKTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVBdmF0YXIocHJvZmlsZUlkOiBDaGVzc2ltYWxzQm90UHJvZmlsZUlkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ib3RQcm9maWxlcy5maW5kKChwcm9maWxlKSA9PiBwcm9maWxlLmlkID09PSBwcm9maWxlSWQpPy5hdmF0YXIgPz8gJ+KZnyc7XG4gIH1cblxuICBjaGFsbGVuZ2VCb3RQcm9maWxlKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IENoZXNzaW1hbHNCb3RQcm9maWxlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ib3RQcm9maWxlcy5maW5kKChwcm9maWxlKSA9PiBwcm9maWxlLmlkID09PSBib3QucHJvZmlsZUlkKTtcbiAgfVxuXG4gIGNoYWxsZW5nZU9wZW5pbmdCb3QoKTogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFkZGVyWzBdO1xuICB9XG5cbiAgY2hhbGxlbmdlTWVudUJvdCgpOiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHtcbiAgICBjb25zdCBhY3RpdmVSdW4gPSB0aGlzLnJlc3VtYWJsZUNoYWxsZW5nZVJ1bigpO1xuICAgIGlmIChhY3RpdmVSdW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhZGRlcltNYXRoLm1heCgwLCBhY3RpdmVSdW4uY3VycmVudFJvdW5kIC0gMSldID8/IHRoaXMuY2hhbGxlbmdlTGFkZGVyWzBdO1xuICAgIH1cbiAgICBjb25zdCBiZXN0Um91bmQgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZDtcbiAgICBjb25zdCBuZXh0Um91bmRJbmRleCA9IE1hdGgubWluKE1hdGgubWF4KGJlc3RSb3VuZCwgMCksIHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCAtIDEpO1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhZGRlcltuZXh0Um91bmRJbmRleF07XG4gIH1cblxuICBjaGFsbGVuZ2VNZW51Um91bmRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNoYWxsZW5nZU1lbnVCb3QoKS5yb3VuZH0vJHt0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGh9YDtcbiAgfVxuXG4gIGNoYWxsZW5nZU1lbnVDbGVhcmVkUm91bmQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBhY3RpdmVSdW4gPSB0aGlzLnJlc3VtYWJsZUNoYWxsZW5nZVJ1bigpO1xuICAgIGlmIChhY3RpdmVSdW4pIHJldHVybiBNYXRoLm1heCgwLCBhY3RpdmVSdW4uY3VycmVudFJvdW5kIC0gMSk7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90TmFtZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmNoYWxsZW5nZUJvdFByb2ZpbGUoYm90KTtcbiAgICByZXR1cm4gcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZUxhYmVsKHByb2ZpbGUpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm90RGlmZmljdWx0eUxhYmVsKGJvdC5kaWZmaWN1bHR5KTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdFN0eWxlTGluZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmNoYWxsZW5nZUJvdFByb2ZpbGUoYm90KTtcbiAgICByZXR1cm4gcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGUpIDogdGhpcy50KGJvdC5pbnRyb0tleSk7XG4gIH1cblxuICBjaGFsbGVuZ2VCb3RTdGF0dXNMYWJlbChib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsZWFyZWRSb3VuZCA9IHRoaXMuY2hhbGxlbmdlTWVudUNsZWFyZWRSb3VuZCgpO1xuICAgIGNvbnN0IGN1cnJlbnRSb3VuZCA9IHRoaXMuY2hhbGxlbmdlTWVudUJvdCgpLnJvdW5kO1xuICAgIGlmIChjbGVhcmVkUm91bmQgPj0gYm90LnJvdW5kKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxDbGVhcmVkJyk7XG4gICAgaWYgKGN1cnJlbnRSb3VuZCA9PT0gYm90LnJvdW5kKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxDdXJyZW50Jyk7XG4gICAgaWYgKGJvdC5yb3VuZCA9PT0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxGaW5hbCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSaXZhbFBlbmRpbmcnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJ1blN0YXR1c0xhYmVsKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHN0cmluZyB7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQ29tcGxldGVkJyk7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdmYWlsZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzRmFpbGVkJyk7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdhYmFuZG9uZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQWJhbmRvbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0FjdGl2ZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlUnVuTGluZShydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSdW5MaW5lJylcbiAgICAgIC5yZXBsYWNlKCd7cm91bmR9JywgU3RyaW5nKHJ1bi5jdXJyZW50Um91bmQpKVxuICAgICAgLnJlcGxhY2UoJ3t3aW5zfScsIFN0cmluZyhydW4ud2lucykpO1xuICB9XG5cbiAgaXNDaGFsbGVuZ2VBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSAhPT0gJ2lkbGUnICYmICEhdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIHNob3VsZFNob3dDaGFsbGVuZ2VJbkdhbWVQYW5lbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucHJvamVjdGlvbk1vZGUgJiYgdGhpcy5zY3JlZW4oKSA9PT0gJ2dhbWUnICYmIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnICYmICEhdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIHNob3dDaGFsbGVuZ2VJbnRybygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdwbGF5aW5nJyB8fCAhdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmNoYWxsZW5nZUludHJvVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmNoYWxsZW5nZUludHJvVGltZXIpO1xuICAgIHRoaXMuY2hhbGxlbmdlSW50cm9WaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0aGlzLmNoYWxsZW5nZUludHJvVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmRpc21pc3NDaGFsbGVuZ2VJbnRybygpKTtcbiAgICB9LCAyNDAwKTtcbiAgfVxuXG4gIGRpc21pc3NDaGFsbGVuZ2VJbnRybygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyKTtcbiAgICAgIHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5jaGFsbGVuZ2VJbnRyb1Zpc2libGUuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVBdmF0YXIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgOiAn4pmfJztcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVSaXZhbE5hbWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUoYm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVSaXZhbExpbmUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGlmICghYm90KSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMaXZlUml2YWxMaW5lJylcbiAgICAgIC5yZXBsYWNlKCd7c3R5bGV9JywgdGhpcy5jaGFsbGVuZ2VCb3RTdHlsZUxpbmUoYm90KSlcbiAgICAgIC5yZXBsYWNlKCd7ZGlmZmljdWx0eX0nLCB0aGlzLmNoYWxsZW5nZUJvdERpZmZpY3VsdHlMYWJlbChib3QpKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVTdHJlYWtMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgeCR7dGhpcy5jaGFsbGVuZ2VSdW4oKT8uY3VycmVudFN0cmVhayA/PyAwfWA7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlQm9hcmRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvYXJkU2l6ZSA9IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk/LmJvYXJkU2l6ZSA/PyB0aGlzLmdhbWUoKS5ib2FyZFNpemU7XG4gICAgcmV0dXJuIGAke2JvYXJkU2l6ZX14JHtib2FyZFNpemV9YDtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVUaW1lckxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk/LnJvdW5kID09PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGhcbiAgICAgID8gQ0hFU1NJTUFMU19DSEFMTEVOR0VfRklOQUxfVFVSTl9TRUNPTkRTXG4gICAgICA6IENIRVNTSU1BTFNfQ0hBTExFTkdFX1RVUk5fU0VDT05EUztcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVHVyblNlY29uZHMnKS5yZXBsYWNlKCd7c2Vjb25kc30nLCBTdHJpbmcoc2Vjb25kcykpO1xuICB9XG5cbiAgY2hhbGxlbmdlUm91bmRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIGAke3J1bi5jdXJyZW50Um91bmR9LyR7dGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RofWA7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlc0xhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1bikgcmV0dXJuICctJztcbiAgICByZXR1cm4gJ+KZpScucmVwZWF0KE1hdGgubWF4KDAsIHJ1bi5saXZlc1JlbWFpbmluZykpIHx8ICcwJztcbiAgfVxuXG4gIGNoYWxsZW5nZU91dGNvbWVUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBoYXNlID0gdGhpcy5jaGFsbGVuZ2VQaGFzZSgpO1xuICAgIGlmIChwaGFzZSA9PT0gJ2NvbXBsZXRlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb21wbGV0ZWRUaXRsZScpO1xuICAgIGlmIChwaGFzZSA9PT0gJ2ZhaWxlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGYWlsZWRUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKVxuICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFdvblRpdGxlJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRMb3N0VGl0bGUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZU91dGNvbWVCb2R5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMoKTtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IGJvdE5hbWUgPSBib3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUoYm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgICBjb25zdCBib2R5S2V5ID1cbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2NvbXBsZXRlZCdcbiAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZUNvbXBsZXRlZEJvZHknXG4gICAgICAgIDogdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAnZmFpbGVkJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGYWlsZWRCb2R5J1xuICAgICAgICAgIDogdGhpcy5jaGFsbGVuZ2VMYXN0V29uKClcbiAgICAgICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFdvbkJvZHknXG4gICAgICAgICAgICA6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRMb3N0Qm9keSc7XG4gICAgcmV0dXJuIHRoaXMudChib2R5S2V5KVxuICAgICAgLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSlcbiAgICAgIC5yZXBsYWNlKCd7bGl2ZXN9JywgU3RyaW5nKHJ1bj8ubGl2ZXNSZW1haW5pbmcgPz8gMCkpXG4gICAgICAucmVwbGFjZSgne3dpbnN9JywgU3RyaW5nKHJ1bj8ud2lucyA/PyAwKSlcbiAgICAgIC5yZXBsYWNlKCd7cG93ZXJzfScsIFN0cmluZyh0aGlzLnRvdGFsQ2hhbGxlbmdlUG93ZXJzKHN0YXRzKSkpO1xuICB9XG5cbiAgY2hhbGxlbmdlU3VtbWFyeUF2YXRhcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgcmV0dXJuIGJvdCA/IHRoaXMuYm90UHJvZmlsZUF2YXRhcihib3QucHJvZmlsZUlkKSA6ICfimZ8nO1xuICB9XG5cbiAgY2hhbGxlbmdlUm91bmRTdGFnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAncGxheWluZydcbiAgICAgID8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKVxuICAgICAgOiB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IHJvdW5kID0gYm90Py5yb3VuZCA/PyB0aGlzLmNoYWxsZW5nZVJ1bigpPy5jdXJyZW50Um91bmQgPz8gMTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGFnZScpXG4gICAgICAucmVwbGFjZSgne3JvdW5kfScsIFN0cmluZyhyb3VuZCkpXG4gICAgICAucmVwbGFjZSgne3RvdGFsfScsIFN0cmluZyh0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJpdmFsVm9pY2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgY29uc3QgYm90TmFtZSA9IGJvdCA/IHRoaXMuY2hhbGxlbmdlQm90TmFtZShib3QpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSaXZhbFZvaWNlJykucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJpdmFsVm9pY2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBoYXNlID0gdGhpcy5jaGFsbGVuZ2VQaGFzZSgpO1xuICAgIGlmIChwaGFzZSA9PT0gJ2NvbXBsZXRlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZUNvbXBsZXRlZFRpdGxlJyk7XG4gICAgaWYgKHBoYXNlID09PSAnZmFpbGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlRmFpbGVkVGl0bGUnKTtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpID8gJ1dvbicgOiAnTG9zdCc7XG4gICAgY29uc3QgYm90VGl0bGUgPSB0aGlzLmNoYWxsZW5nZVZvaWNlVGV4dChib3QsIHJlc3VsdCwgJ1RpdGxlJyk7XG4gICAgaWYgKGJvdFRpdGxlKSByZXR1cm4gYm90VGl0bGU7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlV29uVGl0bGUnKVxuICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZUxvc3RUaXRsZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlUml2YWxWb2ljZUJvZHkoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IGJvdE5hbWUgPSBib3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUoYm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSA/ICdXb24nIDogJ0xvc3QnO1xuICAgIGNvbnN0IGJvdEJvZHkgPSB0aGlzLmNoYWxsZW5nZVZvaWNlVGV4dChib3QsIHJlc3VsdCwgJ0JvZHknKTtcbiAgICBpZiAoYm90Qm9keSkgcmV0dXJuIGJvdEJvZHkucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKTtcbiAgICBjb25zdCBrZXkgPVxuICAgICAgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAnY29tcGxldGVkJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VDb21wbGV0ZWRCb2R5J1xuICAgICAgICA6IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2ZhaWxlZCdcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VGYWlsZWRCb2R5J1xuICAgICAgICAgIDogdGhpcy5jaGFsbGVuZ2VMYXN0V29uKClcbiAgICAgICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZVdvbkJvZHknXG4gICAgICAgICAgICA6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VMb3N0Qm9keSc7XG4gICAgcmV0dXJuIHRoaXMudChrZXkpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGNoYWxsZW5nZVZvaWNlVGV4dChcbiAgICBib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QgfCB1bmRlZmluZWQsXG4gICAgcmVzdWx0OiAnV29uJyB8ICdMb3N0JyxcbiAgICBwYXJ0OiAnVGl0bGUnIHwgJ0JvZHknLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghYm90KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGtleSA9IGBjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2Uke3Jlc3VsdH0ke3RoaXMuY2FwaXRhbGl6ZShib3QuaWQpfSR7cGFydH1gO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLnQoa2V5KTtcbiAgICByZXR1cm4gdGV4dCA9PT0ga2V5ID8gdW5kZWZpbmVkIDogdGV4dDtcbiAgfVxuXG4gIGNoYWxsZW5nZU5leHRSaXZhbExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZU5leHRSaXZhbExhYmVsJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmV0cnlSaXZhbExhYmVsJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VDb250aW51ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJldHJ5Uml2YWwnKTtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmIChydW4/LmN1cnJlbnRSb3VuZCA9PT0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxSb3VuZEN0YScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VOZXh0Uml2YWwnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZU5leHRSaXZhbEhpbnQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY2hhbGxlbmdlTGFzdFdvbigpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmV0cnlIaW50Jyk7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAocnVuPy5jdXJyZW50Um91bmQgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZpbmFsUm91bmRIaW50Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZU5leHRSaXZhbEhpbnQnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVdpblJhdGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZGVXaW5SYXRlTGFiZWwoJ2NoYWxsZW5nZScpO1xuICB9XG5cbiAgbW9kZVdpblJhdGVMYWJlbChtb2RlOiBDaGVzc2ltYWxzU3RhdHNNb2RlKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKTtcbiAgICBjb25zdCBtb2RlU3RhdHMgPSBzdGF0cy5tb2RlU3RhdHNbbW9kZV07XG4gICAgY29uc3QgcGxheWVkID0gbW9kZVN0YXRzLnBsYXllZDtcbiAgICBpZiAoIXBsYXllZCkgcmV0dXJuICctJztcbiAgICByZXR1cm4gYCR7TWF0aC5yb3VuZCgobW9kZVN0YXRzLndpbnMgLyBwbGF5ZWQpICogMTAwKX0lYDtcbiAgfVxuXG4gIG1vZGVTdGF0c0xpbmUobW9kZTogQ2hlc3NpbWFsc1N0YXRzTW9kZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCkubW9kZVN0YXRzW21vZGVdO1xuICAgIGlmICghc3RhdHMucGxheWVkKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTW9kZVN0YXRzRW1wdHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTW9kZVN0YXRzTGluZScpXG4gICAgICAucmVwbGFjZSgne3BsYXllZH0nLCBTdHJpbmcoc3RhdHMucGxheWVkKSlcbiAgICAgIC5yZXBsYWNlKCd7d2luc30nLCBTdHJpbmcoc3RhdHMud2lucykpXG4gICAgICAucmVwbGFjZSgne2xvc3Nlc30nLCBTdHJpbmcoc3RhdHMubG9zc2VzKSk7XG4gIH1cblxuICBwcm9ncmVzc1Bvd2VyU3RhdHMoKTogQ2hlc3NpbWFsc1Byb2dyZXNzTWV0cmljVmlld1tdIHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKTtcbiAgICByZXR1cm4gW1xuICAgICAgeyBsYWJlbDogdGhpcy5hbmltYWxMYWJlbCgnZWFnbGUnKSwgdmFsdWU6IHN0YXRzLnBvd2Vyc1VzZWQuZWFnbGUgfSxcbiAgICAgIHsgbGFiZWw6IHRoaXMuYW5pbWFsTGFiZWwoJ2J1bGwnKSwgdmFsdWU6IHN0YXRzLnBvd2Vyc1VzZWQuYnVsbCB9LFxuICAgICAgeyBsYWJlbDogdGhpcy5hbmltYWxMYWJlbCgna2FuZ2Fyb28nKSwgdmFsdWU6IHN0YXRzLnBvd2Vyc1VzZWQua2FuZ2Fyb28gfSxcbiAgICAgIHsgbGFiZWw6IHRoaXMuYW5pbWFsTGFiZWwoJ2xpb24nKSwgdmFsdWU6IHN0YXRzLnBvd2Vyc1VzZWQubGlvbiB9LFxuICAgICAgeyBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUG93ZXJDYXB0dXJlcycpLCB2YWx1ZTogc3RhdHMucG93ZXJDYXB0dXJlcyB9LFxuICAgICAgeyBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUHJvbW90aW9ucycpLCB2YWx1ZTogc3RhdHMucHJvbW90aW9ucyB9LFxuICAgIF07XG4gIH1cblxuICBjaGFsbGVuZ2VBY2hpZXZlbWVudHMoKTogQ2hlc3NpbWFsc0FjaGlldmVtZW50Vmlld1tdIHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKTtcbiAgICBjb25zdCBib3RTdGF0cyA9IHN0YXRzLm1vZGVTdGF0cy5ib3Q7XG4gICAgY29uc3Qgb25saW5lU3RhdHMgPSBzdGF0cy5tb2RlU3RhdHMub25saW5lO1xuICAgIGNvbnN0IHRvdGFsUG93ZXJzID0gc3RhdHMucG93ZXJzVXNlZC5lYWdsZSArIHN0YXRzLnBvd2Vyc1VzZWQuYnVsbCArIHN0YXRzLnBvd2Vyc1VzZWQua2FuZ2Fyb28gKyBzdGF0cy5wb3dlcnNVc2VkLmxpb247XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50Rmlyc3RXaW5UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEZpcnN0V2luQm9keScpLFxuICAgICAgICBpY29uOiAnMScsXG4gICAgICAgIHVubG9ja2VkOiBzdGF0cy50b3RhbFdpbnMgPiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50U3RyZWFrVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRTdHJlYWtCb2R5JyksXG4gICAgICAgIGljb246ICczJyxcbiAgICAgICAgdW5sb2NrZWQ6IHN0YXRzLmJlc3RXaW5TdHJlYWsgPj0gMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudFBvd2VyVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRQb3dlckJvZHknKSxcbiAgICAgICAgaWNvbjogJ1AnLFxuICAgICAgICB1bmxvY2tlZDogdG90YWxQb3dlcnMgPj0gMTAgfHwgc3RhdHMucG93ZXJDYXB0dXJlcyA+PSA1LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50Q2hhbXBpb25UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudENoYW1waW9uQm9keScpLFxuICAgICAgICBpY29uOiAnOCcsXG4gICAgICAgIHVubG9ja2VkOiBzdGF0cy5jaGFsbGVuZ2VzQ29tcGxldGVkID4gMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEJvdFdpblRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50Qm90V2luQm9keScpLFxuICAgICAgICBpY29uOiAnQicsXG4gICAgICAgIHVubG9ja2VkOiBib3RTdGF0cy53aW5zID4gMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEJvdEZpdmVUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEJvdEZpdmVCb2R5JyksXG4gICAgICAgIGljb246ICc1JyxcbiAgICAgICAgdW5sb2NrZWQ6IGJvdFN0YXRzLndpbnMgPj0gNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudE9ubGluZVdpblRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50T25saW5lV2luQm9keScpLFxuICAgICAgICBpY29uOiAnTycsXG4gICAgICAgIHVubG9ja2VkOiBvbmxpbmVTdGF0cy53aW5zID4gMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudE9ubGluZUZpdmVUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudE9ubGluZUZpdmVCb2R5JyksXG4gICAgICAgIGljb246ICc1JyxcbiAgICAgICAgdW5sb2NrZWQ6IG9ubGluZVN0YXRzLnBsYXllZCA+PSA1LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY2hhbGxlbmdlRmVhdHVyZWRBY2hpZXZlbWVudHMoKTogQ2hlc3NpbWFsc0FjaGlldmVtZW50Vmlld1tdIHtcbiAgICBjb25zdCBhY2hpZXZlbWVudHMgPSB0aGlzLmNoYWxsZW5nZUFjaGlldmVtZW50cygpO1xuICAgIHJldHVybiBbXG4gICAgICAuLi5hY2hpZXZlbWVudHMuZmlsdGVyKChhY2hpZXZlbWVudCkgPT4gYWNoaWV2ZW1lbnQudW5sb2NrZWQpLFxuICAgICAgLi4uYWNoaWV2ZW1lbnRzLmZpbHRlcigoYWNoaWV2ZW1lbnQpID0+ICFhY2hpZXZlbWVudC51bmxvY2tlZCksXG4gICAgXS5zbGljZSgwLCA0KTtcbiAgfVxuXG4gIGNoYWxsZW5nZVRlbnNpb25Nb21lbnQoKTogQ2hlc3NpbWFsc0NoYWxsZW5nZVRlbnNpb25WaWV3IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgIT09ICdwbGF5aW5nJyAmJiBwaGFzZSAhPT0gJ2JldHdlZW4nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBuZXh0Qm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBsYXN0Qm90ID0gcGhhc2UgPT09ICdwbGF5aW5nJyA/IG5leHRCb3QgOiB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyBuZXh0Qm90O1xuICAgIGNvbnN0IGJvdE5hbWUgPSBsYXN0Qm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGxhc3RCb3QpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuXG4gICAgaWYgKHJ1bi5saXZlc1JlbWFpbmluZyA8PSAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGFzdExpZmVUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMYXN0TGlmZUJvZHknKS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpLFxuICAgICAgICBpY29uOiAn4pmlJyxcbiAgICAgICAgY3JpdGljYWw6IHRydWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZW1hdGNoVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVtYXRjaEJvZHknKS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpLFxuICAgICAgICBpY29uOiAn4oa7JyxcbiAgICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAocnVuLmN1cnJlbnRSb3VuZCA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFJpdmFsVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxSaXZhbEJvZHknKSxcbiAgICAgICAgaWNvbjogJzgnLFxuICAgICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChydW4uY3VycmVudFJvdW5kID49IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFpvbmVUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFpvbmVCb2R5JyksXG4gICAgICAgIGljb246ICc3JyxcbiAgICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAocnVuLmN1cnJlbnRTdHJlYWsgPj0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0cmVha1RpdGxlJykucmVwbGFjZSgne3N0cmVha30nLCBTdHJpbmcocnVuLmN1cnJlbnRTdHJlYWspKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RyZWFrQm9keScpLFxuICAgICAgICBpY29uOiBTdHJpbmcocnVuLmN1cnJlbnRTdHJlYWspLFxuICAgICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGFsbGVuZ2VIYXNOZXdSZWNvcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkKCk7XG4gIH1cblxuICB0b3RhbENoYWxsZW5nZVBvd2VycyhzdGF0cz86IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzKTogbnVtYmVyIHtcbiAgICBpZiAoIXN0YXRzKSByZXR1cm4gMDtcbiAgICByZXR1cm4gc3RhdHMucG93ZXJzVXNlZC5lYWdsZSArIHN0YXRzLnBvd2Vyc1VzZWQuYnVsbCArIHN0YXRzLnBvd2Vyc1VzZWQua2FuZ2Fyb28gKyBzdGF0cy5wb3dlcnNVc2VkLmxpb247XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUdhbWVTY29yZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBwbGF5ZXJQcmVmaXg/OiBzdHJpbmcpOiBDaGVzc2ltYWxzR2FtZVNjb3JlVmlldyB7XG4gICAgbGV0IHNjb3JlID0gMDtcbiAgICBsZXQgY29tYm8gPSAwO1xuICAgIGxldCBiZXN0Q29tYm8gPSAwO1xuICAgIGxldCBiZXN0TW92ZTogQ2hlc3NpbWFsc01vdmVTY29yZVZpZXcgfCB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlKSBjb250aW51ZTtcbiAgICAgIGlmIChwbGF5ZXJQcmVmaXggJiYgIW1vdmUucGllY2VJZC5zdGFydHNXaXRoKHBsYXllclByZWZpeCkpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCBtb3ZlQ29sb3IgPSB0aGlzLmNvbG9yRnJvbVBpZWNlSWQobW92ZS5waWVjZUlkKTtcbiAgICAgIGNvbnN0IGlzUHJvbW90aW9uID0gZW50cnkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIGVudHJ5Lndpbm5lclJlYXNvbiA9PT0gJ3Byb21vdGlvbicgJiYgZW50cnkud2lubmVyID09PSBtb3ZlQ29sb3I7XG4gICAgICBjb25zdCBtb3ZlU2NvcmUgPSB0aGlzLnNjb3JlQ2hlc3NpbWFsc01vdmUobW92ZSwgaXNQcm9tb3Rpb24sIGNvbWJvKTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgICBjb21ibyArPSAxO1xuICAgICAgICBiZXN0Q29tYm8gPSBNYXRoLm1heChiZXN0Q29tYm8sIGNvbWJvKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbWJvID0gMDtcbiAgICAgIH1cblxuICAgICAgc2NvcmUgKz0gbW92ZVNjb3JlLnNjb3JlO1xuICAgICAgaWYgKCFiZXN0TW92ZSB8fCBtb3ZlU2NvcmUuc2NvcmUgPiBiZXN0TW92ZS5zY29yZSkgYmVzdE1vdmUgPSBtb3ZlU2NvcmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgYmVzdENvbWJvLCBiZXN0TW92ZSwgc2NvcmUgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2NvcmVDaGVzc2ltYWxzTW92ZShtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgcHJvbW90aW9uOiBib29sZWFuLCBjdXJyZW50Q29tYm86IG51bWJlcik6IENoZXNzaW1hbHNNb3ZlU2NvcmVWaWV3IHtcbiAgICBjb25zdCBjYXB0dXJlID0gISFtb3ZlLmNhcHR1cmVzUGllY2VJZDtcbiAgICBjb25zdCBjb21ibyA9IGNhcHR1cmUgPyBjdXJyZW50Q29tYm8gKyAxIDogMDtcbiAgICBjb25zdCBzY29yZSA9IDFcbiAgICAgICsgKGNhcHR1cmUgPyAobW92ZS5hbmltYWwgPyA1IDogMykgOiAwKVxuICAgICAgKyAobW92ZS5hbmltYWwgJiYgIWNhcHR1cmUgPyAxIDogMClcbiAgICAgICsgKHByb21vdGlvbiA/IDggOiAwKVxuICAgICAgKyAoY29tYm8gPiAxID8gY29tYm8gLSAxIDogMCk7XG4gICAgY29uc3QgbGFiZWxLZXkgPSBwcm9tb3Rpb25cbiAgICAgID8gJ2NoZXNzaW1hbHNTY29yZVByb21vdGlvbidcbiAgICAgIDogY2FwdHVyZSAmJiBtb3ZlLmFuaW1hbFxuICAgICAgICA/ICdjaGVzc2ltYWxzU2NvcmVQb3dlckNhcHR1cmUnXG4gICAgICAgIDogY2FwdHVyZVxuICAgICAgICAgID8gJ2NoZXNzaW1hbHNTY29yZUNhcHR1cmUnXG4gICAgICAgICAgOiBtb3ZlLmFuaW1hbFxuICAgICAgICAgICAgPyAnY2hlc3NpbWFsc1Njb3JlUG93ZXJNb3ZlJ1xuICAgICAgICAgICAgOiAnY2hlc3NpbWFsc1Njb3JlTW92ZSc7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbWJvLFxuICAgICAgbGFiZWw6IHRoaXMudChsYWJlbEtleSksXG4gICAgICBzY29yZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xvckZyb21QaWVjZUlkKHBpZWNlSWQ6IHN0cmluZyk6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHBpZWNlSWQuc3RhcnRzV2l0aCgnVycpIHx8IHBpZWNlSWQuc3RhcnRzV2l0aCgnVFcnKSkgcmV0dXJuICd3aGl0ZSc7XG4gICAgaWYgKHBpZWNlSWQuc3RhcnRzV2l0aCgnQicpIHx8IHBpZWNlSWQuc3RhcnRzV2l0aCgnVEInKSkgcmV0dXJuICdibGFjayc7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2hhbGxlbmdlUm91bmRTdGF0cyhnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMge1xuICAgIGNvbnN0IHJvdW5kU2NvcmUgPSB0aGlzLmNyZWF0ZUdhbWVTY29yZShnYW1lLCAnVycpO1xuICAgIGNvbnN0IHN0YXRzOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyA9IHtcbiAgICAgIHBvd2Vyc1VzZWQ6IHsgZWFnbGU6IDAsIGJ1bGw6IDAsIGthbmdhcm9vOiAwLCBsaW9uOiAwIH0sXG4gICAgICBwb3dlckNhcHR1cmVzOiAwLFxuICAgICAgcHJvbW90aW9uczogZ2FtZS53aW5uZXIgPT09ICd3aGl0ZScgJiYgZ2FtZS53aW5uZXJSZWFzb24gPT09ICdwcm9tb3Rpb24nID8gMSA6IDAsXG4gICAgICBjYXB0dXJlczogMCxcbiAgICAgIG1vdmVzOiAwLFxuICAgICAgc2NvcmU6IHJvdW5kU2NvcmUuc2NvcmUsXG4gICAgICBiZXN0TW92ZVNjb3JlOiByb3VuZFNjb3JlLmJlc3RNb3ZlPy5zY29yZSA/PyAwLFxuICAgICAgYmVzdENvbWJvOiByb3VuZFNjb3JlLmJlc3RDb21ibyxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZ2FtZS5tb3ZlSGlzdG9yeSA/PyBbXSkge1xuICAgICAgY29uc3QgbW92ZSA9IGVudHJ5Lm1vdmU7XG4gICAgICBpZiAoIW1vdmUgfHwgIW1vdmUucGllY2VJZC5zdGFydHNXaXRoKCdXJykpIGNvbnRpbnVlO1xuICAgICAgc3RhdHMubW92ZXMgKz0gMTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkgc3RhdHMuY2FwdHVyZXMgKz0gMTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIGNvbnRpbnVlO1xuICAgICAgc3RhdHMucG93ZXJzVXNlZFttb3ZlLmFuaW1hbF0gKz0gMTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkgc3RhdHMucG93ZXJDYXB0dXJlcyArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdHM7XG4gIH1cblxuICBwcml2YXRlIG1vZGVTdGF0c1Jlc3VsdChnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogeyBtb2RlOiBFeGNsdWRlPENoZXNzaW1hbHNTdGF0c01vZGUsICdjaGFsbGVuZ2UnPjsgd29uOiBib29sZWFuIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMudHV0b3JpYWxNb2RlKCkgfHwgIWdhbWUud2lubmVyKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHsgbW9kZTogJ2JvdCcsIHdvbjogZ2FtZS53aW5uZXIgPT09ICd3aGl0ZScgfTtcbiAgICB9XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKSA/PyB0aGlzLm9ubGluZS5jdXJyZW50VWlkO1xuICAgIGNvbnN0IHNpZGUgPSB1aWQgPyB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudFNpZGUoZ2FtZSwgdWlkKSA6IHVuZGVmaW5lZDtcbiAgICBpZiAoc2lkZSAhPT0gJ3doaXRlJyAmJiBzaWRlICE9PSAnYmxhY2snKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7IG1vZGU6ICdvbmxpbmUnLCB3b246IGdhbWUud2lubmVyID09PSBzaWRlIH07XG4gIH1cblxuICBhbmltYWxMYWJlbCh0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc0FuaW1hbCR7dGhpcy5jYXBpdGFsaXplKHR5cGUpfWApO1xuICB9XG5cbiAgYW5pbWFsR2x5cGgodHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdseXBoczogUmVjb3JkPENoZXNzaW1hbHNBbmltYWxUeXBlLCBzdHJpbmc+ID0ge1xuICAgICAgZWFnbGU6ICfihpcnLFxuICAgICAgYnVsbDogJ+KXhicsXG4gICAgICBrYW5nYXJvbzogJ+KktCcsXG4gICAgICBsaW9uOiAn4pmaJyxcbiAgICB9O1xuICAgIHJldHVybiBnbHlwaHNbdHlwZV07XG4gIH1cblxuICBjYW5SZXZpZXdQcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKSA/PyAwKSA+IDA7XG4gIH1cblxuICBjYW5SZXZpZXdOZXh0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIHJldHVybiBpbmRleCAhPT0gdW5kZWZpbmVkICYmIGluZGV4IDwgdGhpcy5yZXBsYXlFbnRyaWVzKCkubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHJldmlld1ByZXZpb3VzTW92ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA8PSAwKSByZXR1cm47XG4gICAgdGhpcy5yZXZpZXdJbmRleC5zZXQoaW5kZXggLSAxKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmV2aWV3TmV4dE1vdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPj0gdGhpcy5yZXBsYXlFbnRyaWVzKCkubGVuZ3RoIC0gMSkgcmV0dXJuO1xuICAgIHRoaXMucmV2aWV3SW5kZXguc2V0KGluZGV4ICsgMSk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcGxheVBvc2l0aW9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5yZXBsYXlFbnRyaWVzKClbaW5kZXhdO1xuICAgIGlmICghZW50cnkgfHwgZW50cnkubW92ZU51bWJlciA9PT0gMCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1JlcGxheVN0YXJ0Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1JlcGxheU1vdmUnKVxuICAgICAgLnJlcGxhY2UoJ3ttb3ZlfScsIGAke2VudHJ5Lm1vdmVOdW1iZXJ9YClcbiAgICAgIC5yZXBsYWNlKCd7dG90YWx9JywgYCR7dGhpcy5nYW1lKCkubW92ZUNvdW50fWApO1xuICB9XG5cbiAgc2hvdWxkU2hvd0ZpbmlzaGVkT3ZlcmxheSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgcmV0dXJuIGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPT09IHRoaXMucmVwbGF5RW50cmllcygpLmxlbmd0aCAtIDE7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlSb3dJbmRleChyb3c6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSAxIC0gcm93IDogcm93O1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Q29sSW5kZXgoY29sOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIC0gMSAtIGNvbCA6IGNvbDtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hPbmxpbmVHYW1lKGdhbWVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24gPSB0aGlzLm9ubGluZS53YXRjaEdhbWUoZ2FtZUlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lTm90Rm91bmQnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnbGl2ZScpO1xuICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZ2FtZSgpO1xuICAgICAgICAgIHRoaXMuYXBwbHlPbmxpbmVHYW1lU25hcHNob3QocHJldmlvdXMsIHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Vycm9yJyk7XG4gICAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkQm9keScpKTtcbiAgICAgICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbmxpbmVPcGVuRXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcbiAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygnQ0hFU1NJTUFMU19HQU1FX0VYUElSRUQnKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUV4cGlyZWRCb2R5Jyk7XG4gICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ0NIRVNTSU1BTFNfR0FNRV9OT1RfRk9VTkQnKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZU5vdEZvdW5kJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5T25saW5lR2FtZVNuYXBzaG90KHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuZ2FtZS5zZXQoc3RhdGUpO1xuICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgIGlmIChwcmV2aW91cy5pZCAhPT0gc3RhdGUuaWQgfHwgcHJldmlvdXMuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IHRoaXMucmV2aWV3SW5kZXgoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB9XG4gICAgaWYgKHByZXZpb3VzLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyAmJiBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycpIHtcbiAgICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoc3RhdGUuYm9hcmRTaXplKTtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICBjb25zdCBwcmV2aW91c1BlbmRpbmdLZXkgPSBwcmV2aW91cy5pZCA9PT0gc3RhdGUuaWQgPyB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudEtleShwcmV2aW91cy5vbmxpbmU/LnBlbmRpbmdHdWVzdCkgOiAnJztcbiAgICBjb25zdCBuZXh0UGVuZGluZ0tleSA9IHRoaXMub25saW5lLnBhcnRpY2lwYW50S2V5KHN0YXRlLm9ubGluZT8ucGVuZGluZ0d1ZXN0KTtcbiAgICBpZiAoXG4gICAgICBzdGF0ZS5zdGF0dXMgPT09ICd3YWl0aW5nJyAmJlxuICAgICAgdGhpcy5vbmxpbmUuaXNIb3N0V2FpdGluZyhzdGF0ZSwgdGhpcy5vbmxpbmUuY3VycmVudFVpZCkgJiZcbiAgICAgICEhbmV4dFBlbmRpbmdLZXkgJiZcbiAgICAgIG5leHRQZW5kaW5nS2V5ICE9PSBwcmV2aW91c1BlbmRpbmdLZXlcbiAgICApIHtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0Qm9keScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wZW5kaW5nR3Vlc3ROYW1lKCkpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMzIwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNKb2luUmVxdWVzdCgpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3Muc3VjY2VzcygpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBwcmV2aW91cy5jdXJyZW50VHVybiAhPT0gc3RhdGUuY3VycmVudFR1cm4gJiZcbiAgICAgIHN0YXRlLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyAmJlxuICAgICAgIXRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoc3RhdGUpXG4gICAgKSB7XG4gICAgICB0aGlzLnRyaWdnZXJCb2FyZE9yaWVudGF0aW9uKCk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgcHJldmlvdXMuc3RhdHVzICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHN0YXRlKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1pbmlHYW1lc0Jhc2VSb3V0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlID0gKHRoaXMubWluaUdhbWVzUm91dGUgfHwgJy9taW5pLWdhbWVzJykudHJpbSgpO1xuICAgIHJldHVybiBgLyR7cm91dGUucmVwbGFjZSgvXlxcLyt8XFwvKyQvZywgJycpIHx8ICdtaW5pLWdhbWVzJ31gO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKX0vY2hlc3NpbWFscy8ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKSl9YDtcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKTtcbiAgfVxufVxuIl19
|