valtech-components 4.0.472 → 4.0.473
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/bubble-blitz-game.component.mjs +9 -18
- package/esm2022/lib/components/organisms/mini-games/chessimals-engine.mjs +16 -109
- package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +74 -21
- package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +9 -18
- package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +21 -275
- package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +9 -18
- package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/mini-games/public-api.mjs +2 -34
- package/esm2022/public-api.mjs +1 -3
- package/fesm2022/valtech-components-mini-games.mjs +2 -34
- package/fesm2022/valtech-components-mini-games.mjs.map +1 -1
- package/fesm2022/valtech-components.mjs +135 -3016
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/mini-games/bubble-blitz-game.component.d.ts +0 -2
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +5 -3
- package/lib/components/organisms/mini-games/memory-game.component.d.ts +0 -2
- package/lib/components/organisms/mini-games/simon-game.component.d.ts +0 -2
- package/lib/components/organisms/mini-games/types.d.ts +1 -131
- package/lib/version.d.ts +1 -1
- package/mini-games/public-api.d.ts +0 -4
- package/package.json +1 -2
- package/public-api.d.ts +0 -2
- package/esm2022/lib/components/organisms/mini-games/christianity-card.component.mjs +0 -260
- package/esm2022/lib/components/organisms/mini-games/christianity-game.component.mjs +0 -2253
- package/esm2022/lib/directives/light-ripple.directive.mjs +0 -57
- package/lib/components/organisms/mini-games/christianity-card.component.d.ts +0 -46
- package/lib/components/organisms/mini-games/christianity-game.component.d.ts +0 -177
- package/lib/directives/light-ripple.directive.d.ts +0 -8
- package/src/lib/assets/games/christianity/card-symbol.svg +0 -51
- package/src/lib/assets/games/christianity/card-template-reference/front.html +0 -114
- package/src/lib/assets/games/christianity/card-template-reference/front.style.css +0 -352
- package/src/lib/assets/games/christianity/data/01-genesis.bible-reference-suggestions.csv +0 -191
- package/src/lib/assets/games/christianity/data/01-genesis.bible-verses.nbv-open.csv +0 -170
- package/src/lib/assets/games/christianity/data/01-genesis.cards.csv +0 -281
- package/src/lib/assets/games/christianity/data/01-genesis.cards.i18n.csv +0 -281
- package/src/lib/assets/games/christianity/data/01-genesis.cards.json +0 -16453
- package/src/lib/assets/games/christianity/data/01-genesis.unassigned-effects.csv +0 -49
- package/src/lib/assets/games/christianity/data/README.md +0 -40
- package/src/lib/assets/games/christianity/data/data-con-habilides.csv +0 -273
- package/src/lib/assets/games/christianity/data/habilidades-por-tipo.xlsx +0 -0
- package/src/lib/assets/games/christianity/data/listado-edicion.csv +0 -281
- package/src/lib/assets/games/christianity/editions/1/cards/.gitkeep +0 -1
- package/src/lib/assets/games/christianity/editions/1/cards/PLACEHOLDER.png +0 -0
- package/src/lib/assets/games/christianity/editions/README.md +0 -34
- package/src/lib/assets/games/christianity/icons/1-icon.png +0 -0
- package/src/lib/assets/games/christianity/icons/action.png +0 -0
- package/src/lib/assets/games/christianity/icons/character.png +0 -0
- package/src/lib/assets/games/christianity/icons/event.png +0 -0
- package/src/lib/assets/games/christianity/icons/leader.png +0 -0
- package/src/lib/assets/games/christianity/icons/offering.png +0 -0
- package/src/lib/assets/games/christianity/icons/place.png +0 -0
- package/src/lib/assets/games/christianity/icons/tool.png +0 -0
- package/src/lib/assets/games/christianity/icons/wisdom.png +0 -0
- package/src/lib/assets/games/christianity/sources/README.md +0 -16
- package/src/lib/assets/games/christianity/sources/spaonbv_vpl.txt +0 -29102
- package/src/lib/assets/games/christianity/sources/spaonbv_vpl.xml +0 -29104
- package/src/lib/assets/games/christianity/spaonbv.txt +0 -52
|
@@ -54,7 +54,6 @@ export class MemoryGameComponent {
|
|
|
54
54
|
this.lockBoard = signal(false);
|
|
55
55
|
this.leaderboard = signal(this.readLeaderboard());
|
|
56
56
|
this.confirmAction = signal(undefined);
|
|
57
|
-
this.confirmedAction = signal(undefined);
|
|
58
57
|
this.profileConfig = computed(() => PROFILE_CONFIG[this.profile()]);
|
|
59
58
|
this.pairCount = computed(() => this.profileConfig().pairs);
|
|
60
59
|
this.boardClass = computed(() => `memory-board ${this.profileConfig().boardClass}`);
|
|
@@ -192,12 +191,13 @@ export class MemoryGameComponent {
|
|
|
192
191
|
closeConfirmModal() {
|
|
193
192
|
this.confirmAction.set(undefined);
|
|
194
193
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
this.confirmedAction.set(undefined);
|
|
199
|
-
if (!action)
|
|
194
|
+
confirmPendingAction(token) {
|
|
195
|
+
if (token !== 'confirm') {
|
|
196
|
+
this.closeConfirmModal();
|
|
200
197
|
return;
|
|
198
|
+
}
|
|
199
|
+
const action = this.confirmAction();
|
|
200
|
+
this.confirmAction.set(undefined);
|
|
201
201
|
if (action === 'restart') {
|
|
202
202
|
this.start();
|
|
203
203
|
return;
|
|
@@ -210,15 +210,6 @@ export class MemoryGameComponent {
|
|
|
210
210
|
this.resetToGamesMenu();
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
|
-
confirmPendingAction(token) {
|
|
214
|
-
if (token !== 'confirm') {
|
|
215
|
-
this.closeConfirmModal();
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
const action = this.confirmAction();
|
|
219
|
-
this.confirmedAction.set(action);
|
|
220
|
-
this.confirmAction.set(undefined);
|
|
221
|
-
}
|
|
222
213
|
flip(card) {
|
|
223
214
|
if (this.lockBoard() || card.flipped || card.matched || this.won() || this.failed())
|
|
224
215
|
return;
|
|
@@ -533,7 +524,7 @@ export class MemoryGameComponent {
|
|
|
533
524
|
<ion-modal
|
|
534
525
|
[isOpen]="!!confirmAction()"
|
|
535
526
|
cssClass="val-modal-adaptive"
|
|
536
|
-
(didDismiss)="
|
|
527
|
+
(didDismiss)="closeConfirmModal()"
|
|
537
528
|
>
|
|
538
529
|
<ng-template>
|
|
539
530
|
<val-modal-layout
|
|
@@ -691,7 +682,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
691
682
|
<ion-modal
|
|
692
683
|
[isOpen]="!!confirmAction()"
|
|
693
684
|
cssClass="val-modal-adaptive"
|
|
694
|
-
(didDismiss)="
|
|
685
|
+
(didDismiss)="closeConfirmModal()"
|
|
695
686
|
>
|
|
696
687
|
<ng-template>
|
|
697
688
|
<val-modal-layout
|
|
@@ -709,4 +700,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
709
700
|
}], ctorParameters: () => [], propDecorators: { miniGamesRoute: [{
|
|
710
701
|
type: Input
|
|
711
702
|
}] } });
|
|
712
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWdhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL21lbW9yeS1nYW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7O0FBRzNGLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUs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QUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxLQUFLLElBQUksU0FBUyxDQUFDLENBQUM7UUFDNUYsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RixrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckMsTUFBTSxHQUFHLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUN6QixPQUFPLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDTSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RyxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUks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O3dEQXdsQlEsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgbXVzaWNhbE5vdGVzT3V0bGluZSxcbiAgcmVmcmVzaE91dGxpbmUsXG4gIHRyb3BoeU91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuL21pbmktZ2FtZS1wbGF5ZXItcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbW9yeUdhbWVDYXJkLCBNZW1vcnlHYW1lRGlmZmljdWx0eSwgTWVtb3J5R2FtZU1vZGUsIE1lbW9yeUdhbWVQcm9maWxlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tb2RhbC1sYXlvdXQvbW9kYWwtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuYWRkSWNvbnMoeyBtdXNpY2FsTm90ZXNPdXRsaW5lLCByZWZyZXNoT3V0bGluZSwgdHJvcGh5T3V0bGluZSB9KTtcblxuY29uc3QgU1lNQk9MUyA9IFsn4q2QJywgJ/CfmoAnLCAn8J+OtScsICfimqEnLCAn8J+MmScsICfwn5KOJywgJ/CfjognLCAn8J+NgCcsICfwn6epJywgJ/CfjrInLCAn8J+MiCcsICfwn5SlJywgJ/CfjZMnLCAn8J+mhCcsICfwn46BJywgJ+KYgO+4jyddO1xuXG5jb25zdCBQUk9GSUxFX0NPTkZJRzogUmVjb3JkPFxuICBNZW1vcnlHYW1lUHJvZmlsZSxcbiAge1xuICAgIHBhaXJzOiBudW1iZXI7XG4gICAgdGltZWRTZWNvbmRzPzogbnVtYmVyO1xuICAgIG1pc21hdGNoRGVsYXk6IG51bWJlcjtcbiAgICBib2FyZENsYXNzOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIGtpZDoge1xuICAgIHBhaXJzOiA0LFxuICAgIG1pc21hdGNoRGVsYXk6IDE0MDAsXG4gICAgYm9hcmRDbGFzczogJ21lbW9yeS1ib2FyZC0ta2lkJyxcbiAgfSxcbiAgY2xhc3NpYzoge1xuICAgIHBhaXJzOiA4LFxuICAgIG1pc21hdGNoRGVsYXk6IDkwMCxcbiAgICBib2FyZENsYXNzOiAnbWVtb3J5LWJvYXJkLS1jbGFzc2ljJyxcbiAgfSxcbiAgbmluamE6IHtcbiAgICBwYWlyczogMTYsXG4gICAgdGltZWRTZWNvbmRzOiAxNTAsXG4gICAgbWlzbWF0Y2hEZWxheTogNTYwLFxuICAgIGJvYXJkQ2xhc3M6ICdtZW1vcnktYm9hcmQtLW5pbmphJyxcbiAgfSxcbn07XG5cbnR5cGUgTWVtb3J5R2FtZVBoYXNlID0gJ2hvbWUnIHwgJ3BsYXlpbmcnIHwgJ3dvbicgfCAnbG9zdCc7XG5cbmludGVyZmFjZSBNZW1vcnlMZWFkZXJib2FyZEVudHJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvZmlsZT86IE1lbW9yeUdhbWVQcm9maWxlO1xuICBwbGF5ZXJOYW1lPzogc3RyaW5nO1xuICBwbGF5ZXJBdmF0YXI/OiBzdHJpbmc7XG4gIG1lZGFsPzogTWVtb3J5TWVkYWw7XG4gIGRpZmZpY3VsdHk6IE1lbW9yeUdhbWVEaWZmaWN1bHR5O1xuICBtb2RlOiBNZW1vcnlHYW1lTW9kZTtcbiAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgc2Vjb25kczogbnVtYmVyO1xuICBjb21wbGV0ZWRBdDogc3RyaW5nO1xufVxuXG5jb25zdCBMRUFERVJCT0FSRF9LRVkgPSAndmFsLW1pbmktZ2FtZXMtbWVtb3J5LWxlYWRlcmJvYXJkOnYxJztcblxudHlwZSBNZW1vcnlNZWRhbCA9ICdnb2xkJyB8ICdzaWx2ZXInIHwgJ2Jyb256ZScgfCAnc3BhcmsnO1xudHlwZSBNZW1vcnlDb25maXJtQWN0aW9uID0gJ3Jlc3RhcnQnIHwgJ21vZGUnIHwgJ2dhbWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW1lbW9yeS1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkljb24sIElvbk1vZGFsLCBNb2RhbExheW91dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1haW4gY2xhc3M9XCJtZW1vcnktc2hlbGxcIj5cbiAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LWhlcm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWhlcm9fX2JhZGdlXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm11c2ljYWwtbm90ZXMtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICB7eyB0KCdtZW1vcnlUaXRsZScpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGgxPnt7IHQoJ2hvbWVUaXRsZScpIH19PC9oMT5cbiAgICAgICAgICA8cD57eyB0KCdob21lU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LXBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1vcHRpb25zXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cIm1lbW9yeS1ob3d0b1wiPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnaW5zdHJ1Y3Rpb25zVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2luc3RydWN0aW9uc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGgyPnt7IHQoJ3Byb2ZpbGVUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktcHJvZmlsZXNcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncHJvZmlsZVRpdGxlJylcIj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBwcm9maWxlczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInByb2ZpbGUoKSA9PT0gaXRlbVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJvZmlsZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KGl0ZW0pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdChpdGVtICsgJ0Rlc2NyaXB0aW9uJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbW9yeS1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydCgpXCI+e3sgdCgnc3RhcnRHYW1lJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktbWVudS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1nYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1zY29yZVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdhdHRlbXB0cycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBhdHRlbXB0cygpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3BhaXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1hdGNoZWRQYWlycygpIH19L3t7IHBhaXJDb3VudCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQodGltZUxhYmVsKCkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBmb3JtYXR0ZWRUaW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnc3RyZWFrJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0cmVhaygpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWJvYXJkXCIgW2NsYXNzXT1cImJvYXJkQ2xhc3MoKVwiPlxuICAgICAgICAgICAgQGZvciAoY2FyZCBvZiBjYXJkcygpOyB0cmFjayBjYXJkLmlkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbW9yeS1jYXJkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZmxpcHBlZF09XCJjYXJkLmZsaXBwZWQgfHwgY2FyZC5tYXRjaGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbWF0Y2hlZF09XCJjYXJkLm1hdGNoZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjYXJkLm1hdGNoZWQgfHwgbG9ja0JvYXJkKCkgfHwgZmFpbGVkKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmbGlwKGNhcmQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtb3J5LWNhcmRfX2JhY2tcIj4/PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtb3J5LWNhcmRfX2Zyb250XCI+e3sgY2FyZC5zeW1ib2wgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChwaGFzZSgpID09PSAnd29uJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS13aW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1jb25mZXR0aVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHBpZWNlIG9mIGNvbmZldHRpUGllY2VzOyB0cmFjayBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3dpblRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgd2luQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXJlc3VsdFwiIFtzdHlsZS4tLXBsYXllci1jb2xvcl09XCJhY3RpdmVQbGF5ZXJDb2xvcigpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgYWN0aXZlUGxheWVyQXZhdGFyKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBwbGF5ZXJOYW1lKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtZWRhbEljb24ocmVzdWx0TWVkYWwoKSkgfX0ge3sgdChyZXN1bHRNZWRhbCgpKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2xvc3QnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXdpbiBtZW1vcnktd2luLS1mYWlsZWRcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdsb3NlVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0KCdsb3NlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPnt7IHQoJ2JhY2tUb1NldHVwJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+e3sgdCgnY2hhbmdlR2FtZScpIH19PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXN0YXJ0R2FtZSgpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicmVmcmVzaC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAge3sgdCgncmVzdGFydCcpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1sZWFkZXJib2FyZFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgIDxoMj57eyBsZWFkZXJib2FyZEhlYWRpbmcoKSB9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKHByb2ZpbGVMZWFkZXJib2FyZCgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxwPnt7IHQoJ2xlYWRlcmJvYXJkRW1wdHknKSB9fTwvcD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG9sPlxuICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgcHJvZmlsZUxlYWRlcmJvYXJkKCk7IHRyYWNrIGVudHJ5LmlkOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGluZGV4ICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxlYWRlcmJvYXJkVGl0bGUoZW50cnkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxlYWRlcmJvYXJkTGluZShlbnRyeSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvb2w+XG4gICAgICAgIH1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cIiEhY29uZmlybUFjdGlvbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICAtLW1lbW9yeS1wYW5lbDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZmZmZik7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsLXN0cm9uZzogI2Y4ZjZmYjtcbiAgICAgICAgLS1tZW1vcnktYm9yZGVyOiB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCAjZTdlNGVhKTtcbiAgICAgICAgLS1tZW1vcnktdGV4dDogdmFyKC0taW9uLWNvbG9yLWRhcmssICMyZjJhM2EpO1xuICAgICAgICAtLW1lbW9yeS1tdXRlZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIC0tbWVtb3J5LXNvZnQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMDgpO1xuICAgICAgICAtLW1lbW9yeS1yb3c6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4wNCk7XG4gICAgICAgIC0tbWVtb3J5LXByaW1hcnk6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjZmYwMGIyKTtcbiAgICAgICAgLS1tZW1vcnktc2Vjb25kYXJ5OiB2YXIoLS1pb24tY29sb3ItdGVydGlhcnksICM2YTJkZTIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyayksXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIHtcbiAgICAgICAgLS1tZW1vcnktcGFuZWw6ICMyMzFmMmQ7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsLXN0cm9uZzogIzJmMjkzOTtcbiAgICAgICAgLS1tZW1vcnktYm9yZGVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpO1xuICAgICAgICAtLW1lbW9yeS10ZXh0OiAjZmZmOGZmO1xuICAgICAgICAtLW1lbW9yeS1tdXRlZDogcmdiYSgyNTUsIDI0OCwgMjU1LCAwLjY4KTtcbiAgICAgICAgLS1tZW1vcnktc29mdDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0NSk7XG4gICAgICAgIC0tbWVtb3J5LXJvdzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1NSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2hlbGwge1xuICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTIwcHgpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDIwcHg7XG4gICAgICAgIHBhZGRpbmc6IDE4cHggMCAzMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm8ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI4cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDI4cHgsIDh2dywgNTJweCkgMjBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAyMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zMiksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tbWVtb3J5LXByaW1hcnkpLCB2YXIoLS1tZW1vcnktc2Vjb25kYXJ5KSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMjRweCA3MHB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjUpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm86OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogYXV0byAtMjAlIC00MiUgLTIwJTtcbiAgICAgICAgaGVpZ2h0OiA1NSU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgOTBkZWcsXG4gICAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KSAwIDEwcHgsXG4gICAgICAgICAgdHJhbnNwYXJlbnQgMTBweCAyMHB4XG4gICAgICAgICk7XG4gICAgICAgIG9wYWNpdHk6IDAuMTg7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00ZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvX19iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybyBoMSB7XG4gICAgICAgIG1hcmdpbjogMTRweCAwIDZweDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjI1cmVtLCA5dncsIDMuNjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybyBwIHtcbiAgICAgICAgbWF4LXdpZHRoOiA1MjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgM3Z3LCAxLjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIG9wYWNpdHk6IDAuODg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGFuZWwsXG4gICAgICAubWVtb3J5LWdhbWUge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMTZweCwgNHZ3LCAyOHB4KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDMpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LW9wdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaG93dG8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1vcHRpb25zIGgyLFxuICAgICAgLm1lbW9yeS1ob3d0byBoMixcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDhweCAwIDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ob3d0byBoMixcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaG93dG8gcCxcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIGJ1dHRvbixcbiAgICAgIC5tZW1vcnktc2Vjb25kYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiA5MnB4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogNXB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE4cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjAycmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgYnV0dG9uLmlzLXNlbGVjdGVkIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJpbWFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxOHB4IDQ1cHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJpbWFyeSBpb24taWNvbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICB3aWR0aDogMS4yNWVtO1xuICAgICAgICBoZWlnaHQ6IDEuMjVlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc3BhbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1yb3cpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc21hbGwsXG4gICAgICAubWVtb3J5LXdpbiBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc21hbGwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHN0cm9uZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICAgIGdhcDogY2xhbXAoOHB4LCAydncsIDEycHgpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWJvYXJkLS1raWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQtLWNsYXNzaWMge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQtLW5pbmphIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgbWlubWF4KDQwcHgsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBjbGFtcCgxNHB4LCA0dncsIDIycHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgcGVyc3BlY3RpdmU6IDgwMHB4O1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDI0cHgsIDd2dywgNDJweCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZF9fYmFjayxcbiAgICAgIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI4cyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZSwgb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZF9fYmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMiUgMjglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tbWVtb3J5LXNlY29uZGFyeSksIHZhcigtLW1lbW9yeS1wcmltYXJ5KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMjRweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjIpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmRfX2Zyb250IHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwtc3Ryb25nKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkLmlzLWZsaXBwZWQgLm1lbW9yeS1jYXJkX19iYWNrIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZC5pcy1mbGlwcGVkIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMzYwZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkLmlzLW1hdGNoZWQgLm1lbW9yeS1jYXJkX19mcm9udCB7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xMik7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4gaW9uLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gOHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MsICMyZGQzNmYpO1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4gcCB7XG4gICAgICAgIG1hcmdpbjogNHB4IDAgMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43Mik7XG4gICAgICAgIGNvbG9yOiAjMmYyYTNhO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLm1lbW9yeS1yZXN1bHQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5tZW1vcnktcmVzdWx0IHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXJlc3VsdCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzhweDtcbiAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGxheWVyLWNvbG9yLCB2YXIoLS1tZW1vcnktcHJpbWFyeSkpO1xuICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNnB4O1xuICAgICAgICBsZWZ0OiA4JTtcbiAgICAgICAgd2lkdGg6IDlweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYW5pbWF0aW9uOiBtZW1vcnktY29uZmV0dGktZmFsbCAxLjVzIGVhc2Utb3V0IGZvcndhcmRzO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXNlY29uZGFyeSk7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4wOHM7XG4gICAgICAgIGxlZnQ6IDIwJTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCgzbikge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZjZjNmO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMTZzO1xuICAgICAgICBsZWZ0OiAzOCU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoNG4pIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzJkZDM2ZjtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjI0cztcbiAgICAgICAgbGVmdDogNTUlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDVuKSB7XG4gICAgICAgIGxlZnQ6IDcyJTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCg2bikge1xuICAgICAgICBsZWZ0OiA4NiU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luLS1mYWlsZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICBib3R0b206IDEwcHg7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHZhcigtLW1lbW9yeS1wYW5lbCkgMjglKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1tZW51LWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDlyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogNThweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDE2cHgsIDR2dywgMjJweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmRfX3RpdGxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZSBpb24taWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIG9sIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzhweCAxZnI7XG4gICAgICAgIGdhcDogMnB4IDEwcHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1yb3cpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIGxpID4gc3BhbiB7XG4gICAgICAgIGdyaWQtcm93OiBzcGFuIDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOThyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIgaDIsXG4gICAgICAubWVtb3J5LXBsYXllciBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUycHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWF2YXRhci1saXN0LFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1hdmF0YXItbGlzdCBidXR0b24sXG4gICAgICAubWVtb3J5LWNvbG9yLWxpc3QgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDQ0cHg7XG4gICAgICAgIGhlaWdodDogNDRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYXZhdGFyLWxpc3QgYnV0dG9uLmlzLXNlbGVjdGVkLFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCBidXR0b24ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wbGF5ZXItY29sb3IpO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIG1lbW9yeS1jb25mZXR0aS1mYWxsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICAxOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTcwcHgpIHJvdGF0ZSgzMDBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MjBweCkge1xuICAgICAgICAubWVtb3J5LXNjb3JlIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1lbW9yeS1ib2FyZC0tbmluamEge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg1NHB4LCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tZW1vcnktYWN0aW9ucyxcbiAgICAgICAgLm1lbW9yeS1tZW51LWFjdGlvbnMsXG4gICAgICAgIC5tZW1vcnktcHJvZmlsZXMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtb3J5R2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcblxuICBASW5wdXQoKSBtaW5pR2FtZXNSb3V0ZSA9ICcvbWluaS1nYW1lcyc7XG5cbiAgcmVhZG9ubHkgcHJvZmlsZXM6IE1lbW9yeUdhbWVQcm9maWxlW10gPSBbJ2tpZCcsICdjbGFzc2ljJywgJ25pbmphJ107XG4gIHJlYWRvbmx5IGNvbmZldHRpUGllY2VzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTQgfSwgKF8sIGluZGV4KSA9PiBpbmRleCk7XG5cbiAgcmVhZG9ubHkgcGhhc2UgPSBzaWduYWw8TWVtb3J5R2FtZVBoYXNlPignaG9tZScpO1xuICByZWFkb25seSBwcm9maWxlID0gc2lnbmFsPE1lbW9yeUdhbWVQcm9maWxlPigna2lkJyk7XG4gIHJlYWRvbmx5IGRpZmZpY3VsdHkgPSBzaWduYWw8TWVtb3J5R2FtZURpZmZpY3VsdHk+KCdlYXN5Jyk7XG4gIHJlYWRvbmx5IG1vZGUgPSBzaWduYWw8TWVtb3J5R2FtZU1vZGU+KCdjbGFzc2ljJyk7XG4gIHJlYWRvbmx5IHBsYXlpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjYXJkcyA9IHNpZ25hbDxNZW1vcnlHYW1lQ2FyZFtdPihbXSk7XG4gIHJlYWRvbmx5IGF0dGVtcHRzID0gc2lnbmFsKDApO1xuICByZWFkb25seSBzdHJlYWsgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IGJlc3RTdHJlYWsgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IGVsYXBzZWQgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IHJlbWFpbmluZyA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgZmFpbGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9ja0JvYXJkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbGVhZGVyYm9hcmQgPSBzaWduYWw8TWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdPih0aGlzLnJlYWRMZWFkZXJib2FyZCgpKTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbiA9IHNpZ25hbDxNZW1vcnlDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1lZEFjdGlvbiA9IHNpZ25hbDxNZW1vcnlDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgdGltZXI/OiBudW1iZXI7XG4gIHByaXZhdGUgZmlyc3RQaWNrPzogTWVtb3J5R2FtZUNhcmQ7XG5cbiAgcmVhZG9ubHkgcHJvZmlsZUNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IFBST0ZJTEVfQ09ORklHW3RoaXMucHJvZmlsZSgpXSk7XG4gIHJlYWRvbmx5IHBhaXJDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvZmlsZUNvbmZpZygpLnBhaXJzKTtcbiAgcmVhZG9ubHkgYm9hcmRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IGBtZW1vcnktYm9hcmQgJHt0aGlzLnByb2ZpbGVDb25maWcoKS5ib2FyZENsYXNzfWApO1xuICByZWFkb25seSBwcm9maWxlTGVhZGVyYm9hcmQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMubGVhZGVyYm9hcmQoKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IHRoaXMuZW50cnlQcm9maWxlKGVudHJ5KSA9PT0gdGhpcy5wcm9maWxlKCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5zZWNvbmRzIC0gYi5zZWNvbmRzIHx8IGEuYXR0ZW1wdHMgLSBiLmF0dGVtcHRzKVxuICAgICAgLnNsaWNlKDAsIDUpXG4gICk7XG4gIHJlYWRvbmx5IG1hdGNoZWRQYWlycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2FyZHMoKS5maWx0ZXIoKGNhcmQpID0+IGNhcmQubWF0Y2hlZCkubGVuZ3RoIC8gMik7XG4gIHJlYWRvbmx5IHdvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+ICF0aGlzLmZhaWxlZCgpICYmIHRoaXMucGxheWluZygpICYmIHRoaXMuY2FyZHMoKS5sZW5ndGggPiAwICYmIHRoaXMubWF0Y2hlZFBhaXJzKCkgPT09IHRoaXMucGFpckNvdW50KClcbiAgKTtcbiAgcmVhZG9ubHkgcGxheWVyTmFtZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5wbGF5ZXJQcm9maWxlcy5kaXNwbGF5TmFtZSh0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKSwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKVxuICApO1xuICByZWFkb25seSBhY3RpdmVQbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKT8uYXZhdGFyID8/ICfwn4yfJyk7XG4gIHJlYWRvbmx5IGFjdGl2ZVBsYXllckNvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCk/LmNvbG9yID8/ICcjZmYwMGIyJyk7XG4gIHJlYWRvbmx5IHRpbWVMYWJlbCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPyAndGltZUxlZnQnIDogJ3RpbWUnKSk7XG4gIHJlYWRvbmx5IGZvcm1hdHRlZFRpbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/IHRoaXMucmVtYWluaW5nKCkgOiB0aGlzLmVsYXBzZWQoKTtcbiAgICBjb25zdCBtaW4gPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgY29uc3Qgc2VjID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHttaW59OiR7U3RyaW5nKHNlYykucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVzdWx0TWVkYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhbGN1bGF0ZU1lZGFsKHRoaXMuYXR0ZW1wdHMoKSwgdGhpcy5yZXN1bHRTZWNvbmRzKCksIHRoaXMuYmVzdFN0cmVhaygpKSk7XG4gIHJlYWRvbmx5IHJlc3VsdFNlY29uZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/IHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyAtIHRoaXMucmVtYWluaW5nKCkgOiB0aGlzLmVsYXBzZWQoKVxuICApO1xuICByZWFkb25seSB3aW5Cb2R5ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ3dpbkJvZHknKVxuICAgICAgLnJlcGxhY2UoJ3thdHRlbXB0c30nLCBTdHJpbmcodGhpcy5hdHRlbXB0cygpKSlcbiAgICAgIC5yZXBsYWNlKCd7dGltZX0nLCB0aGlzLmZvcm1hdFNlY29uZHModGhpcy5yZXN1bHRTZWNvbmRzKCkpKVxuICAgICAgLnJlcGxhY2UoJ3tzdHJlYWt9JywgU3RyaW5nKHRoaXMuYmVzdFN0cmVhaygpKSlcbiAgKTtcbiAgcmVhZG9ubHkgY29uZmlybVRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY29uZmlybVJlc3RhcnRUaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1HYW1lc1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY29uZmlybU1vZGVUaXRsZScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjb25maXJtUmVzdGFydEJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjb25maXJtR2FtZXNCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY29uZmlybU1vZGVCb2R5Jyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IFtcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2NhbmNlbCcpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjYW5jZWwnLFxuICAgIH0sXG4gICAge1xuICAgICAgdGV4dDpcbiAgICAgICAgdGhpcy5jb25maXJtQWN0aW9uKCkgPT09ICdyZXN0YXJ0J1xuICAgICAgICAgID8gdGhpcy50KCdyZXN0YXJ0JylcbiAgICAgICAgICA6IHRoaXMuY29uZmlybUFjdGlvbigpID09PSAnZ2FtZXMnXG4gICAgICAgICAgICA/IHRoaXMudCgnY2hhbmdlR2FtZScpXG4gICAgICAgICAgICA6IHRoaXMudCgnYmFja1RvU2V0dXAnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgfSxcbiAgXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0TWVudU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKSwgMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWluaUdhbWVzJyk7XG4gIH1cblxuICBzZWxlY3RQcm9maWxlKHByb2ZpbGU6IE1lbW9yeUdhbWVQcm9maWxlKTogdm9pZCB7XG4gICAgdGhpcy5wcm9maWxlLnNldChwcm9maWxlKTtcbiAgICBpZiAocHJvZmlsZSA9PT0gJ2tpZCcpIHtcbiAgICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ2Vhc3knKTtcbiAgICAgIHRoaXMubW9kZS5zZXQoJ3JlbGF4ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHByb2ZpbGUgPT09ICduaW5qYScpIHtcbiAgICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ2hhcmQnKTtcbiAgICAgIHRoaXMubW9kZS5zZXQoJ3RpbWVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ21lZGl1bScpO1xuICAgIHRoaXMubW9kZS5zZXQoJ2NsYXNzaWMnKTtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGNvbnN0IHN5bWJvbHMgPSBTWU1CT0xTLnNsaWNlKDAsIHRoaXMucGFpckNvdW50KCkpO1xuICAgIGNvbnN0IGRlY2sgPSB0aGlzLnNodWZmbGUoWy4uLnN5bWJvbHMsIC4uLnN5bWJvbHNdKS5tYXAoKHN5bWJvbCwgaW5kZXgpID0+ICh7XG4gICAgICBpZDogYCR7c3ltYm9sfS0ke2luZGV4fS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfWAsXG4gICAgICBzeW1ib2wsXG4gICAgICBtYXRjaGVkOiBmYWxzZSxcbiAgICAgIGZsaXBwZWQ6IGZhbHNlLFxuICAgIH0pKTtcbiAgICB0aGlzLmNhcmRzLnNldChkZWNrKTtcbiAgICB0aGlzLmZpcnN0UGljayA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF0dGVtcHRzLnNldCgwKTtcbiAgICB0aGlzLnN0cmVhay5zZXQoMCk7XG4gICAgdGhpcy5iZXN0U3RyZWFrLnNldCgwKTtcbiAgICB0aGlzLmVsYXBzZWQuc2V0KDApO1xuICAgIHRoaXMucmVtYWluaW5nLnNldCh0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPz8gMCk7XG4gICAgdGhpcy5mYWlsZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmxvY2tCb2FyZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdwbGF5aW5nJyk7XG4gICAgdGhpcy5wbGF5aW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRHYW1lTXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVzZXRUb1NldHVwKCk6IHZvaWQge1xuICAgIHRoaXMucGxheWluZy5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2FyZHMuc2V0KFtdKTtcbiAgICB0aGlzLmZpcnN0UGljayA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZhaWxlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdob21lJyk7XG4gICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRNZW51TXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVxdWVzdFJlc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc3RhcnQnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ21vZGUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2dhbWVzJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBoYW5kbGVDb25maXJtTW9kYWxEaXNtaXNzZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybWVkQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtZWRBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgaWYgKCFhY3Rpb24pIHJldHVybjtcblxuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0Jykge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnbW9kZScpIHtcbiAgICAgIHRoaXMucmVzZXRUb1NldHVwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHtcbiAgICAgIHRoaXMucmVzZXRUb0dhbWVzTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpcm1QZW5kaW5nQWN0aW9uKHRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRva2VuICE9PSAnY29uZmlybScpIHtcbiAgICAgIHRoaXMuY2xvc2VDb25maXJtTW9kYWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtZWRBY3Rpb24uc2V0KGFjdGlvbik7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgZmxpcChjYXJkOiBNZW1vcnlHYW1lQ2FyZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2tCb2FyZCgpIHx8IGNhcmQuZmxpcHBlZCB8fCBjYXJkLm1hdGNoZWQgfHwgdGhpcy53b24oKSB8fCB0aGlzLmZhaWxlZCgpKSByZXR1cm47XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5jYXJkcy51cGRhdGUoKGNhcmRzKSA9PiBjYXJkcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSBjYXJkLmlkID8geyAuLi5pdGVtLCBmbGlwcGVkOiB0cnVlIH0gOiBpdGVtKSkpO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSB0aGlzLmNhcmRzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gY2FyZC5pZCk7XG4gICAgaWYgKCF1cGRhdGVkKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmZpcnN0UGljaykge1xuICAgICAgdGhpcy5maXJzdFBpY2sgPSB1cGRhdGVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYXR0ZW1wdHMudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUgKyAxKTtcbiAgICBjb25zdCBmaXJzdCA9IHRoaXMuZmlyc3RQaWNrO1xuICAgIHRoaXMuZmlyc3RQaWNrID0gdW5kZWZpbmVkO1xuICAgIGlmIChmaXJzdC5zeW1ib2wgPT09IHVwZGF0ZWQuc3ltYm9sKSB7XG4gICAgICB0aGlzLnN0cmVhay51cGRhdGUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSB2YWx1ZSArIDE7XG4gICAgICAgIHRoaXMuYmVzdFN0cmVhay51cGRhdGUoKGJlc3QpID0+IE1hdGgubWF4KGJlc3QsIG5leHQpKTtcbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2FyZHMudXBkYXRlKChjYXJkcykgPT5cbiAgICAgICAgY2FyZHMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gZmlyc3QuaWQgfHwgaXRlbS5pZCA9PT0gdXBkYXRlZC5pZCA/IHsgLi4uaXRlbSwgbWF0Y2hlZDogdHJ1ZSB9IDogaXRlbSkpXG4gICAgICApO1xuICAgICAgdGhpcy5hdWRpby5tYXRjaCgpO1xuICAgICAgaWYgKHRoaXMuY2FyZHMoKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ubWF0Y2hlZCkubGVuZ3RoID09PSB0aGlzLmNhcmRzKCkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgICAgIHRoaXMucGhhc2Uuc2V0KCd3b24nKTtcbiAgICAgICAgdGhpcy5zYXZlU2NvcmUoKTtcbiAgICAgICAgdGhpcy5hdWRpby53aW4oKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2tCb2FyZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zdHJlYWsuc2V0KDApO1xuICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2FyZHMudXBkYXRlKChjYXJkcykgPT5cbiAgICAgICAgY2FyZHMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gZmlyc3QuaWQgfHwgaXRlbS5pZCA9PT0gdXBkYXRlZC5pZCA/IHsgLi4uaXRlbSwgZmxpcHBlZDogZmFsc2UgfSA6IGl0ZW0pKVxuICAgICAgKTtcbiAgICAgIHRoaXMubG9ja0JvYXJkLnNldChmYWxzZSk7XG4gICAgfSwgdGhpcy5wcm9maWxlQ29uZmlnKCkubWlzbWF0Y2hEZWxheSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0VGltZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICB0aGlzLnRpbWVyID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzKSB7XG4gICAgICAgIHRoaXMuZWxhcHNlZC51cGRhdGUoKHZhbHVlKSA9PiB2YWx1ZSArIDEpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJlbWFpbmluZy51cGRhdGUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBNYXRoLm1heCgwLCB2YWx1ZSAtIDEpO1xuICAgICAgICBpZiAobmV4dCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuZmFpbGVkLnNldCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnBoYXNlLnNldCgnbG9zdCcpO1xuICAgICAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgICAgICAgdGhpcy5hdWRpby5sb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9KTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcFRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgIHRoaXMudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldFRvR2FtZXNNZW51KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRUb1NldHVwKCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCkpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIG1pbmlHYW1lc0Jhc2VSb3V0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlID0gKHRoaXMubWluaUdhbWVzUm91dGUgfHwgJy9taW5pLWdhbWVzJykudHJpbSgpO1xuICAgIHJldHVybiBgLyR7cm91dGUucmVwbGFjZSgvXlxcLyt8XFwvKyQvZywgJycpIHx8ICdtaW5pLWdhbWVzJ31gO1xuICB9XG5cbiAgcHJpdmF0ZSBzaHVmZmxlPFQ+KGl0ZW1zOiBUW10pOiBUW10ge1xuICAgIGNvbnN0IGNvcHkgPSBbLi4uaXRlbXNdO1xuICAgIGZvciAobGV0IGkgPSBjb3B5Lmxlbmd0aCAtIDE7IGkgPiAwOyBpIC09IDEpIHtcbiAgICAgIGNvbnN0IGogPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoaSArIDEpKTtcbiAgICAgIFtjb3B5W2ldLCBjb3B5W2pdXSA9IFtjb3B5W2pdLCBjb3B5W2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbGVhZGVyYm9hcmRMaW5lKGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBtb3ZlcyA9IHRoaXMudCgnbGVhZGVyYm9hcmRNb3ZlcycpLnJlcGxhY2UoJ3ttb3Zlc30nLCBTdHJpbmcoZW50cnkuYXR0ZW1wdHMpKTtcbiAgICBjb25zdCB0aW1lID0gdGhpcy50KCdsZWFkZXJib2FyZFRpbWUnKS5yZXBsYWNlKCd7dGltZX0nLCB0aGlzLmZvcm1hdFNlY29uZHMoZW50cnkuc2Vjb25kcykpO1xuICAgIHJldHVybiBgJHttb3Zlc30gwrcgJHt0aW1lfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgbGVhZGVyYm9hcmRUaXRsZShlbnRyeTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeSk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IGVudHJ5LnBsYXllck5hbWUgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICAgIGlmIChlbnRyeS5wcm9maWxlKSByZXR1cm4gYCR7ZW50cnkucGxheWVyQXZhdGFyIHx8ICfirZAnfSAke25hbWV9IMK3ICR7dGhpcy50KGVudHJ5LnByb2ZpbGUpfWA7XG4gICAgcmV0dXJuIGAke3RoaXMudChlbnRyeS5kaWZmaWN1bHR5KX0gwrcgJHt0aGlzLnQoZW50cnkubW9kZSl9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWFkZXJib2FyZEhlYWRpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KCdsZWFkZXJib2FyZFByb2ZpbGVUaXRsZScpLnJlcGxhY2UoJ3twcm9maWxlfScsIHRoaXMudCh0aGlzLnByb2ZpbGUoKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlU2NvcmUoKTogdm9pZCB7XG4gICAgY29uc3QgbWVkYWwgPSB0aGlzLmNhbGN1bGF0ZU1lZGFsKHRoaXMuYXR0ZW1wdHMoKSwgdGhpcy5yZXN1bHRTZWNvbmRzKCksIHRoaXMuYmVzdFN0cmVhaygpKTtcbiAgICBjb25zdCBlbnRyeTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeSA9IHtcbiAgICAgIGlkOiBgJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfWAsXG4gICAgICBwcm9maWxlOiB0aGlzLnByb2ZpbGUoKSxcbiAgICAgIHBsYXllck5hbWU6IHRoaXMucGxheWVyTmFtZSgpLFxuICAgICAgcGxheWVyQXZhdGFyOiB0aGlzLmFjdGl2ZVBsYXllckF2YXRhcigpLFxuICAgICAgbWVkYWwsXG4gICAgICBkaWZmaWN1bHR5OiB0aGlzLmRpZmZpY3VsdHkoKSxcbiAgICAgIG1vZGU6IHRoaXMubW9kZSgpLFxuICAgICAgYXR0ZW1wdHM6IHRoaXMuYXR0ZW1wdHMoKSxcbiAgICAgIHNlY29uZHM6IHRoaXMucmVzdWx0U2Vjb25kcygpLFxuICAgICAgY29tcGxldGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLmxpbWl0TGVhZGVyYm9hcmQoWy4uLnRoaXMubGVhZGVyYm9hcmQoKSwgZW50cnldKTtcbiAgICB0aGlzLmxlYWRlcmJvYXJkLnNldChuZXh0KTtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTEVBREVSQk9BUkRfS0VZLCBKU09OLnN0cmluZ2lmeShuZXh0KSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2UgcHVlZGUgbm8gZXN0YXIgZGlzcG9uaWJsZSBlbiBTU1IvdGVzdHMuXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkTGVhZGVyYm9hcmQoKTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTEVBREVSQk9BUkRfS0VZKTtcbiAgICAgIGlmICghcmF3KSByZXR1cm4gW107XG4gICAgICBjb25zdCBlbnRyaWVzID0gSlNPTi5wYXJzZShyYXcpIGFzIE1lbW9yeUxlYWRlcmJvYXJkRW50cnlbXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbnRyaWVzKSkgcmV0dXJuIFtdO1xuICAgICAgcmV0dXJuIHRoaXMubGltaXRMZWFkZXJib2FyZChcbiAgICAgICAgZW50cmllcy5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeT8uZGlmZmljdWx0eSAmJiBlbnRyeT8ubW9kZSAmJiBOdW1iZXIuaXNGaW5pdGUoZW50cnk/LmF0dGVtcHRzKSlcbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaW1pdExlYWRlcmJvYXJkKGVudHJpZXM6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnlbXSk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZXMuZmxhdE1hcCgocHJvZmlsZSkgPT5cbiAgICAgIGVudHJpZXNcbiAgICAgICAgLmZpbHRlcigoZW50cnkpID0+IHRoaXMuZW50cnlQcm9maWxlKGVudHJ5KSA9PT0gcHJvZmlsZSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuc2Vjb25kcyAtIGIuc2Vjb25kcyB8fCBhLmF0dGVtcHRzIC0gYi5hdHRlbXB0cylcbiAgICAgICAgLnNsaWNlKDAsIDUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZW50cnlQcm9maWxlKGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5KTogTWVtb3J5R2FtZVByb2ZpbGUge1xuICAgIGlmIChlbnRyeS5wcm9maWxlKSByZXR1cm4gZW50cnkucHJvZmlsZTtcbiAgICBpZiAoZW50cnkubW9kZSA9PT0gJ3RpbWVkJyB8fCBlbnRyeS5kaWZmaWN1bHR5ID09PSAnaGFyZCcpIHJldHVybiAnbmluamEnO1xuICAgIGlmIChlbnRyeS5tb2RlID09PSAncmVsYXhlZCcgfHwgZW50cnkuZGlmZmljdWx0eSA9PT0gJ2Vhc3knKSByZXR1cm4gJ2tpZCc7XG4gICAgcmV0dXJuICdjbGFzc2ljJztcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlTWVkYWwoYXR0ZW1wdHM6IG51bWJlciwgc2Vjb25kczogbnVtYmVyLCBiZXN0U3RyZWFrOiBudW1iZXIpOiBNZW1vcnlNZWRhbCB7XG4gICAgY29uc3QgcGFpcnMgPSB0aGlzLnBhaXJDb3VudCgpO1xuICAgIGNvbnN0IHBlcmZlY3Rpc2ggPSBhdHRlbXB0cyA8PSBwYWlycyArIE1hdGguY2VpbChwYWlycyAqIDAuMzUpO1xuICAgIGNvbnN0IHNvbGlkID0gYXR0ZW1wdHMgPD0gcGFpcnMgKiAyO1xuICAgIGNvbnN0IGZhc3QgPSAhdGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzIHx8IHNlY29uZHMgPD0gTWF0aC5tYXgoMzAsIHBhaXJzICogOCk7XG4gICAgaWYgKHBlcmZlY3Rpc2ggJiYgZmFzdCAmJiBiZXN0U3RyZWFrID49IE1hdGguY2VpbChwYWlycyAqIDAuNDUpKSByZXR1cm4gJ2dvbGQnO1xuICAgIGlmIChzb2xpZCAmJiBiZXN0U3RyZWFrID49IE1hdGguY2VpbChwYWlycyAqIDAuMjUpKSByZXR1cm4gJ3NpbHZlcic7XG4gICAgaWYgKHNvbGlkKSByZXR1cm4gJ2Jyb256ZSc7XG4gICAgcmV0dXJuICdzcGFyayc7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWVkYWxJY29uKG1lZGFsOiBNZW1vcnlNZWRhbCk6IHN0cmluZyB7XG4gICAgaWYgKG1lZGFsID09PSAnZ29sZCcpIHJldHVybiAn8J+lhyc7XG4gICAgaWYgKG1lZGFsID09PSAnc2lsdmVyJykgcmV0dXJuICfwn6WIJztcbiAgICBpZiAobWVkYWwgPT09ICdicm9uemUnKSByZXR1cm4gJ/CfpYknO1xuICAgIHJldHVybiAn4pyoJztcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0U2Vjb25kcyhzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1pbiA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBjb25zdCBzZWMgPSBzZWNvbmRzICUgNjA7XG4gICAgcmV0dXJuIGAke21pbn06JHtTdHJpbmcoc2VjKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gIH1cbn1cbiJdfQ==
|
|
703
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWdhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL21lbW9yeS1nYW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7O0FBRzNGLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUs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QUFFLENBQUM7UUFDekIsT0FBTyxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2xELENBQUM7K0dBbllVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHlIQTV1QnBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEpULG1vVEEzSlMsT0FBTywySkFBRSxRQUFRLHNEQUFFLG9CQUFvQjs7NEZBNnVCdEMsbUJBQW1CO2tCQWh2Qi9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxZQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBKVDt3REF3bEJRLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24sIElvbk1vZGFsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7XG4gIG11c2ljYWxOb3Rlc091dGxpbmUsXG4gIHJlZnJlc2hPdXRsaW5lLFxuICB0cm9waHlPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBNSU5JX0dBTUVTX0kxOE4gfSBmcm9tICcuL21pbmktZ2FtZXMuaTE4bic7XG5pbXBvcnQgeyBNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9taW5pLWdhbWUtcGxheWVyLXByb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXRyb0F1ZGlvU2VydmljZSB9IGZyb20gJy4vcmV0cm8tYXVkaW8uc2VydmljZSc7XG5pbXBvcnQgeyBNZW1vcnlHYW1lQ2FyZCwgTWVtb3J5R2FtZURpZmZpY3VsdHksIE1lbW9yeUdhbWVNb2RlLCBNZW1vcnlHYW1lUHJvZmlsZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTW9kYWxMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbW9kYWwtbGF5b3V0L21vZGFsLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmFkZEljb25zKHsgbXVzaWNhbE5vdGVzT3V0bGluZSwgcmVmcmVzaE91dGxpbmUsIHRyb3BoeU91dGxpbmUgfSk7XG5cbmNvbnN0IFNZTUJPTFMgPSBbJ+KtkCcsICfwn5qAJywgJ/CfjrUnLCAn4pqhJywgJ/CfjJknLCAn8J+SjicsICfwn46IJywgJ/CfjYAnLCAn8J+nqScsICfwn46yJywgJ/CfjIgnLCAn8J+UpScsICfwn42TJywgJ/CfpoQnLCAn8J+OgScsICfimIDvuI8nXTtcblxuY29uc3QgUFJPRklMRV9DT05GSUc6IFJlY29yZDxcbiAgTWVtb3J5R2FtZVByb2ZpbGUsXG4gIHtcbiAgICBwYWlyczogbnVtYmVyO1xuICAgIHRpbWVkU2Vjb25kcz86IG51bWJlcjtcbiAgICBtaXNtYXRjaERlbGF5OiBudW1iZXI7XG4gICAgYm9hcmRDbGFzczogc3RyaW5nO1xuICB9XG4+ID0ge1xuICBraWQ6IHtcbiAgICBwYWlyczogNCxcbiAgICBtaXNtYXRjaERlbGF5OiAxNDAwLFxuICAgIGJvYXJkQ2xhc3M6ICdtZW1vcnktYm9hcmQtLWtpZCcsXG4gIH0sXG4gIGNsYXNzaWM6IHtcbiAgICBwYWlyczogOCxcbiAgICBtaXNtYXRjaERlbGF5OiA5MDAsXG4gICAgYm9hcmRDbGFzczogJ21lbW9yeS1ib2FyZC0tY2xhc3NpYycsXG4gIH0sXG4gIG5pbmphOiB7XG4gICAgcGFpcnM6IDE2LFxuICAgIHRpbWVkU2Vjb25kczogMTUwLFxuICAgIG1pc21hdGNoRGVsYXk6IDU2MCxcbiAgICBib2FyZENsYXNzOiAnbWVtb3J5LWJvYXJkLS1uaW5qYScsXG4gIH0sXG59O1xuXG50eXBlIE1lbW9yeUdhbWVQaGFzZSA9ICdob21lJyB8ICdwbGF5aW5nJyB8ICd3b24nIHwgJ2xvc3QnO1xuXG5pbnRlcmZhY2UgTWVtb3J5TGVhZGVyYm9hcmRFbnRyeSB7XG4gIGlkOiBzdHJpbmc7XG4gIHByb2ZpbGU/OiBNZW1vcnlHYW1lUHJvZmlsZTtcbiAgcGxheWVyTmFtZT86IHN0cmluZztcbiAgcGxheWVyQXZhdGFyPzogc3RyaW5nO1xuICBtZWRhbD86IE1lbW9yeU1lZGFsO1xuICBkaWZmaWN1bHR5OiBNZW1vcnlHYW1lRGlmZmljdWx0eTtcbiAgbW9kZTogTWVtb3J5R2FtZU1vZGU7XG4gIGF0dGVtcHRzOiBudW1iZXI7XG4gIHNlY29uZHM6IG51bWJlcjtcbiAgY29tcGxldGVkQXQ6IHN0cmluZztcbn1cblxuY29uc3QgTEVBREVSQk9BUkRfS0VZID0gJ3ZhbC1taW5pLWdhbWVzLW1lbW9yeS1sZWFkZXJib2FyZDp2MSc7XG5cbnR5cGUgTWVtb3J5TWVkYWwgPSAnZ29sZCcgfCAnc2lsdmVyJyB8ICdicm9uemUnIHwgJ3NwYXJrJztcbnR5cGUgTWVtb3J5Q29uZmlybUFjdGlvbiA9ICdyZXN0YXJ0JyB8ICdtb2RlJyB8ICdnYW1lcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1tZW1vcnktZ2FtZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25JY29uLCBJb25Nb2RhbCwgTW9kYWxMYXlvdXRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYWluIGNsYXNzPVwibWVtb3J5LXNoZWxsXCI+XG4gICAgICBAaWYgKHBoYXNlKCkgPT09ICdob21lJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1oZXJvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1oZXJvX19iYWRnZVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJtdXNpY2FsLW5vdGVzLW91dGxpbmVcIiAvPlxuICAgICAgICAgICAge3sgdCgnbWVtb3J5VGl0bGUnKSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoMT57eyB0KCdob21lVGl0bGUnKSB9fTwvaDE+XG4gICAgICAgICAgPHA+e3sgdCgnaG9tZVN1YnRpdGxlJykgfX08L3A+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1wYW5lbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktb3B0aW9uc1wiPlxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJtZW1vcnktaG93dG9cIj5cbiAgICAgICAgICAgICAgPGgyPnt7IHQoJ2luc3RydWN0aW9uc1RpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdpbnN0cnVjdGlvbnNCb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxoMj57eyB0KCdwcm9maWxlVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXByb2ZpbGVzXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3Byb2ZpbGVUaXRsZScpXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgcHJvZmlsZXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJwcm9maWxlKCkgPT09IGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFByb2ZpbGUoaXRlbSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdChpdGVtKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoaXRlbSArICdEZXNjcmlwdGlvbicpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnQoKVwiPnt7IHQoJ3N0YXJ0R2FtZScpIH19PC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LW1lbnUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtZW1vcnktZ2FtZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktc2NvcmVcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnYXR0ZW1wdHMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgYXR0ZW1wdHMoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdwYWlycycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBtYXRjaGVkUGFpcnMoKSB9fS97eyBwYWlyQ291bnQoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KHRpbWVMYWJlbCgpKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZm9ybWF0dGVkVGltZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3N0cmVhaycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBzdHJlYWsoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1ib2FyZFwiIFtjbGFzc109XCJib2FyZENsYXNzKClcIj5cbiAgICAgICAgICAgIEBmb3IgKGNhcmQgb2YgY2FyZHMoKTsgdHJhY2sgY2FyZC5pZCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZW1vcnktY2FyZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWZsaXBwZWRdPVwiY2FyZC5mbGlwcGVkIHx8IGNhcmQubWF0Y2hlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLW1hdGNoZWRdPVwiY2FyZC5tYXRjaGVkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY2FyZC5tYXRjaGVkIHx8IGxvY2tCb2FyZCgpIHx8IGZhaWxlZCgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmxpcChjYXJkKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbW9yeS1jYXJkX19iYWNrXCI+Pzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbW9yeS1jYXJkX19mcm9udFwiPnt7IGNhcmQuc3ltYm9sIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ3dvbicpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktd2luXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktY29uZmV0dGlcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChwaWVjZSBvZiBjb25mZXR0aVBpZWNlczsgdHJhY2sgcGllY2UpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyb3BoeS1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCd3aW5UaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHdpbkJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1yZXN1bHRcIiBbc3R5bGUuLS1wbGF5ZXItY29sb3JdPVwiYWN0aXZlUGxheWVyQ29sb3IoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFjdGl2ZVBsYXllckF2YXRhcigpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgcGxheWVyTmFtZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbWVkYWxJY29uKHJlc3VsdE1lZGFsKCkpIH19IHt7IHQocmVzdWx0TWVkYWwoKSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHBoYXNlKCkgPT09ICdsb3N0Jykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS13aW4gbWVtb3J5LXdpbi0tZmFpbGVkXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnbG9zZVRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnbG9zZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbW9yeS1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VNb2RlKClcIj57eyB0KCdiYWNrVG9TZXR1cCcpIH19PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPnt7IHQoJ2NoYW5nZUdhbWUnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbW9yeS1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0UmVzdGFydEdhbWUoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInJlZnJlc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIHt7IHQoJ3Jlc3RhcnQnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtZW1vcnktbGVhZGVyYm9hcmRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1sZWFkZXJib2FyZF9fdGl0bGVcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyb3BoeS1vdXRsaW5lXCIgLz5cbiAgICAgICAgICA8aDI+e3sgbGVhZGVyYm9hcmRIZWFkaW5nKCkgfX08L2gyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChwcm9maWxlTGVhZGVyYm9hcmQoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8cD57eyB0KCdsZWFkZXJib2FyZEVtcHR5JykgfX08L3A+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxvbD5cbiAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIHByb2ZpbGVMZWFkZXJib2FyZCgpOyB0cmFjayBlbnRyeS5pZDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBpbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBsZWFkZXJib2FyZFRpdGxlKGVudHJ5KSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBsZWFkZXJib2FyZExpbmUoZW50cnkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L29sPlxuICAgICAgICB9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9tYWluPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCIhIWNvbmZpcm1BY3Rpb24oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZUNvbmZpcm1Nb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICAtLW1lbW9yeS1wYW5lbDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZmZmZik7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsLXN0cm9uZzogI2Y4ZjZmYjtcbiAgICAgICAgLS1tZW1vcnktYm9yZGVyOiB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCAjZTdlNGVhKTtcbiAgICAgICAgLS1tZW1vcnktdGV4dDogdmFyKC0taW9uLWNvbG9yLWRhcmssICMyZjJhM2EpO1xuICAgICAgICAtLW1lbW9yeS1tdXRlZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIC0tbWVtb3J5LXNvZnQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMDgpO1xuICAgICAgICAtLW1lbW9yeS1yb3c6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4wNCk7XG4gICAgICAgIC0tbWVtb3J5LXByaW1hcnk6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjZmYwMGIyKTtcbiAgICAgICAgLS1tZW1vcnktc2Vjb25kYXJ5OiB2YXIoLS1pb24tY29sb3ItdGVydGlhcnksICM2YTJkZTIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyayksXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIHtcbiAgICAgICAgLS1tZW1vcnktcGFuZWw6ICMyMzFmMmQ7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsLXN0cm9uZzogIzJmMjkzOTtcbiAgICAgICAgLS1tZW1vcnktYm9yZGVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpO1xuICAgICAgICAtLW1lbW9yeS10ZXh0OiAjZmZmOGZmO1xuICAgICAgICAtLW1lbW9yeS1tdXRlZDogcmdiYSgyNTUsIDI0OCwgMjU1LCAwLjY4KTtcbiAgICAgICAgLS1tZW1vcnktc29mdDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0NSk7XG4gICAgICAgIC0tbWVtb3J5LXJvdzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1NSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2hlbGwge1xuICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTIwcHgpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDIwcHg7XG4gICAgICAgIHBhZGRpbmc6IDE4cHggMCAzMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm8ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI4cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDI4cHgsIDh2dywgNTJweCkgMjBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAyMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zMiksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tbWVtb3J5LXByaW1hcnkpLCB2YXIoLS1tZW1vcnktc2Vjb25kYXJ5KSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMjRweCA3MHB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjUpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm86OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogYXV0byAtMjAlIC00MiUgLTIwJTtcbiAgICAgICAgaGVpZ2h0OiA1NSU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgOTBkZWcsXG4gICAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KSAwIDEwcHgsXG4gICAgICAgICAgdHJhbnNwYXJlbnQgMTBweCAyMHB4XG4gICAgICAgICk7XG4gICAgICAgIG9wYWNpdHk6IDAuMTg7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00ZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvX19iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybyBoMSB7XG4gICAgICAgIG1hcmdpbjogMTRweCAwIDZweDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjI1cmVtLCA5dncsIDMuNjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybyBwIHtcbiAgICAgICAgbWF4LXdpZHRoOiA1MjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgM3Z3LCAxLjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIG9wYWNpdHk6IDAuODg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGFuZWwsXG4gICAgICAubWVtb3J5LWdhbWUge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMTZweCwgNHZ3LCAyOHB4KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDMpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LW9wdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaG93dG8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1vcHRpb25zIGgyLFxuICAgICAgLm1lbW9yeS1ob3d0byBoMixcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDhweCAwIDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ob3d0byBoMixcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaG93dG8gcCxcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIGJ1dHRvbixcbiAgICAgIC5tZW1vcnktc2Vjb25kYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiA5MnB4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogNXB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE4cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjAycmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgYnV0dG9uLmlzLXNlbGVjdGVkIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJpbWFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxOHB4IDQ1cHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJpbWFyeSBpb24taWNvbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICB3aWR0aDogMS4yNWVtO1xuICAgICAgICBoZWlnaHQ6IDEuMjVlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc3BhbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1yb3cpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc21hbGwsXG4gICAgICAubWVtb3J5LXdpbiBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc21hbGwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHN0cm9uZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICAgIGdhcDogY2xhbXAoOHB4LCAydncsIDEycHgpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWJvYXJkLS1raWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQtLWNsYXNzaWMge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQtLW5pbmphIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgbWlubWF4KDQwcHgsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBjbGFtcCgxNHB4LCA0dncsIDIycHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgcGVyc3BlY3RpdmU6IDgwMHB4O1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDI0cHgsIDd2dywgNDJweCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZF9fYmFjayxcbiAgICAgIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI4cyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZSwgb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZF9fYmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMiUgMjglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tbWVtb3J5LXNlY29uZGFyeSksIHZhcigtLW1lbW9yeS1wcmltYXJ5KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMjRweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjIpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmRfX2Zyb250IHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwtc3Ryb25nKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkLmlzLWZsaXBwZWQgLm1lbW9yeS1jYXJkX19iYWNrIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZC5pcy1mbGlwcGVkIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMzYwZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkLmlzLW1hdGNoZWQgLm1lbW9yeS1jYXJkX19mcm9udCB7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xMik7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4gaW9uLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gOHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MsICMyZGQzNmYpO1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4gcCB7XG4gICAgICAgIG1hcmdpbjogNHB4IDAgMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43Mik7XG4gICAgICAgIGNvbG9yOiAjMmYyYTNhO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLm1lbW9yeS1yZXN1bHQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5tZW1vcnktcmVzdWx0IHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXJlc3VsdCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzhweDtcbiAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGxheWVyLWNvbG9yLCB2YXIoLS1tZW1vcnktcHJpbWFyeSkpO1xuICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNnB4O1xuICAgICAgICBsZWZ0OiA4JTtcbiAgICAgICAgd2lkdGg6IDlweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYW5pbWF0aW9uOiBtZW1vcnktY29uZmV0dGktZmFsbCAxLjVzIGVhc2Utb3V0IGZvcndhcmRzO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXNlY29uZGFyeSk7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4wOHM7XG4gICAgICAgIGxlZnQ6IDIwJTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCgzbikge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZjZjNmO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMTZzO1xuICAgICAgICBsZWZ0OiAzOCU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoNG4pIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzJkZDM2ZjtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjI0cztcbiAgICAgICAgbGVmdDogNTUlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDVuKSB7XG4gICAgICAgIGxlZnQ6IDcyJTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCg2bikge1xuICAgICAgICBsZWZ0OiA4NiU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luLS1mYWlsZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICBib3R0b206IDEwcHg7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHZhcigtLW1lbW9yeS1wYW5lbCkgMjglKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1tZW51LWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDlyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogNThweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDE2cHgsIDR2dywgMjJweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmRfX3RpdGxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZSBpb24taWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIG9sIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzhweCAxZnI7XG4gICAgICAgIGdhcDogMnB4IDEwcHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1yb3cpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIGxpID4gc3BhbiB7XG4gICAgICAgIGdyaWQtcm93OiBzcGFuIDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOThyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIgaDIsXG4gICAgICAubWVtb3J5LXBsYXllciBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUycHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWF2YXRhci1saXN0LFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1hdmF0YXItbGlzdCBidXR0b24sXG4gICAgICAubWVtb3J5LWNvbG9yLWxpc3QgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDQ0cHg7XG4gICAgICAgIGhlaWdodDogNDRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYXZhdGFyLWxpc3QgYnV0dG9uLmlzLXNlbGVjdGVkLFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCBidXR0b24ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wbGF5ZXItY29sb3IpO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIG1lbW9yeS1jb25mZXR0aS1mYWxsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICAxOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTcwcHgpIHJvdGF0ZSgzMDBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MjBweCkge1xuICAgICAgICAubWVtb3J5LXNjb3JlIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1lbW9yeS1ib2FyZC0tbmluamEge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg1NHB4LCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tZW1vcnktYWN0aW9ucyxcbiAgICAgICAgLm1lbW9yeS1tZW51LWFjdGlvbnMsXG4gICAgICAgIC5tZW1vcnktcHJvZmlsZXMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtb3J5R2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcblxuICBASW5wdXQoKSBtaW5pR2FtZXNSb3V0ZSA9ICcvbWluaS1nYW1lcyc7XG5cbiAgcmVhZG9ubHkgcHJvZmlsZXM6IE1lbW9yeUdhbWVQcm9maWxlW10gPSBbJ2tpZCcsICdjbGFzc2ljJywgJ25pbmphJ107XG4gIHJlYWRvbmx5IGNvbmZldHRpUGllY2VzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTQgfSwgKF8sIGluZGV4KSA9PiBpbmRleCk7XG5cbiAgcmVhZG9ubHkgcGhhc2UgPSBzaWduYWw8TWVtb3J5R2FtZVBoYXNlPignaG9tZScpO1xuICByZWFkb25seSBwcm9maWxlID0gc2lnbmFsPE1lbW9yeUdhbWVQcm9maWxlPigna2lkJyk7XG4gIHJlYWRvbmx5IGRpZmZpY3VsdHkgPSBzaWduYWw8TWVtb3J5R2FtZURpZmZpY3VsdHk+KCdlYXN5Jyk7XG4gIHJlYWRvbmx5IG1vZGUgPSBzaWduYWw8TWVtb3J5R2FtZU1vZGU+KCdjbGFzc2ljJyk7XG4gIHJlYWRvbmx5IHBsYXlpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjYXJkcyA9IHNpZ25hbDxNZW1vcnlHYW1lQ2FyZFtdPihbXSk7XG4gIHJlYWRvbmx5IGF0dGVtcHRzID0gc2lnbmFsKDApO1xuICByZWFkb25seSBzdHJlYWsgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IGJlc3RTdHJlYWsgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IGVsYXBzZWQgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IHJlbWFpbmluZyA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgZmFpbGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9ja0JvYXJkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbGVhZGVyYm9hcmQgPSBzaWduYWw8TWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdPih0aGlzLnJlYWRMZWFkZXJib2FyZCgpKTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbiA9IHNpZ25hbDxNZW1vcnlDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgdGltZXI/OiBudW1iZXI7XG4gIHByaXZhdGUgZmlyc3RQaWNrPzogTWVtb3J5R2FtZUNhcmQ7XG5cbiAgcmVhZG9ubHkgcHJvZmlsZUNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IFBST0ZJTEVfQ09ORklHW3RoaXMucHJvZmlsZSgpXSk7XG4gIHJlYWRvbmx5IHBhaXJDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvZmlsZUNvbmZpZygpLnBhaXJzKTtcbiAgcmVhZG9ubHkgYm9hcmRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IGBtZW1vcnktYm9hcmQgJHt0aGlzLnByb2ZpbGVDb25maWcoKS5ib2FyZENsYXNzfWApO1xuICByZWFkb25seSBwcm9maWxlTGVhZGVyYm9hcmQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMubGVhZGVyYm9hcmQoKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IHRoaXMuZW50cnlQcm9maWxlKGVudHJ5KSA9PT0gdGhpcy5wcm9maWxlKCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5zZWNvbmRzIC0gYi5zZWNvbmRzIHx8IGEuYXR0ZW1wdHMgLSBiLmF0dGVtcHRzKVxuICAgICAgLnNsaWNlKDAsIDUpXG4gICk7XG4gIHJlYWRvbmx5IG1hdGNoZWRQYWlycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2FyZHMoKS5maWx0ZXIoKGNhcmQpID0+IGNhcmQubWF0Y2hlZCkubGVuZ3RoIC8gMik7XG4gIHJlYWRvbmx5IHdvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+ICF0aGlzLmZhaWxlZCgpICYmIHRoaXMucGxheWluZygpICYmIHRoaXMuY2FyZHMoKS5sZW5ndGggPiAwICYmIHRoaXMubWF0Y2hlZFBhaXJzKCkgPT09IHRoaXMucGFpckNvdW50KClcbiAgKTtcbiAgcmVhZG9ubHkgcGxheWVyTmFtZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5wbGF5ZXJQcm9maWxlcy5kaXNwbGF5TmFtZSh0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKSwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKVxuICApO1xuICByZWFkb25seSBhY3RpdmVQbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKT8uYXZhdGFyID8/ICfwn4yfJyk7XG4gIHJlYWRvbmx5IGFjdGl2ZVBsYXllckNvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCk/LmNvbG9yID8/ICcjZmYwMGIyJyk7XG4gIHJlYWRvbmx5IHRpbWVMYWJlbCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPyAndGltZUxlZnQnIDogJ3RpbWUnKSk7XG4gIHJlYWRvbmx5IGZvcm1hdHRlZFRpbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/IHRoaXMucmVtYWluaW5nKCkgOiB0aGlzLmVsYXBzZWQoKTtcbiAgICBjb25zdCBtaW4gPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgY29uc3Qgc2VjID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHttaW59OiR7U3RyaW5nKHNlYykucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVzdWx0TWVkYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhbGN1bGF0ZU1lZGFsKHRoaXMuYXR0ZW1wdHMoKSwgdGhpcy5yZXN1bHRTZWNvbmRzKCksIHRoaXMuYmVzdFN0cmVhaygpKSk7XG4gIHJlYWRvbmx5IHJlc3VsdFNlY29uZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/IHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyAtIHRoaXMucmVtYWluaW5nKCkgOiB0aGlzLmVsYXBzZWQoKVxuICApO1xuICByZWFkb25seSB3aW5Cb2R5ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ3dpbkJvZHknKVxuICAgICAgLnJlcGxhY2UoJ3thdHRlbXB0c30nLCBTdHJpbmcodGhpcy5hdHRlbXB0cygpKSlcbiAgICAgIC5yZXBsYWNlKCd7dGltZX0nLCB0aGlzLmZvcm1hdFNlY29uZHModGhpcy5yZXN1bHRTZWNvbmRzKCkpKVxuICAgICAgLnJlcGxhY2UoJ3tzdHJlYWt9JywgU3RyaW5nKHRoaXMuYmVzdFN0cmVhaygpKSlcbiAgKTtcbiAgcmVhZG9ubHkgY29uZmlybVRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY29uZmlybVJlc3RhcnRUaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1HYW1lc1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY29uZmlybU1vZGVUaXRsZScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjb25maXJtUmVzdGFydEJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjb25maXJtR2FtZXNCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY29uZmlybU1vZGVCb2R5Jyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IFtcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2NhbmNlbCcpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjYW5jZWwnLFxuICAgIH0sXG4gICAge1xuICAgICAgdGV4dDpcbiAgICAgICAgdGhpcy5jb25maXJtQWN0aW9uKCkgPT09ICdyZXN0YXJ0J1xuICAgICAgICAgID8gdGhpcy50KCdyZXN0YXJ0JylcbiAgICAgICAgICA6IHRoaXMuY29uZmlybUFjdGlvbigpID09PSAnZ2FtZXMnXG4gICAgICAgICAgICA/IHRoaXMudCgnY2hhbmdlR2FtZScpXG4gICAgICAgICAgICA6IHRoaXMudCgnYmFja1RvU2V0dXAnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgfSxcbiAgXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0TWVudU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKSwgMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWluaUdhbWVzJyk7XG4gIH1cblxuICBzZWxlY3RQcm9maWxlKHByb2ZpbGU6IE1lbW9yeUdhbWVQcm9maWxlKTogdm9pZCB7XG4gICAgdGhpcy5wcm9maWxlLnNldChwcm9maWxlKTtcbiAgICBpZiAocHJvZmlsZSA9PT0gJ2tpZCcpIHtcbiAgICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ2Vhc3knKTtcbiAgICAgIHRoaXMubW9kZS5zZXQoJ3JlbGF4ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHByb2ZpbGUgPT09ICduaW5qYScpIHtcbiAgICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ2hhcmQnKTtcbiAgICAgIHRoaXMubW9kZS5zZXQoJ3RpbWVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ21lZGl1bScpO1xuICAgIHRoaXMubW9kZS5zZXQoJ2NsYXNzaWMnKTtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGNvbnN0IHN5bWJvbHMgPSBTWU1CT0xTLnNsaWNlKDAsIHRoaXMucGFpckNvdW50KCkpO1xuICAgIGNvbnN0IGRlY2sgPSB0aGlzLnNodWZmbGUoWy4uLnN5bWJvbHMsIC4uLnN5bWJvbHNdKS5tYXAoKHN5bWJvbCwgaW5kZXgpID0+ICh7XG4gICAgICBpZDogYCR7c3ltYm9sfS0ke2luZGV4fS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfWAsXG4gICAgICBzeW1ib2wsXG4gICAgICBtYXRjaGVkOiBmYWxzZSxcbiAgICAgIGZsaXBwZWQ6IGZhbHNlLFxuICAgIH0pKTtcbiAgICB0aGlzLmNhcmRzLnNldChkZWNrKTtcbiAgICB0aGlzLmZpcnN0UGljayA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF0dGVtcHRzLnNldCgwKTtcbiAgICB0aGlzLnN0cmVhay5zZXQoMCk7XG4gICAgdGhpcy5iZXN0U3RyZWFrLnNldCgwKTtcbiAgICB0aGlzLmVsYXBzZWQuc2V0KDApO1xuICAgIHRoaXMucmVtYWluaW5nLnNldCh0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPz8gMCk7XG4gICAgdGhpcy5mYWlsZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmxvY2tCb2FyZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdwbGF5aW5nJyk7XG4gICAgdGhpcy5wbGF5aW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRHYW1lTXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVzZXRUb1NldHVwKCk6IHZvaWQge1xuICAgIHRoaXMucGxheWluZy5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2FyZHMuc2V0KFtdKTtcbiAgICB0aGlzLmZpcnN0UGljayA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZhaWxlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdob21lJyk7XG4gICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRNZW51TXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVxdWVzdFJlc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc3RhcnQnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ21vZGUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2dhbWVzJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBjb25maXJtUGVuZGluZ0FjdGlvbih0b2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0b2tlbiAhPT0gJ2NvbmZpcm0nKSB7XG4gICAgICB0aGlzLmNsb3NlQ29uZmlybU1vZGFsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ21vZGUnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9TZXR1cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9HYW1lc01lbnUoKTtcbiAgICB9XG4gIH1cblxuICBmbGlwKGNhcmQ6IE1lbW9yeUdhbWVDYXJkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9ja0JvYXJkKCkgfHwgY2FyZC5mbGlwcGVkIHx8IGNhcmQubWF0Y2hlZCB8fCB0aGlzLndvbigpIHx8IHRoaXMuZmFpbGVkKCkpIHJldHVybjtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmNhcmRzLnVwZGF0ZSgoY2FyZHMpID0+IGNhcmRzLm1hcCgoaXRlbSkgPT4gKGl0ZW0uaWQgPT09IGNhcmQuaWQgPyB7IC4uLml0ZW0sIGZsaXBwZWQ6IHRydWUgfSA6IGl0ZW0pKSk7XG4gICAgY29uc3QgdXBkYXRlZCA9IHRoaXMuY2FyZHMoKS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBjYXJkLmlkKTtcbiAgICBpZiAoIXVwZGF0ZWQpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuZmlyc3RQaWNrKSB7XG4gICAgICB0aGlzLmZpcnN0UGljayA9IHVwZGF0ZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdHRlbXB0cy51cGRhdGUoKHZhbHVlKSA9PiB2YWx1ZSArIDEpO1xuICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5maXJzdFBpY2s7XG4gICAgdGhpcy5maXJzdFBpY2sgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGZpcnN0LnN5bWJvbCA9PT0gdXBkYXRlZC5zeW1ib2wpIHtcbiAgICAgIHRoaXMuc3RyZWFrLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHZhbHVlICsgMTtcbiAgICAgICAgdGhpcy5iZXN0U3RyZWFrLnVwZGF0ZSgoYmVzdCkgPT4gTWF0aC5tYXgoYmVzdCwgbmV4dCkpO1xuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jYXJkcy51cGRhdGUoKGNhcmRzKSA9PlxuICAgICAgICBjYXJkcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSBmaXJzdC5pZCB8fCBpdGVtLmlkID09PSB1cGRhdGVkLmlkID8geyAuLi5pdGVtLCBtYXRjaGVkOiB0cnVlIH0gOiBpdGVtKSlcbiAgICAgICk7XG4gICAgICB0aGlzLmF1ZGlvLm1hdGNoKCk7XG4gICAgICBpZiAodGhpcy5jYXJkcygpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5tYXRjaGVkKS5sZW5ndGggPT09IHRoaXMuY2FyZHMoKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICAgICAgdGhpcy5waGFzZS5zZXQoJ3dvbicpO1xuICAgICAgICB0aGlzLnNhdmVTY29yZSgpO1xuICAgICAgICB0aGlzLmF1ZGlvLndpbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9ja0JvYXJkLnNldCh0cnVlKTtcbiAgICB0aGlzLnN0cmVhay5zZXQoMCk7XG4gICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jYXJkcy51cGRhdGUoKGNhcmRzKSA9PlxuICAgICAgICBjYXJkcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSBmaXJzdC5pZCB8fCBpdGVtLmlkID09PSB1cGRhdGVkLmlkID8geyAuLi5pdGVtLCBmbGlwcGVkOiBmYWxzZSB9IDogaXRlbSkpXG4gICAgICApO1xuICAgICAgdGhpcy5sb2NrQm9hcmQuc2V0KGZhbHNlKTtcbiAgICB9LCB0aGlzLnByb2ZpbGVDb25maWcoKS5taXNtYXRjaERlbGF5KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRUaW1lcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHRoaXMudGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMpIHtcbiAgICAgICAgdGhpcy5lbGFwc2VkLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlICsgMSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtYWluaW5nLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IE1hdGgubWF4KDAsIHZhbHVlIC0gMSk7XG4gICAgICAgIGlmIChuZXh0ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5mYWlsZWQuc2V0KHRydWUpO1xuICAgICAgICAgIHRoaXMucGhhc2Uuc2V0KCdsb3N0Jyk7XG4gICAgICAgICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICAgICAgICB0aGlzLmF1ZGlvLmxvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgIH0pO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgdGhpcy50aW1lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0VG9HYW1lc01lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFRvU2V0dXAoKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgbWluaUdhbWVzQmFzZVJvdXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGUgPSAodGhpcy5taW5pR2FtZXNSb3V0ZSB8fCAnL21pbmktZ2FtZXMnKS50cmltKCk7XG4gICAgcmV0dXJuIGAvJHtyb3V0ZS5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJykgfHwgJ21pbmktZ2FtZXMnfWA7XG4gIH1cblxuICBwcml2YXRlIHNodWZmbGU8VD4oaXRlbXM6IFRbXSk6IFRbXSB7XG4gICAgY29uc3QgY29weSA9IFsuLi5pdGVtc107XG4gICAgZm9yIChsZXQgaSA9IGNvcHkubGVuZ3RoIC0gMTsgaSA+IDA7IGkgLT0gMSkge1xuICAgICAgY29uc3QgaiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChpICsgMSkpO1xuICAgICAgW2NvcHlbaV0sIGNvcHlbal1dID0gW2NvcHlbal0sIGNvcHlbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWFkZXJib2FyZExpbmUoZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vdmVzID0gdGhpcy50KCdsZWFkZXJib2FyZE1vdmVzJykucmVwbGFjZSgne21vdmVzfScsIFN0cmluZyhlbnRyeS5hdHRlbXB0cykpO1xuICAgIGNvbnN0IHRpbWUgPSB0aGlzLnQoJ2xlYWRlcmJvYXJkVGltZScpLnJlcGxhY2UoJ3t0aW1lfScsIHRoaXMuZm9ybWF0U2Vjb25kcyhlbnRyeS5zZWNvbmRzKSk7XG4gICAgcmV0dXJuIGAke21vdmVzfSDCtyAke3RpbWV9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWFkZXJib2FyZFRpdGxlKGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gZW50cnkucGxheWVyTmFtZSB8fCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJyk7XG4gICAgaWYgKGVudHJ5LnByb2ZpbGUpIHJldHVybiBgJHtlbnRyeS5wbGF5ZXJBdmF0YXIgfHwgJ+KtkCd9ICR7bmFtZX0gwrcgJHt0aGlzLnQoZW50cnkucHJvZmlsZSl9YDtcbiAgICByZXR1cm4gYCR7dGhpcy50KGVudHJ5LmRpZmZpY3VsdHkpfSDCtyAke3RoaXMudChlbnRyeS5tb2RlKX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxlYWRlcmJvYXJkSGVhZGluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2xlYWRlcmJvYXJkUHJvZmlsZVRpdGxlJykucmVwbGFjZSgne3Byb2ZpbGV9JywgdGhpcy50KHRoaXMucHJvZmlsZSgpKSk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVTY29yZSgpOiB2b2lkIHtcbiAgICBjb25zdCBtZWRhbCA9IHRoaXMuY2FsY3VsYXRlTWVkYWwodGhpcy5hdHRlbXB0cygpLCB0aGlzLnJlc3VsdFNlY29uZHMoKSwgdGhpcy5iZXN0U3RyZWFrKCkpO1xuICAgIGNvbnN0IGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5ID0ge1xuICAgICAgaWQ6IGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9YCxcbiAgICAgIHByb2ZpbGU6IHRoaXMucHJvZmlsZSgpLFxuICAgICAgcGxheWVyTmFtZTogdGhpcy5wbGF5ZXJOYW1lKCksXG4gICAgICBwbGF5ZXJBdmF0YXI6IHRoaXMuYWN0aXZlUGxheWVyQXZhdGFyKCksXG4gICAgICBtZWRhbCxcbiAgICAgIGRpZmZpY3VsdHk6IHRoaXMuZGlmZmljdWx0eSgpLFxuICAgICAgbW9kZTogdGhpcy5tb2RlKCksXG4gICAgICBhdHRlbXB0czogdGhpcy5hdHRlbXB0cygpLFxuICAgICAgc2Vjb25kczogdGhpcy5yZXN1bHRTZWNvbmRzKCksXG4gICAgICBjb21wbGV0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgY29uc3QgbmV4dCA9IHRoaXMubGltaXRMZWFkZXJib2FyZChbLi4udGhpcy5sZWFkZXJib2FyZCgpLCBlbnRyeV0pO1xuICAgIHRoaXMubGVhZGVyYm9hcmQuc2V0KG5leHQpO1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMRUFERVJCT0FSRF9LRVksIEpTT04uc3RyaW5naWZ5KG5leHQpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZSBwdWVkZSBubyBlc3RhciBkaXNwb25pYmxlIGVuIFNTUi90ZXN0cy5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRMZWFkZXJib2FyZCgpOiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5W10ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMRUFERVJCT0FSRF9LRVkpO1xuICAgICAgaWYgKCFyYXcpIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBKU09OLnBhcnNlKHJhdykgYXMgTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXR1cm4gW107XG4gICAgICByZXR1cm4gdGhpcy5saW1pdExlYWRlcmJvYXJkKFxuICAgICAgICBlbnRyaWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Py5kaWZmaWN1bHR5ICYmIGVudHJ5Py5tb2RlICYmIE51bWJlci5pc0Zpbml0ZShlbnRyeT8uYXR0ZW1wdHMpKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpbWl0TGVhZGVyYm9hcmQoZW50cmllczogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdKTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlcy5mbGF0TWFwKChwcm9maWxlKSA9PlxuICAgICAgZW50cmllc1xuICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gdGhpcy5lbnRyeVByb2ZpbGUoZW50cnkpID09PSBwcm9maWxlKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5zZWNvbmRzIC0gYi5zZWNvbmRzIHx8IGEuYXR0ZW1wdHMgLSBiLmF0dGVtcHRzKVxuICAgICAgICAuc2xpY2UoMCwgNSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnRyeVByb2ZpbGUoZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkpOiBNZW1vcnlHYW1lUHJvZmlsZSB7XG4gICAgaWYgKGVudHJ5LnByb2ZpbGUpIHJldHVybiBlbnRyeS5wcm9maWxlO1xuICAgIGlmIChlbnRyeS5tb2RlID09PSAndGltZWQnIHx8IGVudHJ5LmRpZmZpY3VsdHkgPT09ICdoYXJkJykgcmV0dXJuICduaW5qYSc7XG4gICAgaWYgKGVudHJ5Lm1vZGUgPT09ICdyZWxheGVkJyB8fCBlbnRyeS5kaWZmaWN1bHR5ID09PSAnZWFzeScpIHJldHVybiAna2lkJztcbiAgICByZXR1cm4gJ2NsYXNzaWMnO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVNZWRhbChhdHRlbXB0czogbnVtYmVyLCBzZWNvbmRzOiBudW1iZXIsIGJlc3RTdHJlYWs6IG51bWJlcik6IE1lbW9yeU1lZGFsIHtcbiAgICBjb25zdCBwYWlycyA9IHRoaXMucGFpckNvdW50KCk7XG4gICAgY29uc3QgcGVyZmVjdGlzaCA9IGF0dGVtcHRzIDw9IHBhaXJzICsgTWF0aC5jZWlsKHBhaXJzICogMC4zNSk7XG4gICAgY29uc3Qgc29saWQgPSBhdHRlbXB0cyA8PSBwYWlycyAqIDI7XG4gICAgY29uc3QgZmFzdCA9ICF0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgfHwgc2Vjb25kcyA8PSBNYXRoLm1heCgzMCwgcGFpcnMgKiA4KTtcbiAgICBpZiAocGVyZmVjdGlzaCAmJiBmYXN0ICYmIGJlc3RTdHJlYWsgPj0gTWF0aC5jZWlsKHBhaXJzICogMC40NSkpIHJldHVybiAnZ29sZCc7XG4gICAgaWYgKHNvbGlkICYmIGJlc3RTdHJlYWsgPj0gTWF0aC5jZWlsKHBhaXJzICogMC4yNSkpIHJldHVybiAnc2lsdmVyJztcbiAgICBpZiAoc29saWQpIHJldHVybiAnYnJvbnplJztcbiAgICByZXR1cm4gJ3NwYXJrJztcbiAgfVxuXG4gIHByb3RlY3RlZCBtZWRhbEljb24obWVkYWw6IE1lbW9yeU1lZGFsKTogc3RyaW5nIHtcbiAgICBpZiAobWVkYWwgPT09ICdnb2xkJykgcmV0dXJuICfwn6WHJztcbiAgICBpZiAobWVkYWwgPT09ICdzaWx2ZXInKSByZXR1cm4gJ/CfpYgnO1xuICAgIGlmIChtZWRhbCA9PT0gJ2Jyb256ZScpIHJldHVybiAn8J+liSc7XG4gICAgcmV0dXJuICfinKgnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRTZWNvbmRzKHNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbWluID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IHNlYyA9IHNlY29uZHMgJSA2MDtcbiAgICByZXR1cm4gYCR7bWlufToke1N0cmluZyhzZWMpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgfVxufVxuIl19
|