dmencu 3.3.1 → 3.4.0
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/ayuda/asignacion.md +16 -0
- package/ayuda/circuito-encuesta.md +27 -0
- package/ayuda/control.md +13 -0
- package/ayuda/dm-cambiar-modo.md +16 -0
- package/ayuda/dm-relevamiento.md +20 -0
- package/ayuda/dm-sincronizar.md +18 -0
- package/ayuda/fin-de-campo.md +14 -0
- package/ayuda/metadatos.md +14 -0
- package/ayuda/procesar.md +13 -0
- package/ayuda/recepcion.md +20 -0
- package/ayuda/supervision.md +9 -0
- package/ayuda/usuarios.md +12 -0
- package/ayuda/varios.md +23 -0
- package/dist/client/client/client.js +99 -2
- package/dist/client/client/css/menu.styl +29 -0
- package/dist/client/unlogged/css/formulario-react.styl +9 -0
- package/dist/client/unlogged/render-config.d.ts +5 -1
- package/dist/client/unlogged/render-config.js +14 -1
- package/dist/client/unlogged/render-formulario.d.ts +1 -0
- package/dist/client/unlogged/render-formulario.js +43 -2
- package/dist/client/unlogged/render-formulario.tsx +71 -0
- package/dist/client/unlogged/render-general.d.ts +2 -0
- package/dist/client/unlogged/render-general.js +2 -1
- package/dist/client/unlogged/render-general.tsx +1 -0
- package/dist/client/unlogged/render-init.d.ts +1 -0
- package/dist/client/unlogged/render-init.js +9 -2
- package/dist/client/unlogged/tipos.d.ts +19 -1
- package/dist/client/unlogged/tipos.js +1 -1
- package/dist/server/app-dmencu.d.ts +8 -1
- package/dist/server/app-dmencu.js +39 -2
- package/dist/server/ayuda.d.ts +19 -0
- package/dist/server/ayuda.js +224 -0
- package/dist/server/procedures-dmencu.js +20 -2
- package/dist/server/server/app-dmencu.d.ts +8 -1
- package/dist/server/server/app-dmencu.js +39 -2
- package/dist/server/server/ayuda.d.ts +19 -0
- package/dist/server/server/ayuda.js +224 -0
- package/dist/server/server/procedures-dmencu.js +18 -2
- package/dist/server/server/types-dmencu.d.ts +20 -1
- package/dist/server/server/types-dmencu.js +1 -1
- package/dist/server/types-dmencu.d.ts +20 -1
- package/dist/server/types-dmencu.js +1 -1
- package/dist/server/unlogged/tipos.d.ts +19 -1
- package/dist/server/unlogged/tipos.js +1 -1
- package/dist/test/app-para-tests.d.ts +2 -0
- package/dist/test/test-ayuda.d.ts +1 -0
- package/dist/test/test-ayuda.js +183 -0
- package/dist/test/test.d.ts +1 -0
- package/dist/test/test.js +3 -2
- package/dist/unlogged/tipos.d.ts +19 -1
- package/dist/unlogged/tipos.js +1 -1
- package/dist/unlogged/unlogged/css/formulario-react.styl +9 -0
- package/dist/unlogged/unlogged/render-config.d.ts +5 -1
- package/dist/unlogged/unlogged/render-config.js +14 -1
- package/dist/unlogged/unlogged/render-formulario.d.ts +1 -0
- package/dist/unlogged/unlogged/render-formulario.js +43 -2
- package/dist/unlogged/unlogged/render-formulario.tsx +71 -0
- package/dist/unlogged/unlogged/render-general.d.ts +2 -0
- package/dist/unlogged/unlogged/render-general.js +2 -1
- package/dist/unlogged/unlogged/render-general.tsx +1 -0
- package/dist/unlogged/unlogged/render-init.d.ts +1 -0
- package/dist/unlogged/unlogged/render-init.js +9 -2
- package/dist/unlogged/unlogged/tipos.d.ts +19 -1
- package/dist/unlogged/unlogged/tipos.js +1 -1
- package/dist/unlogged/unlogged/unlogged.js +14 -1
- package/package.json +5 -2
|
@@ -27,7 +27,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
27
27
|
if (v !== undefined) module.exports = v;
|
|
28
28
|
}
|
|
29
29
|
else if (typeof define === "function" && define.amd) {
|
|
30
|
-
define(["require", "exports", "procesamiento", "./procedures-dmencu", "pg-promise-strict", "mini-tools", "cast-error", "yazl", "express", "fs", "./table-roles", "./table-personal", "./table-recepcionistas", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-mis_encuestadores", "./table-recuperadores", "./table-supervisores", "./table-personal_rol", "./table-permisos", "./table-roles_permisos", "./table-modos_dm", "./table-parametros", "./table-roles_subordinados", "./table-no_rea", "./table-no_rea_sup", "./table-rea", "./table-rea_sup", "./table-tem", "./table-semanas", "./table-usuarios", "./table-operaciones", "./table-comunas", "./table-areas", "./table-sincronizaciones", "./table-tareas", "./table-tareas_tem", "./table-tareas_areas", "./table-areas_asignacion_general", "./table-grilla_hoja_ruta", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-mis_tareas", "./table-tem_asignacion", "./table-tareas_tem_recepcion", "./table-tareas_tem_ingreso", "./table-tareas_tem_fin_campo", "./table-tareas_tem_procesamiento", "./table-tareas_tem_analisis_campo", "./table-mis_tareas_areas", "./table-control_campo", "./table-control_resumen", "./table-control_dias_carga", "./table-viviendas", "./table-visitas", "./table-hogares", "./table-personas", "./table-visitas_sup", "./table-hogares_sup", "./table-personas_sup", "./table-diccionario", "./table-dictra", "./table-dicvar", "./table-estados", "./table-acciones", "./table-estados_acciones", "./table-tareas_proximas", "./table-historial_tem", "./table-inconsistencias_cumplen_condicion", "./table-tem_borradas", "./table-barrios", "./table-fracciones", "./table-radios", "./table-manzanas", "./table-area_enc_proximas", "./types-dmencu", "./def-config", "best-globals"], factory);
|
|
30
|
+
define(["require", "exports", "procesamiento", "./procedures-dmencu", "./ayuda", "pg-promise-strict", "mini-tools", "cast-error", "yazl", "express", "fs", "path", "./table-roles", "./table-personal", "./table-recepcionistas", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-mis_encuestadores", "./table-recuperadores", "./table-supervisores", "./table-personal_rol", "./table-permisos", "./table-roles_permisos", "./table-modos_dm", "./table-parametros", "./table-roles_subordinados", "./table-no_rea", "./table-no_rea_sup", "./table-rea", "./table-rea_sup", "./table-tem", "./table-semanas", "./table-usuarios", "./table-operaciones", "./table-comunas", "./table-areas", "./table-sincronizaciones", "./table-tareas", "./table-tareas_tem", "./table-tareas_areas", "./table-areas_asignacion_general", "./table-grilla_hoja_ruta", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-mis_tareas", "./table-tem_asignacion", "./table-tareas_tem_recepcion", "./table-tareas_tem_ingreso", "./table-tareas_tem_fin_campo", "./table-tareas_tem_procesamiento", "./table-tareas_tem_analisis_campo", "./table-mis_tareas_areas", "./table-control_campo", "./table-control_resumen", "./table-control_dias_carga", "./table-viviendas", "./table-visitas", "./table-hogares", "./table-personas", "./table-visitas_sup", "./table-hogares_sup", "./table-personas_sup", "./table-diccionario", "./table-dictra", "./table-dicvar", "./table-estados", "./table-acciones", "./table-estados_acciones", "./table-tareas_proximas", "./table-historial_tem", "./table-inconsistencias_cumplen_condicion", "./table-tem_borradas", "./table-barrios", "./table-fracciones", "./table-radios", "./table-manzanas", "./table-area_enc_proximas", "./types-dmencu", "./ayuda", "./def-config", "best-globals"], factory);
|
|
31
31
|
}
|
|
32
32
|
})(function (require, exports) {
|
|
33
33
|
"use strict";
|
|
@@ -35,16 +35,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
35
35
|
exports.AppDmEncu = exports.TABLAS_REA_NO_REA = exports.TABLAS_ESTRUCTURA = void 0;
|
|
36
36
|
exports.getModoByPolicy = getModoByPolicy;
|
|
37
37
|
exports.permisosSegunUsuario = permisosSegunUsuario;
|
|
38
|
+
exports.quienConsultaAyuda = quienConsultaAyuda;
|
|
38
39
|
exports.refrescarEstructuraAlModificarTabla = refrescarEstructuraAlModificarTabla;
|
|
39
40
|
exports.emergeAppDmEncu = emergeAppDmEncu;
|
|
40
41
|
const procesamiento_1 = require("procesamiento");
|
|
41
42
|
const procedures_dmencu_1 = require("./procedures-dmencu");
|
|
43
|
+
const ayuda_1 = require("./ayuda");
|
|
42
44
|
const pg = require("pg-promise-strict");
|
|
43
45
|
const miniTools = require("mini-tools");
|
|
44
46
|
const cast_error_1 = require("cast-error");
|
|
45
47
|
const yazl = require("yazl");
|
|
46
48
|
const express = require("express");
|
|
47
49
|
const fs_1 = require("fs");
|
|
50
|
+
const path = require("path");
|
|
48
51
|
const table_roles_1 = require("./table-roles");
|
|
49
52
|
const table_personal_1 = require("./table-personal");
|
|
50
53
|
const table_recepcionistas_1 = require("./table-recepcionistas");
|
|
@@ -115,6 +118,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
115
118
|
const table_manzanas_1 = require("./table-manzanas");
|
|
116
119
|
const table_area_enc_proximas_1 = require("./table-area_enc_proximas");
|
|
117
120
|
__exportStar(require("./types-dmencu"), exports);
|
|
121
|
+
__exportStar(require("./ayuda"), exports);
|
|
118
122
|
const def_config_1 = require("./def-config");
|
|
119
123
|
const best_globals_1 = require("best-globals");
|
|
120
124
|
const APP_DM_VERSION = "#22-12-15";
|
|
@@ -133,6 +137,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
133
137
|
}
|
|
134
138
|
return { puede: permisosDelRol === null || permisosDelRol === void 0 ? void 0 : permisosDelRol.puede };
|
|
135
139
|
}
|
|
140
|
+
// lo que decide qué temas de ayuda ve el usuario: su rol, sus permisos y el modo de la instancia
|
|
141
|
+
function quienConsultaAyuda(context) {
|
|
142
|
+
var _a, _b;
|
|
143
|
+
return {
|
|
144
|
+
rol: (_b = (_a = context.user) === null || _a === void 0 ? void 0 : _a.rol) !== null && _b !== void 0 ? _b : null,
|
|
145
|
+
superuser: !!context.superuser,
|
|
146
|
+
puede: context.puede,
|
|
147
|
+
modo: getModoByPolicy(context.be),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
136
150
|
// tablas cuya modificación cambia la estructura que se manda a los dispositivos (ver operativo_estructura_completa)
|
|
137
151
|
exports.TABLAS_ESTRUCTURA = ['casilleros', 'semanas'];
|
|
138
152
|
// tablas de rea/no rea, que además se guardan en be.caches.tableContent (ver refreshCaches)
|
|
@@ -234,6 +248,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
234
248
|
this.caches.metaEncIncluirCasillerosSaltoREL = false;
|
|
235
249
|
this.caches.timestampEstructura = new Date().getTime();
|
|
236
250
|
this.caches.tableContent.conReaHogar = {};
|
|
251
|
+
this.caches.ayuda = [];
|
|
237
252
|
}
|
|
238
253
|
// backend-plus lo declara sin parámetros pero lo llama con (context, usuario), por eso son opcionales
|
|
239
254
|
canChangePass(reqOrContext, userToChangePass) {
|
|
@@ -458,10 +473,29 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
458
473
|
//console.dir(be.caches.permisosParaNadie,{depth:9});
|
|
459
474
|
});
|
|
460
475
|
});
|
|
476
|
+
be.caches.ayuda = (0, ayuda_1.cargarAyuda)(be.getAyudaFuentes());
|
|
477
|
+
be.problemasDeAyuda().forEach(problema => console.error(problema));
|
|
461
478
|
yield this.refreshCaches();
|
|
462
479
|
yield registrarCronJobPasarAProie(be);
|
|
463
480
|
});
|
|
464
481
|
}
|
|
482
|
+
// carpetas con la ayuda para usuarios, en orden: un tema de una fuente posterior reemplaza u oculta
|
|
483
|
+
// al de una anterior con el mismo id. Las apps finales agregan la suya (ver docs/ayuda-online.md)
|
|
484
|
+
getAyudaFuentes() {
|
|
485
|
+
return [{ origen: 'dmencu', carpeta: path.join((0, ayuda_1.carpetaDelPaquete)(__dirname), 'ayuda') }];
|
|
486
|
+
}
|
|
487
|
+
// temas de ayuda del modo actual con permisos, roles u opciones de menú que no existen
|
|
488
|
+
problemasDeAyuda() {
|
|
489
|
+
var be = this;
|
|
490
|
+
var modo = getModoByPolicy(be);
|
|
491
|
+
var rutas = [];
|
|
492
|
+
Object.keys(be.caches.permisosRol).forEach(rol => {
|
|
493
|
+
var user = { rol, idper: '', usuario: '' };
|
|
494
|
+
var context = Object.assign(Object.assign({}, permisosSegunUsuario(be.caches, user)), { be, user, session: {}, username: '', machineId: '', navigator: '' });
|
|
495
|
+
rutas = rutas.concat((0, ayuda_1.rutasDelMenu)(be.getMenu(context).menu));
|
|
496
|
+
});
|
|
497
|
+
return (0, ayuda_1.problemasDeAyuda)(be.caches.ayuda.filter(tema => tema.modo == null || tema.modo == modo), be.caches.permisosSuperuser, Object.keys(be.caches.permisosRol), rutas);
|
|
498
|
+
}
|
|
465
499
|
configStaticConfig() {
|
|
466
500
|
super.configStaticConfig();
|
|
467
501
|
this.setStaticConfig(def_config_1.defConfig);
|
|
@@ -880,6 +914,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
880
914
|
menu.push(menuCarto);
|
|
881
915
|
}
|
|
882
916
|
}
|
|
917
|
+
if ((0, ayuda_1.temasVisibles)(this.caches.ayuda, quienConsultaAyuda(context)).length) {
|
|
918
|
+
menu.push({ menuType: 'ayuda', name: 'ayuda' });
|
|
919
|
+
}
|
|
883
920
|
return { menu };
|
|
884
921
|
}
|
|
885
922
|
prepareGetTables() {
|
|
@@ -1051,4 +1088,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
1051
1088
|
}
|
|
1052
1089
|
exports.AppDmEncu = emergeAppDmEncu((0, procesamiento_1.emergeAppProcesamiento)((0, procesamiento_1.emergeAppConsistencias)((0, procesamiento_1.emergeAppVarCal)((0, procesamiento_1.emergeAppDatosExt)((0, procesamiento_1.emergeAppOperativos)(procesamiento_1.AppBackend))))));
|
|
1053
1090
|
});
|
|
1054
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBaUhiLDBDQUVDO0lBR0Qsb0RBYUM7SUF3QkQsa0ZBZ0JDO0lBaUVELDBDQSsyQkM7SUF4bENELGlEQUE0TDtJQUM1TCwyREFBNkU7SUFFN0Usd0NBQXdDO0lBQ3hDLHdDQUF3QztJQVN4QywyQ0FBa0Q7SUFFbEQsNkJBQTZCO0lBRTdCLG1DQUFtQztJQUVuQywyQkFBb0M7SUFFcEMsK0NBQXNDO0lBQ3RDLHFEQUE0QztJQUM1QyxpRUFBd0Q7SUFDeEQsK0RBQXdGO0lBQ3hGLCtEQUFnRTtJQUNoRSwrREFBK0Q7SUFDL0QsK0RBQW1FO0lBQ25FLHVFQUE4RDtJQUM5RCwrREFBc0Q7SUFDdEQsNkRBQW9EO0lBQ3BELDZEQUFvRDtJQUNwRCxxREFBNEM7SUFDNUMsaUVBQXdEO0lBQ3hELHFEQUE0QztJQUM1Qyx5REFBZ0Q7SUFDaEQseUVBQWdFO0lBRWhFLGlEQUF3QztJQUN4Qyx5REFBZ0Q7SUFDaEQsMkNBQWtDO0lBQ2xDLG1EQUEwQztJQUMxQywyQ0FBa0M7SUFDbEMsbURBQTBDO0lBQzFDLHFEQUE0QztJQUM1QywyREFBa0Q7SUFDbEQsbURBQTBDO0lBQzFDLCtDQUFzQztJQUN0QyxxRUFBNEQ7SUFDNUQsaURBQXdDO0lBQ3hDLHlEQU00QjtJQUM1Qiw2REFBb0Q7SUFDcEQscUZBQTRFO0lBQzVFLHFFQUE0RDtJQUM1RCw2REFBb0Q7SUFDcEQsNkRBQW9EO0lBQ3BELDZEQUFvRDtJQUNwRCw2REFBb0Q7SUFDcEQseURBQWdEO0lBQ2hELGlFQUF3RDtJQUN4RCw2RUFBb0U7SUFDcEUseUVBQWdFO0lBQ2hFLDZFQUFvRTtJQUNwRSxxRkFBNEU7SUFDNUUsdUZBQThFO0lBQzlFLHFFQUE0RDtJQUM1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VSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUN6RixDQUFDO2dCQUNOLENBQUMsQ0FBQyxDQUFBO1lBQ04sQ0FBQztTQUNKLENBQUE7SUFDTCxDQUFDO0lBRVUsUUFBQSxTQUFTLEdBQUcsZUFBZSxDQUFDLElBQUEsc0NBQXNCLEVBQUMsSUFBQSxzQ0FBc0IsRUFBQyxJQUFBLCtCQUFlLEVBQUMsSUFBQSxpQ0FBaUIsRUFBQyxJQUFBLG1DQUFtQixFQUFDLDBCQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCAqIGFzIHByb2Nlc2FtaWVudG8gZnJvbSBcInByb2Nlc2FtaWVudG9cIjtcclxuaW1wb3J0IHsgZW1lcmdlQXBwUHJvY2VzYW1pZW50bywgZW1lcmdlQXBwQ29uc2lzdGVuY2lhcywgZW1lcmdlQXBwVmFyQ2FsLCBlbWVyZ2VBcHBEYXRvc0V4dCwgZW1lcmdlQXBwT3BlcmF0aXZvcywgQXBwQmFja2VuZCwgQ2xpZW50TW9kdWxlRGVmaW5pdGlvbiwgT3B0c0NsaWVudFBhZ2UgfSBmcm9tIFwicHJvY2VzYW1pZW50b1wiO1xyXG5pbXBvcnQgeyBwYXNhckVuY3Vlc3Rhc0FQcm9pZSwgUHJvY2VkdXJlc0RtRW5jdSB9IGZyb20gXCIuL3Byb2NlZHVyZXMtZG1lbmN1XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwZyBmcm9tIFwicGctcHJvbWlzZS1zdHJpY3RcIjtcclxuaW1wb3J0ICogYXMgbWluaVRvb2xzIGZyb20gXCJtaW5pLXRvb2xzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBDbGllbnQsIENvbnRleHQsIENvcmVGdW5jdGlvblBhcmFtZXRlcnMsXHJcbiAgICBNZW51SW5mb0Jhc2UsXHJcbiAgICBQdWVkZSxcclxuICAgIFJlcXVlc3QsIFJlc3BvbnNlLFxyXG4gICAgU3VmaWpvc0FtYmllbnRlLFxyXG59IGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5cclxuaW1wb3J0IHsgZXhwZWN0ZWQsIHVuZXhwZWN0ZWQgfSBmcm9tIFwiY2FzdC1lcnJvclwiO1xyXG5cclxuaW1wb3J0ICogYXMgeWF6bCBmcm9tIFwieWF6bFwiO1xyXG5pbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tIFwiZXhwcmVzcy1zZXJ2ZS1zdGF0aWMtY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBleHByZXNzIGZyb20gXCJleHByZXNzXCI7XHJcblxyXG5pbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gXCJmc1wiO1xyXG5cclxuaW1wb3J0IHsgcm9sZXMgfSBmcm9tIFwiLi90YWJsZS1yb2xlc1wiO1xyXG5pbXBvcnQgeyBwZXJzb25hbCB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsXCI7XHJcbmltcG9ydCB7IHJlY2VwY2lvbmlzdGFzIH0gZnJvbSBcIi4vdGFibGUtcmVjZXBjaW9uaXN0YXNcIjtcclxuaW1wb3J0IHsgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3MsIGluZ3Jlc2Fkb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHJlY3VwZXJhZG9yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBtaXNfc3VwZXJ2aXNvcmVzX2FzaWduYWRvcyB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgbWlzX2VuY3Vlc3RhZG9yZXMgfSBmcm9tIFwiLi90YWJsZS1taXNfZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyByZWN1cGVyYWRvcmVzIH0gZnJvbSBcIi4vdGFibGUtcmVjdXBlcmFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXMgfSBmcm9tIFwiLi90YWJsZS1zdXBlcnZpc29yZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWxfcm9sIH0gZnJvbSBcIi4vdGFibGUtcGVyc29uYWxfcm9sXCI7XHJcbmltcG9ydCB7IHBlcm1pc29zIH0gZnJvbSBcIi4vdGFibGUtcGVybWlzb3NcIjtcclxuaW1wb3J0IHsgcm9sZXNfcGVybWlzb3MgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19wZXJtaXNvc1wiO1xyXG5pbXBvcnQgeyBtb2Rvc19kbSB9IGZyb20gXCIuL3RhYmxlLW1vZG9zX2RtXCI7XHJcbmltcG9ydCB7IHBhcmFtZXRyb3MgfSBmcm9tIFwiLi90YWJsZS1wYXJhbWV0cm9zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3N1Ym9yZGluYWRvcyB9IGZyb20gXCIuL3RhYmxlLXJvbGVzX3N1Ym9yZGluYWRvc1wiO1xyXG5cclxuaW1wb3J0IHsgbm9fcmVhIH0gZnJvbSBcIi4vdGFibGUtbm9fcmVhXCI7XHJcbmltcG9ydCB7IG5vX3JlYV9zdXAgfSBmcm9tIFwiLi90YWJsZS1ub19yZWFfc3VwXCI7XHJcbmltcG9ydCB7IHJlYSB9IGZyb20gXCIuL3RhYmxlLXJlYVwiO1xyXG5pbXBvcnQgeyByZWFfc3VwIH0gZnJvbSBcIi4vdGFibGUtcmVhX3N1cFwiO1xyXG5pbXBvcnQgeyB0ZW0gfSBmcm9tIFwiLi90YWJsZS10ZW1cIjtcclxuaW1wb3J0IHsgc2VtYW5hcyB9IGZyb20gXCIuL3RhYmxlLXNlbWFuYXNcIjtcclxuaW1wb3J0IHsgdXN1YXJpb3MgfSBmcm9tICcuL3RhYmxlLXVzdWFyaW9zJztcclxuaW1wb3J0IHsgb3BlcmFjaW9uZXMgfSBmcm9tICcuL3RhYmxlLW9wZXJhY2lvbmVzJztcclxuaW1wb3J0IHsgY29tdW5hcyB9IGZyb20gJy4vdGFibGUtY29tdW5hcyc7XHJcbmltcG9ydCB7IGFyZWFzIH0gZnJvbSAnLi90YWJsZS1hcmVhcyc7XHJcbmltcG9ydCB7IHNpbmNyb25pemFjaW9uZXMgfSBmcm9tICcuL3RhYmxlLXNpbmNyb25pemFjaW9uZXMnO1xyXG5pbXBvcnQgeyB0YXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhcyc7XHJcbmltcG9ydCB7XHJcbiAgICB0YXJlYXNfdGVtLFxyXG4gICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2VuY3UsXHJcbiAgICB0YXJlYXNfdGVtX2FzaWduYWNpb25fcmVjdSxcclxuICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9zdXBlLFxyXG4gICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2luZ3JcclxufSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW0nO1xyXG5pbXBvcnQgeyB0YXJlYXNfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IGFyZWFzX2FzaWduYWNpb25fZ2VuZXJhbCB9IGZyb20gJy4vdGFibGUtYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsJztcclxuaW1wb3J0IHsgZ3JpbGxhX2hvamFfcnV0YSB9IGZyb20gJy4vdGFibGUtZ3JpbGxhX2hvamFfcnV0YSc7XHJcbmltcG9ydCB7IHRfZW5jdV9hcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9yZWN1X2FyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyB0X3N1cGVfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IHRfaW5ncl9hcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhcyB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhcyc7XHJcbmltcG9ydCB7IHRlbV9hc2lnbmFjaW9uIH0gZnJvbSAnLi90YWJsZS10ZW1fYXNpZ25hY2lvbic7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fcmVjZXBjaW9uIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX3JlY2VwY2lvbic7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1faW5ncmVzbyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9pbmdyZXNvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9maW5fY2FtcG8gfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1fZmluX2NhbXBvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG8nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhc19hcmVhcyB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IGNvbnRyb2xfY2FtcG8gfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfY2FtcG8nO1xyXG5pbXBvcnQgeyBjb250cm9sX3Jlc3VtZW4gfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfcmVzdW1lbic7XHJcbmltcG9ydCB7IGNvbnRyb2xfZGlhc19jYXJnYSB9IGZyb20gJy4vdGFibGUtY29udHJvbF9kaWFzX2NhcmdhJztcclxuaW1wb3J0IHsgdml2aWVuZGFzIH0gZnJvbSAnLi90YWJsZS12aXZpZW5kYXMnO1xyXG5pbXBvcnQgeyB2aXNpdGFzIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzJztcclxuaW1wb3J0IHsgaG9nYXJlcyB9IGZyb20gJy4vdGFibGUtaG9nYXJlcyc7XHJcbmltcG9ydCB7IHBlcnNvbmFzIH0gZnJvbSAnLi90YWJsZS1wZXJzb25hcyc7XHJcbmltcG9ydCB7IHZpc2l0YXNfc3VwIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzX3N1cCc7XHJcbmltcG9ydCB7IGhvZ2FyZXNfc3VwIH0gZnJvbSAnLi90YWJsZS1ob2dhcmVzX3N1cCc7XHJcbmltcG9ydCB7IHBlcnNvbmFzX3N1cCB9IGZyb20gJy4vdGFibGUtcGVyc29uYXNfc3VwJztcclxuaW1wb3J0IHsgZGljY2lvbmFyaW8gfSBmcm9tICcuL3RhYmxlLWRpY2Npb25hcmlvJztcclxuaW1wb3J0IHsgZGljdHJhIH0gZnJvbSAnLi90YWJsZS1kaWN0cmEnO1xyXG5pbXBvcnQgeyBkaWN2YXIgfSBmcm9tICcuL3RhYmxlLWRpY3Zhcic7XHJcblxyXG5pbXBvcnQgeyBlc3RhZG9zIH0gZnJvbSAnLi90YWJsZS1lc3RhZG9zJztcclxuaW1wb3J0IHsgYWNjaW9uZXMgfSBmcm9tICcuL3RhYmxlLWFjY2lvbmVzJztcclxuaW1wb3J0IHsgZXN0YWRvc19hY2Npb25lcyB9IGZyb20gJy4vdGFibGUtZXN0YWRvc19hY2Npb25lcyc7XHJcbmltcG9ydCB7IHRhcmVhc19wcm94aW1hcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3Byb3hpbWFzJztcclxuaW1wb3J0IHsgaGlzdG9yaWFsX3RlbSB9IGZyb20gJy4vdGFibGUtaGlzdG9yaWFsX3RlbSc7XHJcbmltcG9ydCB7IGluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvbiB9IGZyb20gJy4vdGFibGUtaW5jb25zaXN0ZW5jaWFzX2N1bXBsZW5fY29uZGljaW9uJztcclxuaW1wb3J0IHsgdGVtX2JvcnJhZGFzIH0gZnJvbSAnLi90YWJsZS10ZW1fYm9ycmFkYXMnO1xyXG5pbXBvcnQgeyBiYXJyaW9zIH0gZnJvbSBcIi4vdGFibGUtYmFycmlvc1wiO1xyXG5pbXBvcnQgeyBmcmFjY2lvbmVzIH0gZnJvbSBcIi4vdGFibGUtZnJhY2Npb25lc1wiO1xyXG5pbXBvcnQgeyByYWRpb3MgfSBmcm9tIFwiLi90YWJsZS1yYWRpb3NcIjtcclxuaW1wb3J0IHsgbWFuemFuYXMgfSBmcm9tIFwiLi90YWJsZS1tYW56YW5hc1wiO1xyXG5pbXBvcnQgeyBhcmVhX2VuY19wcm94aW1hcyB9IGZyb20gXCIuL3RhYmxlLWFyZWFfZW5jX3Byb3hpbWFzXCI7XHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy1kbWVuY3VcIjtcclxuaW1wb3J0IHsgZGVmQ29uZmlnIH0gZnJvbSBcIi4vZGVmLWNvbmZpZ1wiXHJcbmltcG9ydCB7IFByb2NlZHVyZURlZiB9IGZyb20gXCJiYWNrZW5kLXBsdXNcIjtcclxuaW1wb3J0IHsgdGFibGUgfSBmcm9tIFwiY29uc29sZVwiO1xyXG5cclxuaW1wb3J0IHsgZGF0ZXRpbWUgfSBmcm9tIFwiYmVzdC1nbG9iYWxzXCI7XHJcbmltcG9ydCB7IFByb2NlZHVyZUNvbnRleHQgfSBmcm9tIFwiYmFja2VuZC1wbHVzXCI7XHJcblxyXG5cclxuY29uc3QgQVBQX0RNX1ZFUlNJT04gPSBcIiMyMi0xMi0xNVwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZG9CeVBvbGljeShiZTogQXBwQmFja2VuZCkge1xyXG4gICAgcmV0dXJuIGJlLmNvbmZpZy5zZXJ2ZXIucG9saWN5ID09ICd3ZWInID8gJ1JFTEVWQU1JRU5UTycgOiAnR0FCSU5FVEUnO1xyXG59XHJcblxyXG4vLyBwZXJtaXNvcyBxdWUgZ2V0Q29udGV4dCBhZ3JlZ2EgYWwgY29udGV4dG8gc2Vnw7puIGVsIHVzdWFyaW8gbG9ndWVhZG8gKG8gbGEgZmFsdGEgZGUgdXN1YXJpbylcclxuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc29zU2VndW5Vc3VhcmlvKFxyXG4gICAgY2FjaGVzOiBQaWNrPEFwcEJhY2tlbmRbJ2NhY2hlcyddLCAncGVybWlzb3NSb2wnIHwgJ3Blcm1pc29zU3VwZXJ1c2VyJyB8ICdwZXJtaXNvc1BhcmFOYWRpZSc+LFxyXG4gICAgdXNlcjogQ29udGV4dFsndXNlciddIHwgdW5kZWZpbmVkXHJcbik6IHsgc3VwZXJ1c2VyPzogdHJ1ZSwgcHVlZGU/OiBQdWVkZSB9IHtcclxuICAgIGlmICh1c2VyID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4geyBwdWVkZTogY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllIH07XHJcbiAgICB9XHJcbiAgICB2YXIgcm9sID0gdXNlci5yb2w7XHJcbiAgICB2YXIgcGVybWlzb3NEZWxSb2wgPSByb2wgIT0gbnVsbCA/IGNhY2hlcy5wZXJtaXNvc1JvbFtyb2xdIDogdW5kZWZpbmVkO1xyXG4gICAgaWYgKHBlcm1pc29zRGVsUm9sPy5zdXBlcnVzZXIpIHtcclxuICAgICAgICByZXR1cm4geyBzdXBlcnVzZXI6IHRydWUsIHB1ZWRlOiBjYWNoZXMucGVybWlzb3NTdXBlcnVzZXIgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHB1ZWRlOiBwZXJtaXNvc0RlbFJvbD8ucHVlZGUgfTtcclxufVxyXG5cclxuLy8gbG8gcXVlIHVzYW4gcmVmcmVzaENhY2hlcyB5IHJlZnJlc2NhckVzdHJ1Y3R1cmFBbE1vZGlmaWNhclRhYmxhIGRlbCBjbGllbnRlIGRlIGJhc2UgKGVsIENsaWVudCBkZSBwZy1wcm9taXNlLXN0cmljdCBsbyBjdW1wbGUpXHJcbmV4cG9ydCB0eXBlIENvbnN1bHRhRGIgPSB7XHJcbiAgICBmZXRjaEFsbCgpOiBQcm9taXNlPHBnLlJlc3VsdFJvd3M+XHJcbiAgICBmZXRjaFVuaXF1ZVJvdygpOiBQcm9taXNlPHBnLlJlc3VsdE9uZVJvdz5cclxufVxyXG5leHBvcnQgdHlwZSBDbGllbnRlRGIgPSB7XHJcbiAgICBxdWVyeShzcWw6IHN0cmluZyk6IENvbnN1bHRhRGJcclxufVxyXG5cclxuLy8gdGFibGFzIGN1eWEgbW9kaWZpY2FjacOzbiBjYW1iaWEgbGEgZXN0cnVjdHVyYSBxdWUgc2UgbWFuZGEgYSBsb3MgZGlzcG9zaXRpdm9zICh2ZXIgb3BlcmF0aXZvX2VzdHJ1Y3R1cmFfY29tcGxldGEpXHJcbmV4cG9ydCBjb25zdCBUQUJMQVNfRVNUUlVDVFVSQSA9IFsnY2FzaWxsZXJvcycsICdzZW1hbmFzJ107XHJcbi8vIHRhYmxhcyBkZSByZWEvbm8gcmVhLCBxdWUgYWRlbcOhcyBzZSBndWFyZGFuIGVuIGJlLmNhY2hlcy50YWJsZUNvbnRlbnQgKHZlciByZWZyZXNoQ2FjaGVzKVxyXG5leHBvcnQgY29uc3QgVEFCTEFTX1JFQV9OT19SRUEgPSBbJ3JlYScsICdub19yZWEnLCAncmVhX3N1cCcsICdub19yZWFfc3VwJ107XHJcblxyXG5leHBvcnQgdHlwZSBSZWZyZXNjYWRvckVzdHJ1Y3R1cmEgPSB7XHJcbiAgICBjYWNoZXM6IHsgdGltZXN0YW1wRXN0cnVjdHVyYTogbnVtYmVyIH1cclxuICAgIHJlZnJlc2hDYWNoZXMoY2xpZW50OiBDbGllbnRlRGIpOiBQcm9taXNlPHZvaWQ+XHJcbn1cclxuXHJcbi8vIGVudnVlbHZlIHRhYmxlX3JlY29yZF9zYXZlL3RhYmxlX3JlY29yZF9kZWxldGUgcGFyYSBxdWUgYWwgbW9kaWZpY2FyIGVzYXMgdGFibGFzIGxvcyBkaXNwb3NpdGl2b3NcclxuLy8gcmVjaWJhbiBsYSBlc3RydWN0dXJhIG51ZXZhICh0aW1lc3RhbXBFc3RydWN0dXJhKSB5LCBzaSBzb24gZGUgcmVhL25vIHJlYSwgc2UgcmVjYXJndWVuIGxhcyBjYWNoZXNcclxuLy8gY29uIGVsIG1pc21vIGNsaWVudGUgKGRlbnRybyBkZSBsYSBtaXNtYSB0cmFuc2FjY2nDs24pXHJcbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNjYXJFc3RydWN0dXJhQWxNb2RpZmljYXJUYWJsYTxDIGV4dGVuZHMgeyBjbGllbnQ6IENsaWVudGVEYiB9LCBQIGV4dGVuZHMgeyB0YWJsZTogc3RyaW5nIH0sIFIsIFJlc3RvIGV4dGVuZHMgKG9iamVjdCB8IHVuZGVmaW5lZClbXT4oXHJcbiAgICBiZTogUmVmcmVzY2Fkb3JFc3RydWN0dXJhLFxyXG4gICAgY29yZUZ1bmN0aW9uOiAoY29udGV4dDogQywgcGFyYW1ldGVyczogUCwgLi4ucmVzdG86IFJlc3RvKSA9PiBQcm9taXNlPFI+XHJcbik6IChjb250ZXh0OiBDLCBwYXJhbWV0ZXJzOiBQLCAuLi5yZXN0bzogUmVzdG8pID0+IFByb21pc2U8Uj4ge1xyXG4gICAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChjb250ZXh0OiBDLCBwYXJhbWV0ZXJzOiBQLCAuLi5yZXN0bzogUmVzdG8pIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgY29yZUZ1bmN0aW9uKGNvbnRleHQsIHBhcmFtZXRlcnMsIC4uLnJlc3RvKTtcclxuICAgICAgICBpZiAoVEFCTEFTX0VTVFJVQ1RVUkEuaW5jbHVkZXMocGFyYW1ldGVycy50YWJsZSkpIHtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3NlIHRvY8OzIGxhIGVzdHJ1Y3R1cmEnLCBiZS5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFRBQkxBU19SRUFfTk9fUkVBLmluY2x1ZGVzKHBhcmFtZXRlcnMudGFibGUpKSB7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IGJlLnJlZnJlc2hDYWNoZXMoY29udGV4dC5jbGllbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCByZWdpc3RyYXJDcm9uSm9iUGFzYXJBUHJvaWUgPSBhc3luYyAoYmU6IEFwcEJhY2tlbmQpID0+IHtcclxuICAgIGNvbnN0IGVqZWN1dGFyUGFzYWplID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxvZyA9IChtc2c6IHN0cmluZywgZGF0YTogYW55ID0gJycpID0+XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2RhdGV0aW1lLm5vdygpLnRvWW1kSG1zKCl9IFtDUk9OOlBST0lFXSAke21zZ31gLCBkYXRhKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsb2coJ/CfmoAgaW5pY2lhIGNyb24gcGFzYWplIGEgcHJvaWUnKTtcclxuXHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIGFzeW5jIChjbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBwYXNhckVuY3Vlc3Rhc0FQcm9pZShjbGllbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxvZygn4pyFIHJlc3VsdCBwcm9jIHBhc2FqZSBhIHByb2llOicsIHJlc3VsdCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHZhciBlcnJvciA9IHVuZXhwZWN0ZWQoZXJyKTtcclxuICAgICAgICAgICAgbG9nKGDinYwgZXJyb3IgcGFzYWplIGEgcHJvaWU6ICR7ZXJyb3IubWVzc2FnZX1gKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBsb2coJ/Cfj4EgdGVybWluYSBjcm9uIHByb2llJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGF3YWl0IGVqZWN1dGFyUGFzYWplKCk7XHJcbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKGVqZWN1dGFyUGFzYWplLCAxMDAwICogNjAgKiA2MClcclxuICAgIGJlLnNodXRkb3duQ2FsbGJhY2tMaXN0QWRkKHtcclxuICAgICAgICBtZXNzYWdlOiAnYXBhZ2EgY3JvbiBwYXNhciBhIHByb2llJyxcclxuICAgICAgICBmdW46IGFzeW5jIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZ2V0TWFuaWZlc3RJbWFnZUljb25zID0gKEFQUF9OQU1FOiBzdHJpbmcsIHN1Zmlqbzogc3RyaW5nKSA9PiBbXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTMyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjMyeDMyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTQ4JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjQ4eDQ4XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTY0JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjY0eDY0XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTcyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjcyeDcyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTE5MiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCIxOTJ4MTkyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTUxMiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCI1MTJ4NTEyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH1cclxuXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbWVyZ2VBcHBEbUVuY3U8VCBleHRlbmRzIHByb2Nlc2FtaWVudG8uQ29uc3RydWN0b3I8cHJvY2VzYW1pZW50by5BcHBQcm9jZXNhbWllbnRvVHlwZT4+KEJhc2U6IFQpIHtcclxuICAgIHJldHVybiBjbGFzcyBBcHBEbUVuY3UgZXh0ZW5kcyBCYXNlIHtcclxuICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgICBzdXBlcihhcmdzKTtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhID0gW11cclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMgPSBbXVxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy5tZXRhRW5jSW5jbHVpckNhc2lsbGVyb3NTYWx0b1JFTCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhciA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRTdWZpam9Gcm9tYmFzZVVybCA9IChiYXNlVXJsOiBzdHJpbmcpID0+XHJcbiAgICAgICAgICAgIGJhc2VVcmwuaW5jbHVkZXMoJ3Rlc3QnKSB8fCBiYXNlVXJsLmluY2x1ZGVzKCcvcHInKSA/ICdfdGVzdCcgOlxyXG4gICAgICAgICAgICAgICAgYmFzZVVybC5pbmNsdWRlcygnY2FwYScpID8gJ19jYXBhJyA6ICcnO1xyXG5cclxuICAgICAgICBnZXRBcHBOYW1lID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICByZXR1cm4gKChhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIChjbGllbnQ6IHBnLkNsaWVudCkgPT5cclxuICAgICAgICAgICAgICAgIGNsaWVudC5xdWVyeShcInNlbGVjdCBvcGVyYXRpdm8gZnJvbSBwYXJhbWV0cm9zIHdoZXJlIHVuaWNvX3JlZ2lzdHJvXCIpLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICApKS52YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gYmFja2VuZC1wbHVzIGxvIGRlY2xhcmEgc2luIHBhcsOhbWV0cm9zIHBlcm8gbG8gbGxhbWEgY29uIChjb250ZXh0LCB1c3VhcmlvKSwgcG9yIGVzbyBzb24gb3BjaW9uYWxlc1xyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIGNhbkNoYW5nZVBhc3MocmVxT3JDb250ZXh0PzogUmVxdWVzdCB8IENvbnRleHQsIHVzZXJUb0NoYW5nZVBhc3M/OiBzdHJpbmcgfCBudWxsKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHZhciB1c3VhcmlvTG9ndWVhZG8gPSByZXFPckNvbnRleHQ/LnVzZXI7XHJcbiAgICAgICAgICAgIGlmIChyZXFPckNvbnRleHQgPT0gbnVsbCB8fCB1c3VhcmlvTG9ndWVhZG8gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciByb2wgPSB1c3VhcmlvTG9ndWVhZG8ucm9sO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgYmUuaW5EYkNsaWVudChudWxsLCBhc3luYyAoY2xpZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcSA9IGJlLmRiLnF1b3RlTGl0ZXJhbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCAqIFxyXG4gICAgICAgICAgICAgICAgICBmcm9tIHVzdWFyaW9zIFxyXG4gICAgICAgICAgICAgICAgICB3aGVyZSByb2wgaW4gKHNlbGVjdCByb2xfc3Vib3JkaW5hZG8gZnJvbSByb2xlc19zdWJvcmRpbmFkb3Mgd2hlcmUgcm9sID0gJHtxKHJvbCl9KWApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHZhciBwdWVkZSA9ICEhcmVzdWx0LmZpbmQoKHVzZXIpID0+IHVzZXIudXN1YXJpbyA9PSB1c2VyVG9DaGFuZ2VQYXNzKTtcclxuICAgICAgICAgICAgdmFyIGlzQWRtaW4gPSBiZS5pc0FkbWluKHJlcU9yQ29udGV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybiBpc0FkbWluIHx8IHB1ZWRlXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBnZXRQcm9jZWR1cmVzKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgcHJvY2VkaW1pZW50b0FSZWVtcGxhemFyID0gW1wiY2Fzb19ndWFyZGFyXCIsIFwiY2Fzb190cmFlclwiXTtcclxuICAgICAgICAgICAgdmFyIHBhcmVudFByb2MgPSBhd2FpdCBzdXBlci5nZXRQcm9jZWR1cmVzKCk7XHJcbiAgICAgICAgICAgIHBhcmVudFByb2MgPSBwYXJlbnRQcm9jLmZpbHRlcigocHJvY2VkdXJlOiBhbnkpID0+ICFwcm9jZWRpbWllbnRvQVJlZW1wbGF6YXIuaW5jbHVkZXMocHJvY2VkdXJlLmFjdGlvbikpO1xyXG4gICAgICAgICAgICBwYXJlbnRQcm9jID0gcGFyZW50UHJvYy5tYXAocHJvY0RlZiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvY0RlZi5hY3Rpb24gPT0gJ3RhYmxlX3JlY29yZF9zYXZlJyB8fCBwcm9jRGVmLmFjdGlvbiA9PSAndGFibGVfcmVjb3JkX2RlbGV0ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jRGVmLmNvcmVGdW5jdGlvbiA9IHJlZnJlc2NhckVzdHJ1Y3R1cmFBbE1vZGlmaWNhclRhYmxhKGJlLCBwcm9jRGVmLmNvcmVGdW5jdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvY0RlZjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFByb2MuY29uY2F0KFByb2NlZHVyZXNEbUVuY3UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBjaGVja0RhdGFiYXNlU3RydWN0dXJlKF9jbGllbnQ6IENsaWVudCkge1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwOiBwcm9jZXNhbWllbnRvLkV4cHJlc3MsIGJhc2VVcmw6IHN0cmluZykge1xyXG4gICAgICAgICAgICBsZXQgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzdXBlci5hZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwLCBiYXNlVXJsKTtcclxuICAgICAgICAgICAgLy9wZXJtaXRvIGxldmFudGFyIG1pcyBpbWFnZW5lcyBlbiBhcGxpY2FjaW9uZXMgZGVwZW5kaWVudGVzXHJcbiAgICAgICAgICAgIGJlLmFwcC51c2UoJy9pbWcnLCBleHByZXNzLnN0YXRpYygnbm9kZV9tb2R1bGVzL2RtZW5jdS9kaXN0L3VubG9nZ2VkL3VubG9nZ2VkL2ltZycpKVxyXG4gICAgICAgICAgICBtYWluQXBwLnVzZShmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCBfcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxLnNlc3Npb24gJiYgIXJlcS5zZXNzaW9uLmluc3RhbGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXEuc2Vzc2lvbi5pbnN0YWxsID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9zYWx2YXInLCBmdW5jdGlvbiAocmVxLCByZXMsIF9uZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHPDqSBxdWUgdm95IGEgcmVjaWJpciB1c2VyYWdlbnQgcG9yIGxvcyBtaWRkbGV3YXJlcyBkZSBCYWNrZW5kLXBsdXNcclxuICAgICAgICAgICAgICAgIHZhciB7IHVzZXJhZ2VudCB9ID0gcmVxO1xyXG4gICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluID0gYmUubWFpblBhZ2UoeyB1c2VyYWdlbnQgfSwgZmFsc2UsIHsgc2tpcE1lbnU6IHRydWUsIG9mZmxpbmVGaWxlOiB0cnVlIH0pLnRvSHRtbERvYygpO1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwgJ2h0bWwnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9jYW1wbycsIGZ1bmN0aW9uIChyZXEsIHJlcywgX25leHQpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICAgICAgdmFyIHsgdXNlcmFnZW50LCB1c2VyIH0gPSByZXE7XHJcbiAgICAgICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7e3R5cGU6J2pzJywgc3JjOnN0cmluZ31bXX0gKi9cclxuICAgICAgICAgICAgICAgICAgICB2YXIgd2ViTWFuaWZlc3RQYXRoID0gJ2NhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdCc7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluID0gYmUubWFpblBhZ2UoeyB1c2VyYWdlbnQsIHVzZXIgfSwgZmFsc2UsIHsgc2tpcE1lbnU6IHRydWUsIHdlYk1hbmlmZXN0UGF0aCwgb2ZmbGluZUZpbGU6IHRydWUgfSkudG9IdG1sRG9jKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwgJ2h0bWwnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5yZWRpcmVjdCg0MDEsIGJhc2VVcmwgKyAnL2xvZ2luI3c9cGF0aCZwYXRoPS9jYW1wbycpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9mYWxsYmFjay1zaW5jcm8nLCBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpzb25GYWxsYmFjayA9IHtcclxuICAgICAgICAgICAgICAgICAgICBvazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ05vIHNlIGxvZ3LDsyBlc3RhYmxlY2VyIGxhIGNvbmV4aW9uIGNvbiBlbCBzZXJ2aWRvciwgY29tcHJ1ZWJlIHN1IGNvbmV4aW9uIGRlIGludGVybmV0IChyZXNwdWVzdGEgZGVzZGUgZmFsbGJhY2spJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVKc29uKGpzb25GYWxsYmFjaykocmVxLCByZXMsIG5leHQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdmFyIGNyZWF0ZVNlcnZpY2VXb3JrZXIgPSBhc3luYyBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3cgPSBhd2FpdCBmcy5yZWFkRmlsZSgnbm9kZV9tb2R1bGVzL3NlcnZpY2Utd29ya2VyLWFkbWluL2Rpc3Qvc2VydmljZS13b3JrZXItd28tbWFuaWZlc3QuanMnLCAndXRmOCcpO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1hbmlmZXN0ID0gYXdhaXQgYmUuY3JlYXRlUmVzb3VyY2VzRm9yQ2FjaGVKc29uKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3dNYW5pZmVzdCA9IHN3XHJcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoXCInLyp2ZXJzaW9uKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LnZlcnNpb24pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qYXBwTmFtZSovJ1wiLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5hcHBOYW1lKSlcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKnVybHNUb0NhY2hlXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmNhY2hlKSlcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKmZhbGxiYWNrc1xcKlxcL1xccypcXF0vLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5mYWxsYmFja3MgfHwgW10pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qZGVmYXVsdEZhbGxiYWNrKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmRlZmF1bHRGYWxsYmFjaykpO1xyXG4gICAgICAgICAgICAgICAgLy8ucmVwbGFjZShcIi8jQ0FDSEUkL1wiLCBcIi8oYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19lc3RydWN0dXJhLmpzKXwoYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19oZHIuanNvbikvXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN3TWFuaWZlc3RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgYC9zdy1tYW5pZmVzdC5qc2AsIGFzeW5jIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGF3YWl0IGNyZWF0ZVNlcnZpY2VXb3JrZXIoKSwgJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLCByZXMsIG5leHQpKHVuZXhwZWN0ZWQoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgYC9jYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3RgLCBhc3luYyBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IEFQUF9OQU1FID0gYXdhaXQgYmUuZ2V0QXBwTmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VmaWpvID0gYmUuZ2V0U3VmaWpvRnJvbWJhc2VVcmwoYmFzZVVybCk7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBgJHtBUFBfTkFNRX0ke3N1Zmlqb30gUHJvZ3Jlc3NpdmUgV2ViIEFwcGAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2hvcnRfbmFtZVwiOiBgJHtBUFBfTkFNRX0ke3N1Zmlqb30gUFdBYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBgUHJvZ3Jlc3NpdmUgV2ViIEFwcCBmb3IgJHtBUFBfTkFNRX0ke3N1Zmlqb30uYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpY29uc1wiOiBnZXRNYW5pZmVzdEltYWdlSWNvbnMoQVBQX05BTUUsIHN1ZmlqbyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJlLmdldENvbG9yc0pzb24oc3VmaWpvIGFzIFN1Zmlqb3NBbWJpZW50ZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChKU09OLnN0cmluZ2lmeShjb250ZW50KSwgJ2FwcGxpY2F0aW9uL2pzb24nKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLCByZXMsIG5leHQpKHVuZXhwZWN0ZWQoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDb2xvcnNKc29uKF9zdWZpam86IFN1Zmlqb3NBbWJpZW50ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgXCJzdGFydF91cmxcIjogXCIuLi9jYW1wb1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwic3RhbmRhbG9uZVwiLFxyXG4gICAgICAgICAgICAgICAgXCJ0aGVtZV9jb2xvclwiOiBcIiMzRjUxQjVcIixcclxuICAgICAgICAgICAgICAgIFwiYmFja2dyb3VuZF9jb2xvclwiOiBcIiM2ZDYwZWRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFkZExvZ2dlZFNlcnZpY2VzKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzdXBlci5hZGRMb2dnZWRTZXJ2aWNlcygpO1xyXG4gICAgICAgICAgICBiZS5hcHAuZ2V0KCcvbWFuaWZlc3QubWFuaWZlc3QnLCBhc3luYyBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBfbmV4dDogTmV4dEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKCdzcmMvY2xpZW50L21hbmlmZXN0Lm1hbmlmZXN0Jywge30pKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLmdldCgnL2ZpbGUnLCBhc3luYyBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihyZXEsXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWVudDogcGcuQ2xpZW50KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQucXVlcnkoXCJzZWxlY3QgcnV0YSBmcm9tIGFkanVudG9zIHdoZXJlIGlkX2FkanVudG8gPSAkMVwiLCBbcmVxLnF1ZXJ5LmlkX2FkanVudG9dKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHZhciBmaWxlUGF0aCA9IHJlc3VsdC52YWx1ZTtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoZmlsZVBhdGgsIHt9KShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFwcC5nZXQoJy9pbWFnZW5lcycsIGFzeW5jIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoJ2xvY2FsLWltYWdlcy8nICsgcmVxLnF1ZXJ5LnBkZiwge30pKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLmdldCgnL2Rvd25sb2FkL2FsbCcsIGFzeW5jIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6ICgpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEudXNlciA9PSBudWxsIHx8IHJlcS51c2VyLnJvbCAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vIGVzdMOhIGF1dG9yaXphZG8gYSBiYWphcnNlIHRvZG8nLCByZXEudXNlcilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IHppcCA9IG5ldyB5YXpsLlppcEZpbGUoKTtcclxuICAgICAgICAgICAgICAgIHppcC5vdXRwdXRTdHJlYW0ucGlwZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2UgPSAnbG9jYWwtYXR0YWNobWVudHMnXHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKGFzeW5jIGZ1bmN0aW9uIChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVQYXRoID0gYmFzZSArICcvJyArIGZpbGVOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ID0gYXdhaXQgZnMuc3RhdChmaWxlUGF0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXQuaXNGaWxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgemlwLmFkZEZpbGUoZmlsZVBhdGgsIGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB6aXAuZW5kKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIHBvc3RDb25maWcoKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHN1cGVyLnBvc3RDb25maWcoKTtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgYmUuY2FjaGVzLm1ldGFFbmNJbmNsdWlyQ2FzaWxsZXJvc1NhbHRvUkVMID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgYXN5bmMgZnVuY3Rpb24gKGNsaWVudDogcGcuQ2xpZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcVBlcm1pc29zID0gYFxyXG4gICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhyLnJvbCxqc29uYl9idWlsZF9vYmplY3QoJ3N1cGVydXNlcicsci5zdXBlcnVzZXIsJ3B1ZWRlJywoXHJcbiAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHJwLnBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhycGEuYWNjaW9uLHJwYS5oYWJpbGl0YWRvKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnBhLnJvbD1ycC5yb2wgQU5EIHJwYS5wZXJtaXNvPXJwLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBcclxuICAgICAgICAgICAgICAgICAgICBXSEVSRSBycC5yb2w9ci5yb2wgI2NvbmRIYWJpbGl0YWRvI1xyXG4gICAgICAgICAgICAgICkpKVxyXG4gICAgICAgICAgICAgIEZST00gcm9sZXMgclxyXG4gICAgICAgICAgICBgO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJywgJycpKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJywgYCBhbmQgcnAuJHtwZy5xdW90ZUlkZW50KCdoYWJpbGl0YWRvJyl9YCkpLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcGEucGVybWlzbz1wLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBcclxuICAgICAgICAgICAgICAgIGApLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHBhLnBlcm1pc289cC5wZXJtaXNvXHJcbiAgICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwXHJcbiAgICAgICAgICAgICAgICBgKS5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NSb2wgPSByZXN1bHRzWzBdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUm9sU29sb1RydWUgPSByZXN1bHRzWzFdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyID0gcmVzdWx0c1syXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSA9IHJlc3VsdHNbM10udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1JvbFNvbG9UcnVlLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlcix7ZGVwdGg6OX0pO1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5jYWNoZXMucGVybWlzb3NQYXJhTmFkaWUse2RlcHRoOjl9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaENhY2hlcygpO1xyXG4gICAgICAgICAgICBhd2FpdCByZWdpc3RyYXJDcm9uSm9iUGFzYXJBUHJvaWUoYmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBjb25maWdTdGF0aWNDb25maWcoKSB7XHJcbiAgICAgICAgICAgIHN1cGVyLmNvbmZpZ1N0YXRpY0NvbmZpZygpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRpY0NvbmZpZyhkZWZDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBjbGllbnRJbmNsdWRlcyhyZXE6IFJlcXVlc3QsIG9wdHM6IE9wdHNDbGllbnRQYWdlKTogQ2xpZW50TW9kdWxlRGVmaW5pdGlvbltdIHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIHVubG9nZ2VkID0gb3B0cyAmJiBvcHRzLm9mZmxpbmVGaWxlO1xyXG4gICAgICAgICAgICB2YXIgbWVudWVkUmVzb3VyY2VzOiBDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSB1bmxvZ2dlZCA/IFtcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3VubG9nZ2VkLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgXSA6IFtcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL2NsaWVudC9jbGllbnQnLCBmaWxlOiAnY2xpZW50LmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5leHRyYUZpbGVzKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51ZWRSZXNvdXJjZXMgPSBtZW51ZWRSZXNvdXJjZXMuY29uY2F0KG9wdHMuZXh0cmFGaWxlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGV4dGVybmFsUmVzb3VyY2VzOiBDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSBbXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0JywgbW9kUGF0aDogJ3VtZCcsIGZpbGU6ICdyZWFjdC5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QtZG9tJywgbW9kUGF0aDogJ3VtZCcsIGZpbGU6ICdyZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICAvL3sgdHlwZTogJ2pzJywgbW9kdWxlOiAnQG1hdGVyaWFsLXVpL2NvcmUnLCBtb2RQYXRoOiAndW1kJywgZmlsZURldmVsb3BtZW50OidtYXRlcmlhbC11aS5kZXZlbG9wbWVudC5qcycsIGZpbGU6J21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdAbXVpL21hdGVyaWFsJywgbW9kUGF0aDogJy4uL3VtZCcsIGZpbGU6ICdtYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4JywgbW9kUGF0aDogJy4uL2Rpc3QnLCBmaWxlOiAncmVkdXgubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdC1yZWR1eCcsIG1vZFBhdGg6ICcuLi9kaXN0JywgZmlsZTogJ3JlYWN0LXJlZHV4Lm1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIC8veyB0eXBlOiAnanMnLCBtb2R1bGU6ICdxcmNvZGUnLCBtb2RQYXRoOiAnLi4vYnVpbGQnLCBmaWxlOiAncXJjb2RlLmpzJ30sXHJcbiAgICAgICAgICAgICAgICAuLi5zdXBlci5jbGllbnRJbmNsdWRlcyhyZXEsIG9wdHMpLmZpbHRlcihtID0+IG0uZmlsZSAhPSAnZm9ybXVsYXJpb3MuY3NzJylcclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG0gPT4gIXVubG9nZ2VkIHx8IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgbS5maWxlICE9ICd2YXItY2FsLmpzJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBtLmZpbGUgIT0gJ3Zhci1jYWwuanMnXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnc2VydmljZS13b3JrZXItYWRtaW4nLCBmaWxlOiAnc2VydmljZS13b3JrZXItYWRtaW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4LXR5cGVkLXJlZHVjZXInLCBtb2RQYXRoOiAnLi4vZGlzdCcsIGZpbGU6ICdyZWR1eC10eXBlZC1yZWR1Y2VyLmpzJyB9XHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHZhciByZXNvdXJjZXM6IENsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IFtcclxuICAgICAgICAgICAgICAgIC4uLmV4dGVybmFsUmVzb3VyY2VzLFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYWRhcHQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAndGlwb3MuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnaGVscGVycy1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2NhbGN1bG9zLWVuY3Vlc3RhLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlbmRlci1jb25maWcuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWluaXQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVkdXgtZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdoZWxwZXJzLWNhc2lsbGVyb3MuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYnlwYXNzLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWdlbmVyYWwuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYWJyaXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ2Zvcm11bGFyaW8tcmVhY3QuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnYm9vdHN0cmFwLm1pbi5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAndHRmJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdSb2JvdG8tUmVndWxhci50dGYnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICAgICAgLi4ubWVudWVkUmVzb3VyY2VzLFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL2NsaWVudC9jbGllbnQvY3NzJywgZmlsZTogJ21lbnUuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VzXHJcbiAgICAgICAgICAgIC8vIC5tYXAobT0+KHsuLi5tLCBmaWxlOm0uZmlsZURldmVsb3BtZW50fHxtLmZpbGV9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGFzeW5jIHJlZnJlc2hDYWNoZXMoY2xpZW50OiBDbGllbnRlRGIgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgPSB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgfHwge307XHJcblxyXG4gICAgICAgICAgICAvLyBGdW5jacOzbiBhdXhpbGlhciBwYXJhIGVqZWN1dGFyIGxhcyBxdWVyaWVzIGNvbiBlbCBjbGllbnRlIHByb3Zpc3RvIG8gdW5vIG51ZXZvXHJcbiAgICAgICAgICAgIGNvbnN0IGV4ZWN1dGVRdWVyaWVzID0gYXN5bmMgKGRiQ2xpZW50OkNsaWVudGVEYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYSA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSBub19yZWEgb3JkZXIgYnkgb3BlcmF0aXZvLCBvcmRlbiwgbm9fcmVhYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5yZWEgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gcmVhIG9yZGVyIGJ5IG9wZXJhdGl2bywgb3JkZW4sIHJlYWApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWEgciBncm91cCBieSBncnVwbyBvcmRlciBieSAxXHJcbiAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3VwczAgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8wIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhIHIgZ3JvdXAgYnkgZ3J1cG8wIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIG5vX3JlYV9zdXAgb3JkZXIgYnkgb3BlcmF0aXZvLCBvcmRlbiwgbm9fcmVhX3N1cGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQucmVhX3N1cCA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSByZWFfc3VwIG9yZGVyIGJ5IG9wZXJhdGl2bywgb3JkZW4sIHJlYV9zdXBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwX2dyb3VwcyA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwb19zdXAsIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWFfc3VwIHIgZ3JvdXAgYnkgZ3J1cG9fc3VwIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwX2dyb3VwczAgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8wX3N1cCBhcyBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYV9zdXAgciBncm91cCBieSBncnVwbzBfc3VwIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhciA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBjb25fcmVhX2hvZ2FyLCBvcGVyYXRpdm8sIGNvbmZpZ19zb3J0ZW8gZnJvbSBvcGVyYXRpdm9zIGpvaW4gcGFyYW1ldHJvcyB1c2luZyAob3BlcmF0aXZvKSB3aGVyZSB1bmljb19yZWdpc3Ryb1xyXG4gICAgICAgIGApLmZldGNoVW5pcXVlUm93KCkpLnJvdztcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjbGllbnQpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWN1dGVRdWVyaWVzKGNsaWVudCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmluRGJDbGllbnQobnVsbCwgYXN5bmMgKGRiQ2xpZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY3V0ZVF1ZXJpZXMoZGJDbGllbnQpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcycsIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudClcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcyBvaycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL3NxbE5vcmVhQ2FzZShjYW1wb05lY2VzYXJpbzpzdHJpbmcpe1xyXG4gICAgICAgIC8vICAgIHZhciBiZT10aGlzO1xyXG4gICAgICAgIC8vICAgIHJldHVybiBgQ0FTRSAke2JlLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhLm1hcCh4PT5cclxuICAgICAgICAvLyAgICAgICAgYCBXSEVOIG5vcmVhICA9ICR7YmUuZGIucXVvdGVMaXRlcmFsKHgubm9fcmVhKX06OmludGVnZXIgVEhFTiAke2JlLmRiLnF1b3RlTGl0ZXJhbCh4W2NhbXBvTmVjZXNhcmlvXSl9YFxyXG4gICAgICAgIC8vICAgICkuam9pbignJyl9IFdIRU4gVFJVRSBUSEVOIE5VTEwgRU5EYFxyXG4gICAgICAgIC8vfSAgICBcclxuICAgICAgICBvdmVycmlkZSBnZXRDb250ZXh0KHJlcTogUmVxdWVzdCk6IENvbnRleHQge1xyXG4gICAgICAgICAgICB2YXIgZmF0aGVyQ29udGV4dCA9IHN1cGVyLmdldENvbnRleHQocmVxKTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4ucGVybWlzb3NTZWd1blVzdWFyaW8odGhpcy5jYWNoZXMsIGZhdGhlckNvbnRleHQudXNlciksIC4uLmZhdGhlckNvbnRleHQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgZ2V0Q29udGV4dEZvckR1bXAoKTogQ29udGV4dCB7XHJcbiAgICAgICAgICAgIHZhciBmYXRoZXJDb250ZXh0ID0gc3VwZXIuZ2V0Q29udGV4dEZvckR1bXAoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgc3VwZXJ1c2VyOiB0cnVlLCBwdWVkZTogdGhpcy5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXIsIC4uLmZhdGhlckNvbnRleHQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgYXN5bmMgZ2V0Q2xpZW50U2V0dXBGb3JTZW5kVG9Gcm9udEVuZChyZXE6IFJlcXVlc3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLihhd2FpdCBzdXBlci5nZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcSkpLFxyXG4gICAgICAgICAgICAgICAgaWRwZXI6IHJlcS51c2VyPy5pZHBlclxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFzeW5jIGNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbigpIHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgY29uc3QgQVBQX05BTUUgPSBhd2FpdCBiZS5nZXRBcHBOYW1lKClcclxuICAgICAgICAgICAgY29uc3Qgc3VmaWpvID0gYmUuZ2V0U3VmaWpvRnJvbWJhc2VVcmwoYmUuY29uZmlnLnNlcnZlclsnYmFzZS11cmwnXSk7XHJcblxyXG4gICAgICAgICAgICB2YXIganNvblJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgIHZlcnNpb246IEFQUF9ETV9WRVJTSU9OLFxyXG4gICAgICAgICAgICAgICAgYXBwTmFtZTogJ2RtZW5jdScsXHJcbiAgICAgICAgICAgICAgICBjYWNoZTogW1xyXG4gICAgICAgICAgICAgICAgICAgIFwiY2FtcG9cIixcclxuICAgICAgICAgICAgICAgICAgICBcIm9mZmxpbmVcIixcclxuICAgICAgICAgICAgICAgICAgICBcImZhbGxiYWNrLXNpbmNyb1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWFjdC1yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICAvL1wibGliL3FyY29kZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlcXVpcmUtYnJvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvY2FzdC1lcnJvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2xpa2UtYXIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9iZXN0LWdsb2JhbHMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9qc29uNGFsbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2pzLXRvLWh0bWwuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC10eXBlZC1yZWR1Y2VyLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvYWRhcHQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS91bmxvZ2dlZC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2pzLXlhbWwudW1kLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3hsc3gtbm93LnVtZC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3hsc3gtbm93LWJyb3dzZXIudW1kLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbGF6eS1zb21lLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvc3FsLXRvb2xzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibW9tZW50L21pbi9tb21lbnQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcInBpa2FkYXkvcGlrYWRheS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3BvbHlmaWxscy1icm8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9iaWcuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi90eXBlLXN0b3JlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvdHlwZWQtY29udHJvbHMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9hamF4LWJlc3QtcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibXktYWpheC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibXktc3RhcnQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktd2Vic3FsZGIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXdlYnNxbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXRoaW5ncy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXRhYmxlcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LWluZm9ybS1uZXQtc3RhdHVzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktbWVudS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXNraW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9jbGllbnRlLWVuLWNhc3RlbGxhbm8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9zZXJ2aWNlLXdvcmtlci1hZG1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlZHV4LXR5cGVkLXJlZHVjZXIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL29wZXJhdGl2b3MuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3ZhcmNhbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZm9ybS1zdHJ1Y3R1cmUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL21ldGEtZW5jLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9kYXRvcy1leHQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2NvbnNpc3RlbmNpYXMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3Byb2Nlc2FtaWVudG8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS90aXBvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlbmRlci1jb25maWcuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItaW5pdC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2hlbHBlcnMtY2FzaWxsZXJvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2hlbHBlcnMtZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2NhbGN1bG9zLWVuY3Vlc3RhLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvYnlwYXNzLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZWR1eC1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWdlbmVyYWwuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2FicmlyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3Jvdy12YWxpZGF0b3IuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudC9tZW51LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvbG9nby5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAvL1wiaW1nL2xvZ28tZG0ucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvbG9nby0xMjgucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvbWFpbi1sb2FkaW5nLmdpZlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2JvcnJhci12YWxvci5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby1lcnJvci5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9iYWNrZ3JvdW5kLXRlc3QucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgLy9cImNsaWVudC1zZXR1cFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL2Jvb3RzdHJhcC5taW4uY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvZm9ybXVsYXJpby1yZWFjdC5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcInBpa2FkYXkvcGlrYWRheS5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRpYWxvZy1wcm9taXNlL2RpYWxvZy1wcm9taXNlLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicmVsLWVuYy9lc3RhZG9zLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL215LXRhYmxlcy5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9teS1tZW51LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL215LXRoaW5ncy5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9tZW51LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicmVsLWVuYy9teS10aGluZ3MyLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL2Zvcm11bGFyaW8tcmVhY3QuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvUm9ib3RvLVJlZ3VsYXIudHRmXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3RcIixcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBmYWxsYmFja3M6W1xyXG4gICAgICAgICAgICAgICAgICAgIHtwYXRoOiAnZG1fc2luY3Jvbml6YXInLCBmYWxsYmFjazonZmFsbGJhY2stc2luY3JvJ31cclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0RmFsbGJhY2s6IFwib2ZmbGluZVwiXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGpzb25SZXN1bHQuY2FjaGUgPSBqc29uUmVzdWx0LmNhY2hlLmNvbmNhdChnZXRNYW5pZmVzdEltYWdlSWNvbnMoQVBQX05BTUUsIHN1ZmlqbykubWFwKChlbGVtKSA9PiBgbWVudS8ke2VsZW0uc3JjfWApKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBza2luID0gYmUuY29uZmlnWydjbGllbnQtc2V0dXAnXS5za2luO1xyXG4gICAgICAgICAgICBpZiAoc2tpbiAmJiBiZS5hY3RpdmVTa2luRmlsZXMpIHtcclxuICAgICAgICAgICAgICAgIHZhciBza2luVXJsID0gc2tpbiArICcvJztcclxuICAgICAgICAgICAgICAgIGpzb25SZXN1bHQuY2FjaGUucHVzaChgJHtza2lufS9pbWcvYmFja2dyb3VuZC10ZXN0LnBuZ2ApO1xyXG4gICAgICAgICAgICAgICAgLy8gQ29udmVydGltb3MgZWwgU2V0IGEgQXJyYXkgeSBtYXBlYW1vcyBsYXMgcnV0YXNcclxuICAgICAgICAgICAgICAgIHZhciBza2luUmVzb3VyY2VzID0gQXJyYXkuZnJvbShiZS5hY3RpdmVTa2luRmlsZXMpLm1hcChmdW5jdGlvbiAocGF0aFJlbGF0aXZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2kgZXMgdW4gLnN0eWwsIGxvIHBlZGltb3MgY29tbyAuY3NzIHBvcnF1ZSBlbCBTZXJ2aWNlIFdvcmtlciBcclxuICAgICAgICAgICAgICAgICAgICAvLyBkZWJlIGNhY2hlYXIgZWwgcmVjdXJzbyBmaW5hbCBxdWUgZWwgbmF2ZWdhZG9yIHNvbGljaXRhLlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBza2luVXJsICsgcGF0aFJlbGF0aXZvLnJlcGxhY2UoL1xcLnN0eWwkLywgJy5jc3MnKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGpzb25SZXN1bHQuY2FjaGUgPSBqc29uUmVzdWx0LmNhY2hlLmNvbmNhdChza2luUmVzb3VyY2VzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ganNvblJlc3VsdFxyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRNZW51Q29udHJvbGVzKF9jb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlW10ge1xyXG4gICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFzX3Byb2Nlc2FtaWVudG9fcGFzYXInLCBsYWJlbDogJ3Bhc2FyIGVuY3Vlc3RhcyBhIHByb2Nlc2FtaWVudG8nIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVzdW1lbicsIHRhYmxlOiAnY29udHJvbF9yZXN1bWVuJywgc2VsZWN0ZWRCeURlZmF1bHQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdkb21pbmlvJywgdGFibGU6ICdjb250cm9sX2NhbXBvX2RvbWluaW8nIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnem9uYScsIHRhYmxlOiAnY29udHJvbF9jYW1wb196b25hJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbXVuYScsIHRhYmxlOiAnY29udHJvbF9jYW1wb19jb211bmEnIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnw6FyZWEnLCB0YWJsZTogJ2NvbnRyb2xfY2FtcG9fYXJlYScgfSxcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZ2V0TWVudVZhcmlvcyhjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlIHtcclxuICAgICAgICAgICAgbGV0IHN1Ym1lbnVWYXJpb3M6IE1lbnVJbmZvQmFzZVtdID0gW3sgbWVudVR5cGU6ICdhYnJpcl9lbmN1ZXN0YScsIG5hbWU6ICdhYnJpcl9lbmN1ZXN0YScgfV1cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5lZGl0YXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnaG9qYV9ydXRhJywgdGFibGU6ICdncmlsbGFfaG9qYV9ydXRhJywgbGFiZWw6ICdob2phIGRlIHJ1dGEnIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3RhZG9yX2Rtc19tb3N0cmFyJywgbGFiZWw6ICdmb3J6YXIgZGVzY2FyZ2EgZW5jdWVzdGFzIERNJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YV9ibGFucXVlYXJfcHJldmlzdWFsaXphcicsIGxhYmVsOiAnYmxhbnF1ZWFyIGVuY3Vlc3RhJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YV9ib3JyYXJfcHJldmlzdWFsaXphcicsIGxhYmVsOiAncXVpdGFyIGVuY3Vlc3RhIGRlIGxhIG11ZXN0cmEnIH0pO1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3Rhc19jYXBhY2l0YWNpb25fYm9ycmFyJywgbGFiZWw6ICdxdWl0YXIgZW5jdWVzdGFzIGRlIGNhcGEgZGUgbGEgbXVlc3RyYScgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnb3BlcmF0aXZvX21pZ3JhcicsIGxhYmVsOiAnbWlncmFyIG9wZXJhdGl2bycgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFfY2FwYV9hX3Byb2RfcGFzYXInLCBsYWJlbDogJ3Bhc2FyIGVuY3Vlc3RhcyBkZSBjYXBhIGEgcHJvZCcgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdpbnRlcmNhbWJpYXJfZW5jdWVzdGFzJyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4geyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAndmFyaW9zJywgbWVudUNvbnRlbnQ6IHN1Ym1lbnVWYXJpb3MgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRNZW51QXNpZ25hY2lvbihjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlIHtcclxuICAgICAgICAgICAgbGV0IGZpbHRyb1JlY2VwY2lvbmlzdGEgPSBjb250ZXh0LnVzZXIucm9sID09ICdyZWNlcGNpb25pc3RhJyA/IHsgcmVjZXBjaW9uaXN0YTogY29udGV4dC51c2VyLmlkcGVyIH0gOiB7fTtcclxuICAgICAgICAgICAgbGV0IHN1Ym1lbnVBc2lnbmFjaW9uOiBNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51QXNpZ25hY2lvbi5wdXNoKHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdnZW5lcmFsJywgdGFibGU6ICdhcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN1Ym1lbnVBc2lnbmFjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZW5jdWVzdGFkb3InLCB0YWJsZTogJ3RfZW5jdV9hcmVhcycsIGZmOiB7IHRhcmVhOiAnZW5jdScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2luZ3Jlc2Fkb3InLCB0YWJsZTogJ3RfaW5ncl9hcmVhcycsIGZmOiB7IHRhcmVhOiAnaW5ncicsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlY3VwZXJhZG9yJywgdGFibGU6ICd0YXJlYXNfdGVtX2FzaWduYWNpb25fcmVjdScsIGZmOiB7IHRhcmVhX2FjdHVhbDogJ3JlY3UnLCB0YXJlYTogJ3JlY3UnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudUFzaWduYWNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnc3VwZXJ2aXNvcicsIHRhYmxlOiAndGFyZWFzX3RlbV9hc2lnbmFjaW9uX3N1cGUnLCBmZjogeyB0YXJlYV9hY3R1YWw6ICdzdXBlJywgdGFyZWE6ICdzdXBlJywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZXR1cm4geyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnYXNpZ25hY2lvbicsIGxhYmVsOiAnYXNpZ25hY2nDs24nLCBtZW51Q29udGVudDogc3VibWVudUFzaWduYWNpb24gfVxyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRNZW51UmVjZXBjaW9uKGNvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2Uge1xyXG4gICAgICAgICAgICBsZXQgc3VibWVudVJlY2VwY2lvbjogTWVudUluZm9CYXNlW10gPSBbXVxyXG4gICAgICAgICAgICBzdWJtZW51UmVjZXBjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZW5jdWVzdGFkb3InLCB0YWJsZTogJ2VuY3Vlc3RhZG9yZXNfYXNpZ25hZG9zJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlY3VwZXJhZG9yJywgdGFibGU6ICdyZWN1cGVyYWRvcmVzX2FzaWduYWRvcycgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdpbmdyZXNhZG9yJywgdGFibGU6ICdpbmdyZXNhZG9yZXNfYXNpZ25hZG9zJyB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51UmVjZXBjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3N1cGVydmlzb3InLCB0YWJsZTogJ3N1cGVydmlzb3Jlc19hc2lnbmFkb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ21pc19zdXBlcnZpc29yZXMnLCB0YWJsZTogJ21pc19zdXBlcnZpc29yZXNfYXNpZ25hZG9zJyB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdyZWNlcGNpb24nLCBsYWJlbDogJ3JlY2VwY2nDs24nLCBtZW51Q29udGVudDogc3VibWVudVJlY2VwY2lvbiB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXRNZW51Q2FydG8oY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZSB8IG51bGwge1xyXG4gICAgICAgICAgICBsZXQgc3VibWVudUNhcnRvOiBNZW51SW5mb0Jhc2VbXSA9IFtdXHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVDYXJ0by5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdjb211bmFzJywgdGFibGU6ICdjb211bmFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdiYXJyaW9zJywgdGFibGU6ICdiYXJyaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdmcmFjY2lvbmVzJywgdGFibGU6ICdmcmFjY2lvbmVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyYWRpb3MnLCB0YWJsZTogJ3JhZGlvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnbWFuemFuYXMnLCB0YWJsZTogJ21hbnphbmFzJyB9LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ2NhcnRvJywgbGFiZWw6ICdjYXJ0b2dyYWbDrWEnLCBtZW51Q29udGVudDogc3VibWVudUNhcnRvIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0TWVudUNvbmZpZ3VyYXIoY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZVtdIHtcclxuICAgICAgICAgICAgY29uc3QgbWVudUNvbmZpZ3VyYXI6IE1lbnVJbmZvQmFzZVtdID0gW107XHJcblxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1lbnVNdWVzdHJhOiBNZW51SW5mb0Jhc2VbXSA9IFtcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGVtJywgbGFiZWw6ICdURU0nIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnbXVlc3RyYV9nZW5lcmFyJywgbGFiZWw6ICdnZW5lcmFyIG11ZXN0cmEnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3NlbWFuYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2FyZWFfZW5jX3Byb3hpbWFzJyB9LFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ211ZXN0cmEnLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnbXVlc3RyYScsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUNvbnRlbnQ6IHN1Ym1lbnVNdWVzdHJhXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhc2lsbGVyb3NfdGV4dG8/LmVkaXRhcikge1xyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbWV0YWRhdG9zJyxcclxuICAgICAgICAgICAgICAgICAgICBtZW51Q29udGVudDogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnb3BlcmF0aXZvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAncmVhL25vcmVhJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlYScgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdub19yZWEnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVhX3N1cCcgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdub19yZWFfc3VwJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2Zvcm11bGFyaW9zJywgdGFibGU6ICdjYXNpbGxlcm9zX3ByaW5jaXBhbGVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncGxhbm8nLCB0YWJsZTogJ2Nhc2lsbGVyb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd2YXJpYWJsZXMnLCB0YWJsZTogJ2Nhc2lsbGVyb3MnLCBmYzogW3sgY29sdW1uOiAndmFyX25hbWUnLCBvcGVyYXRvcjogJyE9XFx1MjIwNScsIHZhbHVlOiBudWxsIH1dIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0aXBvYycsIGxhYmVsOiAndGlwb3MgZGUgY2VsZGFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGlwb2NfdGlwb2MnLCBsYWJlbDogJ2luY2x1c2lvbmVzIGRlIGNlbGRhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQuc3VwZXJ1c2VyKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2VzdGFkb3NfYWNjaW9uZXNfdGFyZWFzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlc3RhZG9zL2FjY2lvbmVzL3RhcmVhcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFyZWFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2VzdGFkb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnYWNjaW9uZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZXN0YWRvc19hY2Npb25lcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0YXJlYXNfcHJveGltYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdtb21lbnRvc19jb25zaXN0ZW5jaWEnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3BhcmFtZXRyb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ21vZG9zX2RtJyB9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c3VhcmlvcycsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUNvbnRlbnQ6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3VzdWFyaW9zJywgc2VsZWN0ZWRCeURlZmF1bHQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JvbGVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncGVybWlzb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyb2xlc19wZXJtaXNvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIG1lbnVDb25maWd1cmFyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbG9zIG1peGlucyAobWV0YS1lbmMsIHByb2Nlc2FtaWVudG8pIGxvIGRlY2xhcmFuIHNpbiBwYXLDoW1ldHJvcywgcGVybyBiYWNrZW5kLXBsdXMgc2llbXByZSBsbyBsbGFtYSBjb24gY29udGV4dC5cclxuICAgICAgICAvLyBFbCB0aXBvIGRlIHJldG9ybm8gcXVlIGRlY2xhcmEgb3BlcmF0aXZvcyAoTWVudUluZm9bXSkgbm8gYWRtaXRlIGZvcm1hcyBxdWUgYmFja2VuZC1wbHVzIHPDrSBhY2VwdGEgeSBkbWVuY3UgdXNhXHJcbiAgICAgICAgLy8gKGZmIGNvbW8gb2JqZXRvLCBmYyBjb24gY29sdW1uKTsgc2UgZGV2dWVsdmUgTWVudUluZm9CYXNlW10sIHF1ZSBlcyBsbyBxdWUgZGVjbGFyYSBiYWNrZW5kLXBsdXMuXHJcbiAgICAgICAgLy8gUXVpdGFyIGVzdGEgbMOtbmVhIGN1YW5kbyBzZSBjb3JyaWphbiBsb3MgdGlwb3MgZGUgbWVuw7ogZW4gb3BlcmF0aXZvcy9iYWNrZW5kLXBsdXMgKGVsIGNvbXBpbGFkb3IgYXZpc2Egc2kgZGVqYSBkZSBoYWNlciBmYWx0YSkuXHJcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBNZW51RGVmaW5pdGlvbiBkZSBvcGVyYXRpdm9zIG3DoXMgZXN0cmljdG8gcXVlIGVsIGRlIGJhY2tlbmQtcGx1c1xyXG4gICAgICAgIG92ZXJyaWRlIGdldE1lbnUoY29udGV4dD86IENvbnRleHQpIHtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdnZXRNZW51IGRlIGRtZW5jdSByZXF1aWVyZSBlbCBjb250ZXh0IHBhcmEgYXJtYXIgZWwgbWVuw7ogc2Vnw7puIGxvcyBwZXJtaXNvcycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBtZW51OiBNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoZ2V0TW9kb0J5UG9saWN5KGNvbnRleHQuYmUpID09PSAnUkVMRVZBTUlFTlRPJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucmVsZXZhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7IG1lbnVUeXBlOiAncGF0aCcsIG5hbWU6ICdyZWxldmFtaWVudG8nLCBwYXRoOiAnL2NhbXBvJyB9KVxyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3NpbmNyb25pemFyX2RtJywgbmFtZTogJ3NpbmNyb25pemFyJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAnY2FtYmlhcl9tb2RvX2RtJywgbmFtZTogJ2NhbWJpYXJfbW9kbycgfSxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5lZGl0YXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWVudUFzaWduYWNpb24oY29udGV4dCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWVudVJlY2VwY2lvbihjb250ZXh0KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc190ZW1fZmluX2NhbXBvJywgbGFiZWw6ICdlc3BlcmEgZmluIGRlIGNhbXBvJyB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc190ZW1fYW5hbGlzaXNfY2FtcG8nLCBsYWJlbDogJ2Fuw6FsaXNpcyBkZSBjYW1wbycgfSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnc3VwZXJ2aXNpb24nLCBsYWJlbDogJ3N1cGVydmlzacOzbicsIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3N1cGVydmlzYXInLCB0YWJsZTogJ3RhcmVhc190ZW1faW5ncmVzbycsIGZmOiB7IHRhcmVhOiAnc3VwZScsIGFzaWduYWRvOiBjb250ZXh0LnVzZXIuaWRwZXIgfSB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhciB8fCBjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh0aGlzLmdldE1lbnVWYXJpb3MoY29udGV4dCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdjb250cm9sJywgbWVudUNvbnRlbnQ6IHRoaXMuZ2V0TWVudUNvbnRyb2xlcyhjb250ZXh0KSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAvKnttZW51VHlwZTondGFibGUnLCBuYW1lOidwYXJ0aWNpcGFjaW9uJyAgICAgICAgLCB0YWJsZTonY29udHJvbF9jYW1wb19wYXJ0aWNpcGFjaW9uJyAgfSwqL1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAncHJvY2VzYXInLCBtZW51Q29udGVudDogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd2YXJpYWJsZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3ZhcmlhYmxlc19jdWVzdGlvbmFyaW8nLCB0YWJsZTogJ2Nhc2lsbGVyb3MnLCB0ZDogeyBlZGl0YWJsZTogZmFsc2UsIGFsbG93OiB7IHVwZGF0ZTogZmFsc2UsIGltcG9ydDogZmFsc2UsIGRlbGV0ZTogZmFsc2UsIGluc2VydDogZmFsc2UgfSB9LCBmYzogW3sgY29sdW1uOiAndmFyX25hbWUnLCBvcGVyYXRvcjogJyE9XFx1MjIwNScsIHZhbHVlOiBudWxsIH1dIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbnNpc3RlbmNpYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbnNpc3RlbmNpYXNfY3Vlc3Rpb25hcmlvJywgdGFibGU6ICdjYXNpbGxlcm9zJywgZmY6IHsgdGlwb2M6ICdDT05TJyB9IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2luY29uc2lzdGVuY2lhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFibGFfZGF0b3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2RpY2Npb25hcmlvJywgbGFiZWw6ICdkaWNjaW9uYXJpb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc190ZW1fcHJvY2VzYW1pZW50bycsIGxhYmVsOiAnZW5jdWVzdGFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZW51Q29uZmlndXJhciA9IHRoaXMuZ2V0TWVudUNvbmZpZ3VyYXIoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobWVudUNvbmZpZ3VyYXIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ2NvbmZpZ3VyYXInLCBtZW51Q29udGVudDogbWVudUNvbmZpZ3VyYXIgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZW51Q2FydG8gPSB0aGlzLmdldE1lbnVDYXJ0byhjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChtZW51Q2FydG8pIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2gobWVudUNhcnRvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4geyBtZW51IH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIHByZXBhcmVHZXRUYWJsZXMoKSB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHN1cGVyLnByZXBhcmVHZXRUYWJsZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRUYWJsZURlZmluaXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldFRhYmxlRGVmaW5pdGlvblxyXG4gICAgICAgICAgICAgICAgLCByb2xlc1xyXG4gICAgICAgICAgICAgICAgLCB1c3Vhcmlvc1xyXG4gICAgICAgICAgICAgICAgLCBwZXJzb25hbFxyXG4gICAgICAgICAgICAgICAgLCByZWNlcGNpb25pc3Rhc1xyXG4gICAgICAgICAgICAgICAgLCBlbmN1ZXN0YWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAgICAgLCBpbmdyZXNhZG9yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIHJlY3VwZXJhZG9yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIHN1cGVydmlzb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgICAgICwgbWlzX3N1cGVydmlzb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgICAgICwgbWlzX2VuY3Vlc3RhZG9yZXNcclxuICAgICAgICAgICAgICAgICwgcmVjdXBlcmFkb3Jlc1xyXG4gICAgICAgICAgICAgICAgLCBzdXBlcnZpc29yZXNcclxuICAgICAgICAgICAgICAgICwgcGVyc29uYWxfcm9sXHJcbiAgICAgICAgICAgICAgICAsIHBlcm1pc29zXHJcbiAgICAgICAgICAgICAgICAsIHJvbGVzX3Blcm1pc29zXHJcbiAgICAgICAgICAgICAgICAsIHJvbGVzX3N1Ym9yZGluYWRvc1xyXG4gICAgICAgICAgICAgICAgLCBub19yZWFcclxuICAgICAgICAgICAgICAgICwgbm9fcmVhX3N1cFxyXG4gICAgICAgICAgICAgICAgLCByZWFcclxuICAgICAgICAgICAgICAgICwgcmVhX3N1cFxyXG4gICAgICAgICAgICAgICAgLCBzZW1hbmFzXHJcbiAgICAgICAgICAgICAgICAsIGVzdGFkb3NcclxuICAgICAgICAgICAgICAgICwgYWNjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgZXN0YWRvc19hY2Npb25lc1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfcHJveGltYXNcclxuICAgICAgICAgICAgICAgICwgdGVtXHJcbiAgICAgICAgICAgICAgICAsIGhpc3RvcmlhbF90ZW1cclxuICAgICAgICAgICAgICAgICwgbW9kb3NfZG1cclxuICAgICAgICAgICAgICAgICwgcGFyYW1ldHJvc1xyXG4gICAgICAgICAgICAgICAgLCBvcGVyYWNpb25lc1xyXG4gICAgICAgICAgICAgICAgLCBjb211bmFzXHJcbiAgICAgICAgICAgICAgICAsIGFyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHNpbmNyb25pemFjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2VuY3VcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3JlY3VcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3N1cGVcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2luZ3JcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIGFyZWFzX2FzaWduYWNpb25fZ2VuZXJhbFxyXG4gICAgICAgICAgICAgICAgLCBncmlsbGFfaG9qYV9ydXRhXHJcbiAgICAgICAgICAgICAgICAsIHRfZW5jdV9hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCB0X3JlY3VfYXJlYXNcclxuICAgICAgICAgICAgICAgICwgdF9zdXBlX2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRfaW5ncl9hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCBtaXNfdGFyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRlbV9hc2lnbmFjaW9uXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fcmVjZXBjaW9uXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1faW5ncmVzb1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2Zpbl9jYW1wb1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG9cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wb1xyXG4gICAgICAgICAgICAgICAgLCBtaXNfdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9cclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9yZXN1bWVuXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fem9uYTogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IHpvbmEgc29sbyBjZW1lbnRvJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICd6b25hJywgdHlwZU5hbWU6ICd0ZXh0JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIsIGZpbHRyb1doZXJlOiAnZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fY29tdW5hOiBjb250ZXh0ID0+IGNvbnRyb2xfY2FtcG8oY29udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICB7IG5vbWJyZTogJ2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6ICdjb250cm9sIGNhbXBvIHggY29tdW5hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOiBbeyBuYW1lOiAnem9uYScsIHR5cGVOYW1lOiAndGV4dCcgfSwgeyBuYW1lOiAnbnJvY29tdW5hJywgdHlwZU5hbWU6ICd0ZXh0JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIsIGZpbHRyb1doZXJlOiAnZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fYXJlYTogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IGFyZWEnLCBjYW1wb3NDb3J0ZTogW3sgbmFtZTogJ3pvbmEnLCB0eXBlTmFtZTogJ3RleHQnIH0sIHsgbmFtZTogJ25yb2NvbXVuYScsIHR5cGVOYW1lOiAndGV4dCcgfSwgeyBuYW1lOiAnYXJlYScsIHR5cGVOYW1lOiAnaW50ZWdlcicgfSwgeyBuYW1lOiAncGFydGljaXBhY2lvbl9hJywgdHlwZU5hbWU6ICd0ZXh0JyB9LCB7IG5hbWU6ICdjbGFzZV9hJywgdHlwZU5hbWU6ICd0ZXh0JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb246IGNvbnRleHQgPT4gY29udHJvbF9jYW1wbyhjb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbm9tYnJlOiAnY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTogJ2NvbnRyb2wgY2FtcG8geCBwYXJ0aWNpcGFjaW9uJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICdwYXJ0aWNpcGFjaW9uJywgdHlwZU5hbWU6ICdiaWdpbnQnIH1dLCBzaW5ob2dmaW46ICFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhciB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fZG9taW5pbzogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IGRvbWluaW8nLCBjYW1wb3NDb3J0ZTogW3sgbmFtZTogJ2RvbWluaW8nLCB0eXBlTmFtZTogJ2ludGVnZXInIH1dLCBzaW5ob2dmaW46ICFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhciB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfZGlhc19jYXJnYVxyXG4gICAgICAgICAgICAgICAgLCB2aXZpZW5kYXNcclxuICAgICAgICAgICAgICAgICwgdmlzaXRhc1xyXG4gICAgICAgICAgICAgICAgLCBob2dhcmVzXHJcbiAgICAgICAgICAgICAgICAsIHBlcnNvbmFzXHJcbiAgICAgICAgICAgICAgICAsIHZpc2l0YXNfc3VwXHJcbiAgICAgICAgICAgICAgICAsIGhvZ2FyZXNfc3VwXHJcbiAgICAgICAgICAgICAgICAsIHBlcnNvbmFzX3N1cFxyXG4gICAgICAgICAgICAgICAgLCBkaWNjaW9uYXJpb1xyXG4gICAgICAgICAgICAgICAgLCBkaWN2YXJcclxuICAgICAgICAgICAgICAgICwgZGljdHJhXHJcbiAgICAgICAgICAgICAgICAsIGluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvblxyXG4gICAgICAgICAgICAgICAgLCB0ZW1fYm9ycmFkYXNcclxuICAgICAgICAgICAgICAgICwgYmFycmlvc1xyXG4gICAgICAgICAgICAgICAgLCBmcmFjY2lvbmVzXHJcbiAgICAgICAgICAgICAgICAsIHJhZGlvc1xyXG4gICAgICAgICAgICAgICAgLCBtYW56YW5hc1xyXG4gICAgICAgICAgICAgICAgLCBhcmVhX2VuY19wcm94aW1hc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdjb25zaXN0ZW5jaWFzJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5lZGl0YWJsZSA9IHRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0gJ2Vycm9yX2NvbXBpbGFjaW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQudmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignKioqKioqKioqKioqIFFVSVRBUiBFU1RPIGVycm9yX2NvbXBpbGFjaW9uIHlhIGVzIHZpc2libGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignaW5jb25zaXN0ZW5jaWFzJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5zcWwgPSB7IC4uLnRhYmxlRGVmLnNxbCwgaXNUYWJsZTogdHJ1ZSB9O1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnNwbGljZSgyLCAwLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3ZpdmllbmRhJywgdHlwZU5hbWU6ICd0ZXh0JywgZWRpdGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnaG9nYXInLCB0eXBlTmFtZTogJ2JpZ2ludCcsIGVkaXRhYmxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3BlcnNvbmEnLCB0eXBlTmFtZTogJ2JpZ2ludCcsIGVkaXRhYmxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3Zpc2l0YScsIHR5cGVOYW1lOiAnYmlnaW50JywgZWRpdGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGUgPSB0YWJsZURlZi5lZGl0YWJsZSB8fCBjb250ZXh0Py5wdWVkZT8uZW5jdWVzdGFzPy5qdXN0aWZpY2FyO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0gJ3BrX2ludGVncmFkYScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQubmFtZSA9PSAnanVzdGlmaWNhY2lvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZWRpdGFibGUgPSBjb250ZXh0Py5mb3JEdW1wIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/Lmp1c3RpZmljYXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcyA9IHRhYmxlRGVmLmZpZWxkcy5jb25jYXQoWyd0YXJlYV9hY3R1YWwnLCAndGFyZWFfYW50ZXJpb3InXS5tYXAoZm4gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG5hbWU6IGZuLCB0eXBlTmFtZTogJ3RleHQnLCBlZGl0YWJsZTogZmFsc2UsIGluVGFibGU6IGZhbHNlIH1cclxuICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgLy9zYWNhciBjYW1wb3MgZGUgdml0YWxlcyEgXHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWdFeHBGaWVsZHNWaXRhID0gbmV3IFJlZ0V4cCgnXihjb21wfGluZmV8Y29kX2NhdXNhfGRvbWkpJCcpO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzID0gdGFibGVEZWYuZmllbGRzLmZpbHRlcihmID0+ICEocmVnRXhwRmllbGRzVml0YS50ZXN0KGYubmFtZSkpKVxyXG5cclxuICAgICAgICAgICAgICAgIHZhciBxX2luY29uc2lzdCA9IHRhYmxlRGVmLnNxbCEuZnJvbVxyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuc3FsIS5mcm9tID0gYFxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCBpLiosIHQudGFyZWFfYWN0dWFsLCB0YXJlYV9hbnRlcmlvclxyXG4gICAgICAgICAgICAgICAgICBmcm9tICR7cV9pbmNvbnNpc3R9IGkgXHJcbiAgICAgICAgICAgICAgICAgIGpvaW4gdGVtIHQgb24gaS52aXZpZW5kYT10LmVuYyBhbmQgaS5vcGVyYXRpdm89dC5vcGVyYXRpdm8gXHJcbiAgICAgICAgICAgICAgICAgIGxlZnQgam9pbiB0YXJlYXNfdGVtIHR0IG9uIHQub3BlcmF0aXZvPXR0Lm9wZXJhdGl2byBhbmQgdC5lbmM9dHQuZW5jIGFuZCB0LnRhcmVhX2FjdHVhbD10dC50YXJlYSBcclxuICAgICAgICAgICAgICAgICAgbGVmdCBqb2luIGxhdGVyYWwgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgdGFyZWEgYXMgdGFyZWFfYW50ZXJpb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gaGlzdG9yaWFsX3RlbSBodFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdC5vcGVyYXRpdm8gPSBodC5vcGVyYXRpdm8gYW5kIHQuZW5jID0gaHQuZW5jXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciBieSB0c19zYWxpZGEgZGVzY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgMVxyXG4gICAgICAgICAgICAgICAgICAgICkgYXMgdGEgb24gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgKSAgIFxyXG4gICAgICAgICAgICBgXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdvcGVyYXRpdm9zJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDIsIDAsIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29uZmlnX3NvcnRlbycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdqc29uYicsXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2hhYmlsaXRhY2lvbl9ib3Rvbl9mb3JtdWxhcmlvJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2pzb25iJyxcclxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGlzZm9ybV9jZXJyYWRvJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGNvbnRleHQ/LmZvckR1bXAgfHwgY29udGV4dCAhPSBudWxsICYmIFsnYWRtaW4nLCAnZGlzX2NvbmNlcHR1YWwnXS5pbmNsdWRlcyhjb250ZXh0LnVzZXIucm9sKVxyXG4gICAgICAgICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb25fcmVhX2hvZ2FyJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGJWYWx1ZTogJ3RydWUnXHJcbiAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Blcm1pdGVfZ2VuZXJhcl9tdWVzdHJhJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGJWYWx1ZTogJ2ZhbHNlJ1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCd2YXJpYWJsZXMnLCBmdW5jdGlvbiAodGFibGVEZWYsIGNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBlc0FkbWluID0gY29udGV4dD8udXNlci5yb2wgPT09ICdhZG1pbic7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5lZGl0YWJsZSA9IHRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuYWxsb3cgPSB7IGRlbGV0ZTogZXNBZG1pbiB9O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignbW9tZW50b3NfY29uc2lzdGVuY2lhJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBfY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnY29uZGljaW9uJywgdHlwZU5hbWU6ICd0ZXh0JywgbnVsbGFibGU6IGZhbHNlLCBkZWZhdWx0RGJWYWx1ZTogJ3RydWUnIH0sXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbigncGFyYW1ldHJvcycsIGZ1bmN0aW9uICh0YWJsZURlZikge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnbW9kb19kbV9kZWZlY3RvJywgdHlwZU5hbWU6ICd0ZXh0JywgZWRpdGFibGU6IHRydWUsIG51bGxhYmxlOiBmYWxzZSwgZGVmYXVsdERiVmFsdWU6IFwiJ2NhcGEnXCIgfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5mb3JlaWduS2V5cyA9IHRhYmxlRGVmLmZvcmVpZ25LZXlzIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZm9yZWlnbktleXMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IHJlZmVyZW5jZXM6ICdtb2Rvc19kbScsIGZpZWxkczogW3sgc291cmNlOiAnbW9kb19kbV9kZWZlY3RvJywgdGFyZ2V0OiAnbW9kb19kbScgfV0gfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgQXBwRG1FbmN1ID0gZW1lcmdlQXBwRG1FbmN1KGVtZXJnZUFwcFByb2Nlc2FtaWVudG8oZW1lcmdlQXBwQ29uc2lzdGVuY2lhcyhlbWVyZ2VBcHBWYXJDYWwoZW1lcmdlQXBwRGF0b3NFeHQoZW1lcmdlQXBwT3BlcmF0aXZvcyhBcHBCYWNrZW5kKSkpKSkpO1xyXG5leHBvcnQgdHlwZSBBcHBBcHBEbUVuY3VUeXBlID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBBcHBEbUVuY3U+OyJdfQ==
|
|
1091
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBcUhiLDBDQUVDO0lBR0Qsb0RBYUM7SUFHRCxnREFPQztJQXdCRCxrRkFnQkM7SUFpRUQsMENBMjRCQztJQWxvQ0QsaURBQTRMO0lBQzVMLDJEQUE2RTtJQUM3RSxtQ0FBNEg7SUFFNUgsd0NBQXdDO0lBQ3hDLHdDQUF3QztJQVV4QywyQ0FBa0Q7SUFFbEQsNkJBQTZCO0lBRTdCLG1DQUFtQztJQUVuQywyQkFBb0M7SUFDcEMsNkJBQTZCO0lBRTdCLCtDQUFzQztJQUN0QyxxREFBNEM7SUFDNUMsaUVBQXdEO0lBQ3hELCtEQUF3RjtJQUN4RiwrREFBZ0U7SUFDaEUsK0RBQStEO0lBQy9ELCtEQUFtRTtJQUNuRSx1RUFBOEQ7SUFDOUQsK0RBQXNEO0lBQ3RELDZEQUFvRDtJQUNwRCw2REFBb0Q7SUFDcEQscURBQTRDO0lBQzVDLGlFQUF3RDtJQUN4RCxxREFBNEM7SUFDNUMseURBQWdEO0lBQ2hELHlFQUFnRTtJQUVoRSxpREFBd0M7SUFDeEMseURBQWdEO0lBQ2hELDJDQUFrQztJQUNsQyxtREFBMEM7SUFDMUMsMkNBQWtDO0lBQ2xDLG1EQUEwQztJQUMxQyxxREFBNEM7SUFDNUMsMkRBQWtEO0lBQ2xELG1EQUEwQztJQUMxQywrQ0FBc0M7SUFDdEMscUVBQTREO0lBQzVELGlEQUF3QztJQUN4Qyx5REFNNEI7SUFDNUIsNkRBQW9EO0lBQ3BELHFGQUE0RTtJQUM1RSxxRUFBNEQ7SUFDNUQsNkRBQW9EO0lBQ3BELDZEQUFvRDtJQUNwRCw2REFBb0Q7SUFDcEQsNkRBQW9EO0lBQ3BELHlEQUFnRDtJQUNoRCxpRUFBd0Q7SUFDeEQsNkVBQW9FO0lBQ3BFLHlFQUFnRTtJQUNoRSw2RUFBb0U7SUFDcEUscUZBQTRFO0lBQzVFLHVGQUE4RTtJQUM5RSxxRUFBNEQ7SUFDNUQsK0RBQXNEO0lBQ3RELG1FQUEwRDtJQUMxRCx5RUFBZ0U7SUFDaEUsdURBQThDO0lBQzlDLG1EQUEwQztJQUMxQyxtREFBMEM7SUFDMUMscURBQTRDO0lBQzVDLDJEQUFrRDtJQUNsRCwyREFBa0Q7SUFDbEQsNkRBQW9EO0lBQ3BELDJEQUFrRDtJQUNsRCxpREFBd0M7SUFDeEMsaURBQXdDO0lBRXhDLG1EQUEwQztJQUMxQyxxREFBNEM7SUFDNUMscUVBQTREO0lBQzVELG1FQUEwRDtJQUMxRCwrREFBc0Q7SUFDdEQsdUdBQThGO0lBQzlGLDZEQUFvRDtJQUNwRCxtREFBMEM7SUFDMUMseURBQWdEO0lBQ2hELGlEQUF3QztJQUN4QyxxREFBNEM7SUFDNUMsdUVBQThEO0lBRTlELGlEQUErQjtJQUMvQiwwQ0FBd0I7SUFDeEIsNkNBQXdDO0lBSXhDLCtDQUF3QztJQUl4QyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFFbkMsU0FBZ0IsZUFBZSxDQUFDLEVBQWM7UUFDMUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsK0ZBQStGO0lBQy9GLFNBQWdCLG9CQUFvQixDQUNoQyxNQUE2RixFQUM3RixJQUFpQztRQUVqQyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsSUFBSSxjQUFjLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3ZFLElBQUksY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGlHQUFpRztJQUNqRyxTQUFnQixrQkFBa0IsQ0FBQyxPQUFnQjs7UUFDL0MsT0FBTztZQUNILEdBQUcsRUFBRSxNQUFBLE1BQUEsT0FBTyxDQUFDLElBQUksMENBQUUsR0FBRyxtQ0FBSSxJQUFJO1lBQzlCLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDOUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLElBQUksRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNwQyxDQUFDO0lBQ04sQ0FBQztJQVdELG9IQUFvSDtJQUN2RyxRQUFBLGlCQUFpQixHQUFHLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNELDRGQUE0RjtJQUMvRSxRQUFBLGlCQUFpQixHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFPNUUsb0dBQW9HO0lBQ3BHLHFHQUFxRztJQUNyRyx3REFBd0Q7SUFDeEQsU0FBZ0IsbUNBQW1DLENBQy9DLEVBQXlCLEVBQ3pCLFlBQXdFO1FBRXhFLE9BQU8sVUFBZ0IsT0FBVSxFQUFFLFVBQWEsRUFBRSxHQUFHLEtBQVk7O2dCQUM3RCxJQUFJLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQy9ELElBQUkseUJBQWlCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUMvQyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO2dCQUN2RSxDQUFDO2dCQUNELElBQUkseUJBQWlCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUMvQyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3JELE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7Z0JBQ0QsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQztTQUFBLENBQUE7SUFDTCxDQUFDO0lBRUQsTUFBTSwyQkFBMkIsR0FBRyxDQUFPLEVBQWMsRUFBRSxFQUFFO1FBQ3pELE1BQU0sY0FBYyxHQUFHLEdBQVMsRUFBRTtZQUM5QixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQVcsRUFBRSxPQUFZLEVBQUUsRUFBRSxFQUFFLENBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyx1QkFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDO2dCQUNELEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2dCQUVyQyxJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQU8sTUFBTSxFQUFFLEVBQUU7b0JBQ3ZELE9BQU8sTUFBTSxJQUFBLHdDQUFvQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QyxDQUFDLENBQUEsQ0FBQyxDQUFDO2dCQUVILEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxJQUFJLEtBQUssR0FBRyxJQUFBLHVCQUFVLEVBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzVCLEdBQUcsQ0FBQywyQkFBMkIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDcEQsQ0FBQztvQkFBUyxDQUFDO2dCQUNQLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDTCxDQUFDLENBQUEsQ0FBQztRQUNGLE1BQU0sY0FBYyxFQUFFLENBQUM7UUFDdkIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLGNBQWMsRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQzVELEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztZQUN2QixPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLEdBQUcsRUFBRTs7b0JBQ0QsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN4QixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQzthQUFBO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFBLENBQUE7SUFFRCxNQUFNLHFCQUFxQixHQUFHLENBQUMsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDO1FBQ2hFO1lBQ0ksS0FBSyxFQUFFLFVBQVUsUUFBUSxjQUFjLE1BQU0sTUFBTTtZQUNuRCxPQUFPLEVBQUUsT0FBTztZQUNoQixNQUFNLEVBQUUsV0FBVztTQUN0QjtRQUNEO1lBQ0ksS0FBSyxFQUFFLFVBQVUsUUFBUSxjQUFjLE1BQU0sTUFBTTtZQUNuRCxPQUFPLEVBQUUsT0FBTztZQUNoQixNQUFNLEVBQUUsV0FBVztTQUN0QjtRQUNEO1lBQ0ksS0FBSyxFQUFFLFVBQVUsUUFBUSxjQUFjLE1BQU0sTUFBTTtZQUNuRCxPQUFPLEVBQUUsT0FBTztZQUNoQixNQUFNLEVBQUUsV0FBVztTQUN0QjtRQUNEO1lBQ0ksS0FBSyxFQUFFLFVBQVUsUUFBUSxjQUFjLE1BQU0sTUFBTTtZQUNuRCxPQUFPLEVBQUUsT0FBTztZQUNoQixNQUFNLEVBQUUsV0FBVztTQUN0QjtRQUNEO1lBQ0ksS0FBSyxFQUFFLFVBQVUsUUFBUSxlQUFlLE1BQU0sTUFBTTtZQUNwRCxPQUFPLEVBQUUsU0FBUztZQUNsQixNQUFNLEVBQUUsV0FBVztTQUN0QjtRQUNEO1lBQ0ksS0FBSyxFQUFFLFVBQVUsUUFBUSxlQUFlLE1BQU0sTUFBTTtZQUNwRCxPQUFPLEVBQUUsU0FBUztZQUNsQixNQUFNLEVBQUUsV0FBVztTQUN0QjtLQUNKLENBQUM7SUFFRixTQUFnQixlQUFlLENBQTBFLElBQU87UUFDNUcsT0FBTyxNQUFNLFNBQVUsU0FBUSxJQUFJO1lBQy9CLFlBQVksR0FBRyxJQUFXO2dCQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBU2hCLHlCQUFvQixHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FDdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDM0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBRWhELGVBQVUsR0FBRyxHQUFTLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztvQkFDZCxPQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQWlCLEVBQUUsRUFBRSxDQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FDM0YsQ0FBQyxDQUFDLEtBQWdCLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQSxDQUFBO2dCQWpCRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7Z0JBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUE7Z0JBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0NBQWdDLEdBQUcsS0FBSyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMzQixDQUFDO1lBWUQsc0dBQXNHO1lBQ3ZGLGFBQWEsQ0FBQyxZQUFnQyxFQUFFLGdCQUFnQzs7b0JBQzNGLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztvQkFDZCxJQUFJLGVBQWUsR0FBRyxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsSUFBSSxDQUFDO29CQUN6QyxJQUFJLFlBQVksSUFBSSxJQUFJLElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNsRCxPQUFPLEtBQUssQ0FBQztvQkFDakIsQ0FBQztvQkFDRCxJQUFJLEdBQUcsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDO29CQUM5QixJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQU8sTUFBTSxFQUFFLEVBQUU7d0JBQ3BELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO3dCQUMzQixPQUFPLENBQUMsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDOzs7NkZBR2tELENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQzdHLENBQUMsQ0FBQSxDQUFDLENBQUE7b0JBQ0YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsQ0FBQztvQkFDdEUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDdkMsT0FBTyxPQUFPLElBQUksS0FBSyxDQUFBO2dCQUUzQixDQUFDO2FBQUE7WUFDYyxhQUFhOzs7OztvQkFDeEIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO29CQUNkLElBQUksd0JBQXdCLEdBQUcsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7b0JBQzlELElBQUksVUFBVSxHQUFHLE1BQU0sT0FBTSxhQUFhLFdBQUUsQ0FBQztvQkFDN0MsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUN6RyxVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDbEMsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUkscUJBQXFCLEVBQUUsQ0FBQzs0QkFDbkYsT0FBTyxDQUFDLFlBQVksR0FBRyxtQ0FBbUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUN6RixDQUFDO3dCQUNELE9BQU8sT0FBTyxDQUFDO29CQUNuQixDQUFDLENBQUMsQ0FBQTtvQkFDRixPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsb0NBQWdCLENBQUMsQ0FBQztnQkFDL0MsQ0FBQzthQUFBO1lBQ2Msc0JBQXNCLENBQUMsT0FBZTs7Z0JBQ3JELENBQUM7YUFBQTtZQUNRLHNCQUFzQixDQUFDLE9BQThCLEVBQUUsT0FBZTtnQkFDM0UsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNkLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQy9DLDREQUE0RDtnQkFDNUQsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0RBQWdELENBQUMsQ0FBQyxDQUFBO2dCQUNwRixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBWSxFQUFFLElBQWMsRUFBRSxJQUFrQjtvQkFDbEUsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDdEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3BFLENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUM7Z0JBQ1gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsU0FBUyxFQUFFLFVBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLO29CQUN0RCxnRkFBZ0Y7b0JBQ2hGLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUM7b0JBQ3hCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNwRyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BELENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLFFBQVEsRUFBRSxVQUFVLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSztvQkFDckQsZ0ZBQWdGO29CQUNoRixJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQztvQkFDOUIsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDUCx3Q0FBd0M7d0JBQ3hDLElBQUksZUFBZSxHQUFHLG1DQUFtQyxDQUFDO3dCQUMxRCxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUMzSCxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3BELENBQUM7eUJBQU0sQ0FBQzt3QkFDSixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsMkJBQTJCLENBQUMsQ0FBQTtvQkFDNUQsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxVQUFVLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTtvQkFDOUQsTUFBTSxZQUFZLEdBQUc7d0JBQ2pCLEVBQUUsRUFBRSxLQUFLO3dCQUNULEtBQUssRUFBRTs0QkFDSCxPQUFPLEVBQUUsa0hBQWtIO3lCQUM5SDtxQkFDSixDQUFDO29CQUNGLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxtQkFBbUIsR0FBRzs7d0JBQ3RCLElBQUksRUFBRSxHQUFHLE1BQU0sYUFBRSxDQUFDLFFBQVEsQ0FBQyxzRUFBc0UsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDM0csSUFBSSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsMkJBQTJCLEVBQUUsQ0FBQzt3QkFDdEQsSUFBSSxVQUFVLEdBQUcsRUFBRTs2QkFDZCxPQUFPLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzZCQUMxRCxPQUFPLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzZCQUMxRCxPQUFPLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7NkJBQ3hFLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7NkJBQ2hGLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO3dCQUNoRixrR0FBa0c7d0JBQ2xHLE9BQU8sVUFBVSxDQUFBO29CQUNyQixDQUFDO2lCQUFBLENBQUE7Z0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLEVBQUUsVUFBZ0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJOzt3QkFDbkUsSUFBSSxDQUFDOzRCQUNELFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxtQkFBbUIsRUFBRSxFQUFFLHdCQUF3QixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN6RixDQUFDO3dCQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7NEJBQ1gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUEsdUJBQVUsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUN4RCxDQUFDO29CQUNMLENBQUM7aUJBQUEsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLG9DQUFvQyxFQUFFLFVBQWdCLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTs7d0JBQ3RGLE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUN2QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2hELElBQUksQ0FBQzs0QkFDRCxNQUFNLE9BQU8sbUJBQ1QsTUFBTSxFQUFFLEdBQUcsUUFBUSxHQUFHLE1BQU0sc0JBQXNCLEVBQ2xELFlBQVksRUFBRSxHQUFHLFFBQVEsR0FBRyxNQUFNLE1BQU0sRUFDeEMsYUFBYSxFQUFFLDJCQUEyQixRQUFRLEdBQUcsTUFBTSxHQUFHLEVBQzlELE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQzdDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBeUIsQ0FBQyxDQUNqRCxDQUFBOzRCQUNELFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDL0UsQ0FBQzt3QkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDOzRCQUNYLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFBLHVCQUFVLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDeEQsQ0FBQztvQkFDTCxDQUFDO2lCQUFBLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxhQUFhLENBQUMsT0FBd0I7Z0JBQ2xDLE9BQU87b0JBQ0gsV0FBVyxFQUFFLFVBQVU7b0JBQ3ZCLFNBQVMsRUFBRSxZQUFZO29CQUN2QixhQUFhLEVBQUUsU0FBUztvQkFDeEIsa0JBQWtCLEVBQUUsU0FBUztpQkFDaEMsQ0FBQTtZQUNMLENBQUM7WUFDUSxpQkFBaUI7Z0JBQ3RCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDZCxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDMUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsVUFBZ0IsR0FBWSxFQUFFLEdBQWEsRUFBRSxLQUFtQjs7d0JBQzdGLFNBQVMsQ0FBQyxTQUFTLENBQUMsOEJBQThCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUN0RSxDQUFDO2lCQUFBLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBZ0IsR0FBWSxFQUFFLEdBQWE7O3dCQUM3RCxJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUNuQyxDQUFDLE1BQWlCLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQzs2QkFDbEYsZ0JBQWdCLEVBQUUsQ0FDOUIsQ0FBQzt3QkFDRixJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO3dCQUM1QixTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ2hELENBQUM7aUJBQUEsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxVQUFnQixHQUFZLEVBQUUsR0FBYTs7d0JBQ2pFLFNBQVMsQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDdkUsQ0FBQztpQkFBQSxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFVBQWdCLEdBQVksRUFBRSxHQUFhLEVBQUUsSUFBZ0I7O3dCQUN2RixJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDOzRCQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTs0QkFDMUQsT0FBTyxJQUFJLEVBQUUsQ0FBQzt3QkFDbEIsQ0FBQzt3QkFDRCxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDN0IsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQzNCLElBQUksSUFBSSxHQUFHLG1CQUFtQixDQUFBO3dCQUM5QixJQUFJLEtBQUssR0FBRyxNQUFNLGFBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ25DLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQWdCLFFBQWdCOztnQ0FDeEQsSUFBSSxRQUFRLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUM7Z0NBQ3JDLElBQUksSUFBSSxHQUFHLE1BQU0sYUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQ0FDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztvQ0FDaEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0NBQ3BDLENBQUM7NEJBQ0wsQ0FBQzt5QkFBQSxDQUFDLENBQUMsQ0FBQzt3QkFDSixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ2QsQ0FBQztpQkFBQSxDQUFDLENBQUE7WUFDTixDQUFDO1lBQ2MsVUFBVTs7Ozs7b0JBQ3JCLE1BQU0sT0FBTSxVQUFVLFdBQUUsQ0FBQztvQkFDekIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO29CQUNkLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0NBQWdDLEdBQUcsS0FBSyxDQUFDO29CQUNuRCxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFVBQWdCLE1BQWlCOzs0QkFDMUQsSUFBSSxTQUFTLEdBQUc7Ozs7Ozs7Ozs7O2FBV25CLENBQUM7NEJBQ0UsSUFBSSxPQUFPLEdBQUc7Z0NBQ1YsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRTtnQ0FDaEYsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFO2dDQUN0SCxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7aUJBT3RCLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRTtnQ0FDakIsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDOzs7Ozs7O2lCQU90QixDQUFDLENBQUMsZ0JBQWdCLEVBQUU7NkJBQ3BCLENBQUM7NEJBQ0YsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzs0QkFDekMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDOzRCQUNqRCxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7NEJBQy9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzs0QkFDL0MsdURBQXVEOzRCQUN2RCxxREFBcUQ7NEJBQ3JELHFEQUFxRDt3QkFDekQsQ0FBQztxQkFBQSxDQUFDLENBQUM7b0JBQ0gsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBQSxtQkFBVyxFQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO29CQUNwRCxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ25FLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUMzQixNQUFNLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQyxDQUFDO2FBQUE7WUFDRCxvR0FBb0c7WUFDcEcsa0dBQWtHO1lBQ2xHLGVBQWU7Z0JBQ1gsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFBLHlCQUFpQixFQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3RixDQUFDO1lBQ0QsdUZBQXVGO1lBQ3ZGLGdCQUFnQjtnQkFDWixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxJQUFJLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLEtBQUssR0FBYSxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQzdDLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUMzQyxJQUFJLE9BQU8sbUNBQWlCLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxHQUFFLENBQUM7b0JBQ3ZJLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUEsb0JBQVksRUFBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sSUFBQSx3QkFBZ0IsRUFDbkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFDdEUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUNsQyxLQUFLLENBQ1IsQ0FBQztZQUNOLENBQUM7WUFDUSxrQkFBa0I7Z0JBQ3ZCLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ1EsY0FBYyxDQUFDLEdBQVksRUFBRSxJQUFvQjtnQkFDdEQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNkLElBQUksUUFBUSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUN4QyxJQUFJLGVBQWUsR0FBNkIsUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDdkQsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtpQkFDNUcsQ0FBQyxDQUFDLENBQUM7b0JBQ0EsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtpQkFDdEcsQ0FBQztnQkFDRixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQzFCLGVBQWUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztnQkFDRCxJQUFJLGlCQUFpQixHQUE2QjtvQkFDOUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUU7b0JBQ2hGLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLDZCQUE2QixFQUFFO29CQUN4RixrSkFBa0o7b0JBQ2xKLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFO29CQUVqRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUU7b0JBQ3pFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFO29CQUNyRiwwRUFBMEU7b0JBQzFFLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxpQkFBaUIsQ0FBQzt5QkFDdEUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSTsyQkFDdkIsQ0FBQyxDQUFDLElBQUksSUFBSSxZQUFZOzJCQUN0QixDQUFDLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FDNUI7b0JBQ0wsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUU7b0JBQy9FLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7aUJBQ3BHLENBQUM7Z0JBQ0YsSUFBSSxTQUFTLEdBQTZCO29CQUN0QyxHQUFHLGlCQUFpQjtvQkFDcEIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDdEcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDdEcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUNuSCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQ2xILEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDOUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUM1RyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQ2pILEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDbkgsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUNsSCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQy9HLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDbEgsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUNqSCxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7b0JBQ3BILEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtvQkFDakgsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO29CQUNsSCxHQUFHLGVBQWU7b0JBQ2xCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7aUJBQ3ZHLENBQUE7Z0JBQ0QsT0FBTyxTQUFTLENBQUE7Z0JBQ2hCLHFEQUFxRDtZQUN6RCxDQUFDO1lBRUssYUFBYTtxRUFBQyxTQUEyQixJQUFJO29CQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7b0JBRTFELGlGQUFpRjtvQkFDakYsTUFBTSxjQUFjLEdBQUcsQ0FBTyxRQUFrQixFQUFFLEVBQUU7d0JBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNuSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFFMUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDOztTQUV0RSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBRVosSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDOztTQUV2RSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBRVosSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQy9JLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUV0SSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQzs7U0FFMUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUVaLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDOztTQUUzRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBRVosSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDOztTQUVwRSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQ3JCLENBQUMsQ0FBQSxDQUFDO29CQUVGLElBQUksTUFBTSxFQUFFLENBQUM7d0JBQ1QsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2pDLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQU8sUUFBUSxFQUFFLEVBQUU7NEJBQzNDLE1BQU0sY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNuQyxDQUFDLENBQUEsQ0FBQyxDQUFDO29CQUNQLENBQUM7b0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtvQkFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDN0IsQ0FBQzthQUFBO1lBQ0Qsc0NBQXNDO1lBQ3RDLGtCQUFrQjtZQUNsQiwwREFBMEQ7WUFDMUQsaUhBQWlIO1lBQ2pILDBDQUEwQztZQUMxQyxPQUFPO1lBQ0UsVUFBVSxDQUFDLEdBQVk7Z0JBQzVCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLHVDQUFZLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFLLGFBQWEsRUFBRztZQUMxRixDQUFDO1lBQ1EsaUJBQWlCO2dCQUN0QixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDOUMsdUJBQVMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSyxhQUFhLEVBQUc7WUFDdkYsQ0FBQztZQUNjLCtCQUErQixDQUFDLEdBQVk7Ozs7OztvQkFDdkQsdUNBQ08sQ0FBQyxNQUFNLE9BQU0sK0JBQStCLFlBQUMsR0FBRyxDQUFDLENBQUMsS0FDckQsS0FBSyxFQUFFLE1BQUEsR0FBRyxDQUFDLElBQUksMENBQUUsS0FBSyxJQUN6QjtnQkFDTCxDQUFDO2FBQUE7WUFDSywyQkFBMkI7O29CQUM3QixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7b0JBQ2QsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUE7b0JBQ3RDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUVyRSxJQUFJLFVBQVUsR0FBRzt3QkFDYixPQUFPLEVBQUUsY0FBYzt3QkFDdkIsT0FBTyxFQUFFLFFBQVE7d0JBQ2pCLEtBQUssRUFBRTs0QkFDSCxPQUFPOzRCQUNQLFNBQVM7NEJBQ1QsaUJBQWlCOzRCQUNqQiw2QkFBNkI7NEJBQzdCLGlDQUFpQzs0QkFDakMsbUNBQW1DOzRCQUNuQyxrQkFBa0I7NEJBQ2xCLHdCQUF3Qjs0QkFDeEIsa0JBQWtCOzRCQUNsQixvQkFBb0I7NEJBQ3BCLG1CQUFtQjs0QkFDbkIsZ0JBQWdCOzRCQUNoQixxQkFBcUI7NEJBQ3JCLGlCQUFpQjs0QkFDakIsbUJBQW1COzRCQUNuQiw0QkFBNEI7NEJBQzVCLGlCQUFpQjs0QkFDakIsb0JBQW9COzRCQUNwQix3QkFBd0I7NEJBQ3hCLHFCQUFxQjs0QkFDckIsNkJBQTZCOzRCQUM3QixrQkFBa0I7NEJBQ2xCLGtCQUFrQjs0QkFDbEIsa0NBQWtDOzRCQUNsQyxzQkFBc0I7NEJBQ3RCLG9CQUFvQjs0QkFDcEIsc0JBQXNCOzRCQUN0QixZQUFZOzRCQUNaLG1CQUFtQjs0QkFDbkIsdUJBQXVCOzRCQUN2QiwwQkFBMEI7NEJBQzFCLFlBQVk7NEJBQ1osYUFBYTs0QkFDYixtQkFBbUI7NEJBQ25CLG9CQUFvQjs0QkFDcEIsdUJBQXVCOzRCQUN2Qix3QkFBd0I7NEJBQ3hCLGtCQUFrQjs0QkFDbEIsa0JBQWtCOzRCQUNsQiw2QkFBNkI7NEJBQzdCLGdCQUFnQjs0QkFDaEIsZ0JBQWdCOzRCQUNoQiw4QkFBOEI7NEJBQzlCLDZCQUE2Qjs0QkFDN0IsNEJBQTRCOzRCQUM1Qiw4QkFBOEI7NEJBQzlCLDBCQUEwQjs0QkFDMUIsa0NBQWtDOzRCQUNsQyw0QkFBNEI7NEJBQzVCLDZCQUE2Qjs0QkFDN0IsaUNBQWlDOzRCQUNqQyxpQ0FBaUM7NEJBQ2pDLGlCQUFpQjs0QkFDakIseUJBQXlCOzRCQUN6Qix1QkFBdUI7NEJBQ3ZCLDhCQUE4Qjs0QkFDOUIsOEJBQThCOzRCQUM5Qiw2QkFBNkI7NEJBQzdCLDZCQUE2Qjs0QkFDN0IsNEJBQTRCOzRCQUM1QiwwQkFBMEI7NEJBQzFCLDZCQUE2Qjs0QkFDN0IsNEJBQTRCOzRCQUM1QixpQ0FBaUM7NEJBQ2pDLGdCQUFnQjs0QkFDaEIsY0FBYzs0QkFDZCxvQkFBb0I7NEJBQ3BCLGtCQUFrQjs0QkFDbEIsc0JBQXNCOzRCQUN0QixzQkFBc0I7NEJBQ3RCLDhCQUE4Qjs0QkFDOUIsd0JBQXdCOzRCQUN4Qix5QkFBeUI7NEJBQ3pCLGlCQUFpQjs0QkFDakIsdUJBQXVCOzRCQUN2QiwwQkFBMEI7NEJBQzFCLHFCQUFxQjs0QkFDckIsbUNBQW1DOzRCQUNuQyxxQkFBcUI7NEJBQ3JCLG1CQUFtQjs0QkFDbkIsaUJBQWlCOzRCQUNqQixtQkFBbUI7NEJBQ25CLGNBQWM7NEJBQ2Qsd0JBQXdCOzRCQUN4QiwwQkFBMEI7NEJBQzFCLHdCQUF3Qjs0QkFDeEIsbUNBQW1DO3lCQUN0Qzt3QkFDRCxTQUFTLEVBQUM7NEJBQ04sRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFDLGlCQUFpQixFQUFDO3lCQUN2RDt3QkFDRCxlQUFlLEVBQUUsU0FBUztxQkFDN0IsQ0FBQztvQkFDRixVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFFdEgsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQzFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDN0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQzt3QkFDekIsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLDBCQUEwQixDQUFDLENBQUM7d0JBQ3pELGtEQUFrRDt3QkFDbEQsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsWUFBWTs0QkFDekUsaUVBQWlFOzRCQUNqRSwyREFBMkQ7NEJBQzNELE9BQU8sT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUM3RCxDQUFDLENBQUMsQ0FBQzt3QkFFSCxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUM5RCxDQUFDO29CQUNELE9BQU8sVUFBVSxDQUFBO2dCQUNyQixDQUFDO2FBQUE7WUFDRCxnQkFBZ0IsQ0FBQyxRQUFpQjtnQkFDOUIsT0FBTztvQkFDSCxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFLEtBQUssRUFBRSxpQ0FBaUMsRUFBRTtvQkFDckcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRTtvQkFDekYsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFO29CQUN0RSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7b0JBQ2hFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRTtvQkFDcEUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFO2lCQUNuRSxDQUFBO1lBQ0wsQ0FBQztZQUFBLENBQUM7WUFDRixhQUFhLENBQUMsT0FBZ0I7O2dCQUMxQixJQUFJLGFBQWEsR0FBbUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO2dCQUM1RixJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLE1BQU0sRUFBRSxDQUFDO29CQUMvQixhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQTtnQkFDbEgsQ0FBQztnQkFDRCxJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLFdBQVcsRUFBRSxDQUFDO29CQUNwQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxFQUFFLDhCQUE4QixFQUFFLENBQUMsQ0FBQztvQkFDakgsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGtDQUFrQyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7b0JBQ2hILGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSwrQkFBK0IsRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsQ0FBQyxDQUFDO29CQUN4SCxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLHdDQUF3QyxFQUFFLENBQUMsQ0FBQztvQkFDakksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7b0JBQzlGLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRSxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxSCxDQUFDO2dCQUNELElBQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFNBQVMsMENBQUUsUUFBUSxFQUFFLENBQUM7b0JBQ3JDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7Z0JBQzdFLENBQUM7Z0JBQ0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLENBQUE7WUFDM0UsQ0FBQztZQUNELGlCQUFpQixDQUFDLE9BQWdCOztnQkFDOUIsSUFBSSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0csSUFBSSxpQkFBaUIsR0FBbUIsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLFdBQVcsRUFBRSxDQUFDO29CQUNwQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLENBQUMsQ0FBQztnQkFDdEcsQ0FBQztnQkFDRCxpQkFBaUIsQ0FBQyxJQUFJLENBQ2xCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxrQkFBSSxLQUFLLEVBQUUsTUFBTSxJQUFLLG1CQUFtQixDQUFFLEVBQUUsRUFDaEgsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxFQUFFLGtCQUFJLEtBQUssRUFBRSxNQUFNLElBQUssbUJBQW1CLENBQUUsRUFBRSxFQUMvRyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsNEJBQTRCLEVBQUUsRUFBRSxrQkFBSSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUssbUJBQW1CLENBQUUsRUFBRSxDQUN2SixDQUFDO2dCQUNGLElBQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsV0FBVyxFQUFFLENBQUM7b0JBQ3BDLGlCQUFpQixDQUFDLElBQUksQ0FDbEIsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFLEVBQUUsa0JBQUksWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFLLG1CQUFtQixDQUFFLEVBQUUsQ0FDdEosQ0FBQztnQkFDTixDQUFDO2dCQUFBLENBQUM7Z0JBQ0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxDQUFBO1lBQ3hHLENBQUM7WUFDRCxnQkFBZ0IsQ0FBQyxPQUFnQjs7Z0JBQzdCLElBQUksZ0JBQWdCLEdBQW1CLEVBQUUsQ0FBQTtnQkFDekMsZ0JBQWdCLENBQUMsSUFBSSxDQUNqQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUUsRUFDNUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLEVBQzVFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxDQUM3RSxDQUFDO2dCQUNGLElBQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsV0FBVyxFQUFFLENBQUM7b0JBQ3BDLGdCQUFnQixDQUFDLElBQUksQ0FDakIsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLEVBQzFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFLENBQ3ZGLENBQUM7Z0JBQ04sQ0FBQztnQkFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLENBQUE7WUFDckcsQ0FBQztZQUVELFlBQVksQ0FBQyxPQUFnQjs7Z0JBQ3pCLElBQUksWUFBWSxHQUFtQixFQUFFLENBQUE7Z0JBQ3JDLElBQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsV0FBVyxFQUFFLENBQUM7b0JBQ3BDLFlBQVksQ0FBQyxJQUFJLENBQ2IsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUN4RCxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQ3hELEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFDOUQsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUN0RCxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQzdELENBQUE7b0JBQ0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsQ0FBQTtnQkFDL0YsQ0FBQztnQkFDRCxPQUFPLElBQUksQ0FBQTtZQUNmLENBQUM7WUFFRCxpQkFBaUIsQ0FBQyxPQUFnQjs7Z0JBQzlCLE1BQU0sY0FBYyxHQUFtQixFQUFFLENBQUM7Z0JBRTFDLElBQUksQ0FBQSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSywwQ0FBRSxXQUFXLE1BQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFNBQVMsMENBQUUsUUFBUSxDQUFBLEVBQUUsQ0FBQztvQkFDMUUsTUFBTSxjQUFjLEdBQW1CO3dCQUNuQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO3dCQUNoRCxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRTt3QkFDdkUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7d0JBQ3RDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7cUJBQ25ELENBQUM7b0JBQ0YsY0FBYyxDQUFDLElBQUksQ0FBQzt3QkFDaEIsUUFBUSxFQUFFLE1BQU07d0JBQ2hCLElBQUksRUFBRSxTQUFTO3dCQUNmLEtBQUssRUFBRSxTQUFTO3dCQUNoQixXQUFXLEVBQUUsY0FBYztxQkFDOUIsQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBRUQsSUFBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsZ0JBQWdCLDBDQUFFLE1BQU0sRUFBRSxDQUFDO29CQUMxQyxjQUFjLENBQUMsSUFBSSxDQUFDO3dCQUNoQixRQUFRLEVBQUUsTUFBTTt3QkFDaEIsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLFdBQVcsRUFBRTs0QkFDVCxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTs0QkFDekMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFDO29DQUMvQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtvQ0FDbEMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0NBQ3JDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO29DQUN0QyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTtpQ0FDNUMsRUFBQzs0QkFDRixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7NEJBQzNFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7NEJBQ3pELEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7NEJBQzlILEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRTs0QkFDOUQsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFO3lCQUM3RTtxQkFDSixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDcEIsY0FBYyxDQUFDLElBQUksQ0FDZjt3QkFDSSxRQUFRLEVBQUUsTUFBTTt3QkFDaEIsSUFBSSxFQUFFLHlCQUF5Qjt3QkFDL0IsS0FBSyxFQUFFLHlCQUF5Qjt3QkFDaEMsV0FBVyxFQUFFOzRCQUNULEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFOzRCQUNyQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTs0QkFDdEMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7NEJBQ3ZDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7NEJBQy9DLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7eUJBQ2pEO3FCQUNKLEVBQ0QsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxFQUNwRCxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUN6QyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUMxQyxDQUFDO2dCQUNOLENBQUM7Z0JBRUQsSUFBSSxDQUFBLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLFdBQVcsTUFBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsU0FBUywwQ0FBRSxRQUFRLENBQUEsRUFBRSxDQUFDO29CQUMxRSxjQUFjLENBQUMsSUFBSSxDQUFDO3dCQUNoQixRQUFRLEVBQUUsTUFBTTt3QkFDaEIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLFdBQVcsRUFBRTs0QkFDVCxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUU7NEJBQ2hFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFOzRCQUNwQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs0QkFDdkMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTt5QkFDaEQ7cUJBQ0osQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBRUQsT0FBTyxjQUFjLENBQUM7WUFDMUIsQ0FBQztZQUVELG1IQUFtSDtZQUNuSCxrSEFBa0g7WUFDbEgsbUdBQW1HO1lBQ25HLGtJQUFrSTtZQUNsSSxvRkFBb0Y7WUFDM0UsT0FBTyxDQUFDLE9BQWlCOztnQkFDOUIsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkVBQTZFLENBQUMsQ0FBQztnQkFDbkcsQ0FBQztnQkFDRCxJQUFJLElBQUksR0FBbUIsRUFBRSxDQUFDO2dCQUM5QixJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssY0FBYyxFQUFFLENBQUM7b0JBQ2pELElBQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFNBQVMsMENBQUUsT0FBTyxFQUFFLENBQUM7d0JBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7d0JBQ3JFLElBQUksQ0FBQyxJQUFJLENBQ0wsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUNuRCxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQ3hELENBQUM7b0JBQ04sQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSywwQ0FBRSxNQUFNLEVBQUUsQ0FBQzt3QkFDL0IsSUFBSSxDQUFDLElBQUksQ0FDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FDakMsQ0FBQzt3QkFDRixJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLFdBQVcsRUFBRSxDQUFDOzRCQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQTs0QkFDNUYsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7d0JBQ25HLENBQUM7d0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FDTDs0QkFDSSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUU7Z0NBQ3RFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFOzZCQUM5SDt5QkFDSixDQUNKLENBQUE7b0JBQ0wsQ0FBQztvQkFDRCxJQUFJLENBQUEsTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsTUFBTSxNQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLFdBQVcsQ0FBQSxLQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxTQUFTLDBDQUFFLFFBQVEsQ0FBQSxFQUFFLENBQUM7d0JBQzFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUMzQyxDQUFDO29CQUNELElBQUksQ0FBQSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSywwQ0FBRSxXQUFXLE1BQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFNBQVMsMENBQUUsUUFBUSxDQUFBLEVBQUUsQ0FBQzt3QkFDMUUsSUFBSSxDQUFDLElBQUksQ0FDTCxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDeEYsNEZBQTRGO29CQUVoRyxDQUFDO29CQUNELElBQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFNBQVMsMENBQUUsUUFBUSxFQUFFLENBQUM7d0JBQ3JDLElBQUksQ0FBQyxJQUFJLENBQ0w7NEJBQ0ksUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTtnQ0FDN0MsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0NBQ3hDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dDQUMzTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQ0FDNUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtnQ0FDckcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtnQ0FDOUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7Z0NBQzFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7Z0NBQ2pFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTs2QkFDOUU7eUJBQ0osQ0FDSixDQUFDO29CQUNOLENBQUM7b0JBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN2RCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztvQkFDckYsQ0FBQztvQkFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM3QyxJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3pCLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLElBQUEscUJBQWEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztnQkFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDcEIsQ0FBQztZQUNRLGdCQUFnQjtnQkFDckIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNkLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsa0JBQWtCLG1DQUNoQixJQUFJLENBQUMsa0JBQWtCLEtBQ3hCLEtBQUssRUFBTCxtQkFBSztvQkFDTCxRQUFRLEVBQVIseUJBQVE7b0JBQ1IsUUFBUSxFQUFSLHlCQUFRO29CQUNSLGNBQWMsRUFBZCxxQ0FBYztvQkFDZCx1QkFBdUIsRUFBdkIsNkNBQXVCO29CQUN2QixzQkFBc0IsRUFBdEIsNENBQXNCO29CQUN0Qix1QkFBdUIsRUFBdkIsNkNBQXVCO29CQUN2QixzQkFBc0IsRUFBdEIsNENBQXNCO29CQUN0QiwwQkFBMEIsRUFBMUIsZ0RBQTBCO29CQUMxQixpQkFBaUIsRUFBakIsMkNBQWlCO29CQUNqQixhQUFhLEVBQWIsbUNBQWE7b0JBQ2IsWUFBWSxFQUFaLGlDQUFZO29CQUNaLFlBQVksRUFBWixpQ0FBWTtvQkFDWixRQUFRLEVBQVIseUJBQVE7b0JBQ1IsY0FBYyxFQUFkLHFDQUFjO29CQUNkLGtCQUFrQixFQUFsQiw2Q0FBa0I7b0JBQ2xCLE1BQU0sRUFBTixxQkFBTTtvQkFDTixVQUFVLEVBQVYsNkJBQVU7b0JBQ1YsR0FBRyxFQUFILGVBQUc7b0JBQ0gsT0FBTyxFQUFQLHVCQUFPO29CQUNQLE9BQU8sRUFBUCx1QkFBTztvQkFDUCxPQUFPLEVBQVAsdUJBQU87b0JBQ1AsUUFBUSxFQUFSLHlCQUFRO29CQUNSLGdCQUFnQixFQUFoQix5Q0FBZ0I7b0JBQ2hCLGVBQWUsRUFBZix1Q0FBZTtvQkFDZixHQUFHLEVBQUgsZUFBRztvQkFDSCxhQUFhLEVBQWIsbUNBQWE7b0JBQ2IsUUFBUSxFQUFSLHlCQUFRO29CQUNSLFVBQVUsRUFBViw2QkFBVTtvQkFDVixXQUFXLEVBQVgsK0JBQVc7b0JBQ1gsT0FBTyxFQUFQLHVCQUFPO29CQUNQLEtBQUssRUFBTCxtQkFBSztvQkFDTCxnQkFBZ0IsRUFBaEIseUNBQWdCO29CQUNoQixNQUFNLEVBQU4scUJBQU07b0JBQ04sVUFBVSxFQUFWLDZCQUFVO29CQUNWLDBCQUEwQixFQUExQiw2Q0FBMEI7b0JBQzFCLDBCQUEwQixFQUExQiw2Q0FBMEI7b0JBQzFCLDBCQUEwQixFQUExQiw2Q0FBMEI7b0JBQzFCLDBCQUEwQixFQUExQiw2Q0FBMEI7b0JBQzFCLFlBQVksRUFBWixpQ0FBWTtvQkFDWix3QkFBd0IsRUFBeEIseURBQXdCO29CQUN4QixnQkFBZ0IsRUFBaEIseUNBQWdCO29CQUNoQixZQUFZLEVBQVosaUNBQVk7b0JBQ1osWUFBWSxFQUFaLGlDQUFZO29CQUNaLFlBQVksRUFBWixpQ0FBWTtvQkFDWixZQUFZLEVBQVosaUNBQVk7b0JBQ1osVUFBVSxFQUFWLDZCQUFVO29CQUNWLGNBQWMsRUFBZCxxQ0FBYztvQkFDZCxvQkFBb0IsRUFBcEIsaURBQW9CO29CQUNwQixrQkFBa0IsRUFBbEIsNkNBQWtCO29CQUNsQixvQkFBb0IsRUFBcEIsaURBQW9CO29CQUNwQix3QkFBd0IsRUFBeEIseURBQXdCO29CQUN4Qix5QkFBeUIsRUFBekIsMkRBQXlCO29CQUN6QixnQkFBZ0IsRUFBaEIseUNBQWdCO29CQUNoQixhQUFhLEVBQWIsbUNBQWE7b0JBQ2IsZUFBZSxFQUFmLHVDQUFlLEVBQ2Ysa0JBQWtCLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFBLG1DQUFhLEVBQUMsT0FBTyxFQUNsRCxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsbUNBQW1DLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FDcE8sRUFDQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUEsbUNBQWEsRUFBQyxPQUFPLEVBQ3BELEVBQUUsTUFBTSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxxQ0FBcUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQy9RLEVBQ0Msa0JBQWtCLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFBLG1DQUFhLEVBQUMsT0FBTyxFQUNsRCxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUNuVyxFQUNDLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBQSxtQ0FBYSxFQUFDLE9BQU8sRUFDM0QsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUNqTixFQUNDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBQSxtQ0FBYSxFQUFDLE9BQU8sRUFDckQsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUN0TSxFQUNDLGtCQUFrQixFQUFsQiw2Q0FBa0I7b0JBQ2xCLFNBQVMsRUFBVCwyQkFBUztvQkFDVCxPQUFPLEVBQVAsdUJBQU87b0JBQ1AsT0FBTyxFQUFQLHVCQUFPO29CQUNQLFFBQVEsRUFBUix5QkFBUTtvQkFDUixXQUFXLEVBQVgsK0JBQVc7b0JBQ1gsV0FBVyxFQUFYLCtCQUFXO29CQUNYLFlBQVksRUFBWixpQ0FBWTtvQkFDWixXQUFXLEVBQVgsK0JBQVc7b0JBQ1gsTUFBTSxFQUFOLHFCQUFNO29CQUNOLE1BQU0sRUFBTixxQkFBTTtvQkFDTixpQ0FBaUMsRUFBakMsMkVBQWlDO29CQUNqQyxZQUFZLEVBQVosaUNBQVk7b0JBQ1osT0FBTyxFQUFQLHVCQUFPO29CQUNQLFVBQVUsRUFBViw2QkFBVTtvQkFDVixNQUFNLEVBQU4scUJBQU07b0JBQ04sUUFBUSxFQUFSLHlCQUFRO29CQUNSLGlCQUFpQixFQUFqQiwyQ0FBaUIsR0FDdEIsQ0FBQTtnQkFDRCxFQUFFLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLFVBQVUsUUFBUSxFQUFFLE9BQU87O29CQUNuRSxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEtBQUksTUFBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLDBDQUFFLFNBQVMsMENBQUUsUUFBUSxDQUFBLENBQUM7b0JBQzdFLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSzt3QkFDbkMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLG1CQUFtQixFQUFFLENBQUM7NEJBQ3BDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dDQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7NEJBQzlFLENBQUM7NEJBQ0QsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ3pCLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUE7Z0JBQ04sQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsRUFBRSxDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixFQUFFLFVBQVUsUUFBUSxFQUFFLE9BQU87O29CQUNyRSxRQUFRLENBQUMsR0FBRyxtQ0FBUSxRQUFRLENBQUMsR0FBRyxLQUFFLE9BQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztvQkFDbEQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDdkIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUN2RCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQ3RELEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFDeEQsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUMxRCxDQUFDO29CQUNGLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsS0FBSSxNQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssMENBQUUsU0FBUywwQ0FBRSxVQUFVLENBQUEsQ0FBQztvQkFDL0UsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLOzt3QkFDbkMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLGNBQWMsRUFBRSxDQUFDOzRCQUMvQixLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzt3QkFDMUIsQ0FBQzt3QkFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksZUFBZSxFQUFFLENBQUM7NEJBQ2hDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTyxNQUFJLE1BQUEsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSywwQ0FBRSxTQUFTLDBDQUFFLFVBQVUsQ0FBQSxDQUFDO3dCQUMvRSxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFBO29CQUNGLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7d0JBQ2pGLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUE7b0JBQzFFLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ0gsMkJBQTJCO29CQUMzQixNQUFNLGdCQUFnQixHQUFHLElBQUksTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7b0JBQ3BFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBRS9FLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFBO29CQUNwQyxRQUFRLENBQUMsR0FBSSxDQUFDLElBQUksR0FBRzs7eUJBRVosV0FBVzs7Ozs7Ozs7Ozs7YUFXdkIsQ0FBQTtnQkFDRCxDQUFDLENBQUMsQ0FBQTtnQkFDRixFQUFFLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLFVBQVUsUUFBUSxFQUFFLE9BQU87b0JBQ2hFLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7d0JBQ3pCLElBQUksRUFBRSxlQUFlO3dCQUNyQixRQUFRLEVBQUUsT0FBTzt3QkFDakIsUUFBUSxFQUFFLEtBQUs7cUJBQ2xCLEVBQUU7d0JBQ0MsSUFBSSxFQUFFLCtCQUErQjt3QkFDckMsUUFBUSxFQUFFLE9BQU87d0JBQ2pCLFFBQVEsRUFBRSxLQUFLO3FCQUNsQixFQUFFO3dCQUNDLElBQUksRUFBRSxpQkFBaUI7d0JBQ3ZCLFFBQVEsRUFBRSxTQUFTO3dCQUNuQixZQUFZLEVBQUUsS0FBSzt3QkFDbkIsUUFBUSxFQUFFLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE9BQU8sS0FBSSxPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO3FCQUMxRyxFQUFFO3dCQUNDLElBQUksRUFBRSxlQUFlO3dCQUNyQixRQUFRLEVBQUUsU0FBUzt3QkFDbkIsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsY0FBYyxFQUFFLE1BQU07cUJBQ3pCLEVBQUU7d0JBQ0MsSUFBSSxFQUFFLHlCQUF5Qjt3QkFDL0IsUUFBUSxFQUFFLFNBQVM7d0JBQ25CLFFBQVEsRUFBRSxLQUFLO3dCQUNmLGNBQWMsRUFBRSxPQUFPO3FCQUMxQixDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxVQUFVLFFBQVEsRUFBRSxPQUFPOztvQkFDL0QsSUFBSSxPQUFPLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsSUFBSSxDQUFDLEdBQUcsTUFBSyxPQUFPLENBQUM7b0JBQzVDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsS0FBSSxNQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssMENBQUUsU0FBUywwQ0FBRSxRQUFRLENBQUEsQ0FBQztvQkFDN0UsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsRUFBRSxDQUFDLHVCQUF1QixDQUFDLHVCQUF1QixFQUFFLFVBQVUsUUFBUSxFQUFFLFFBQVE7b0JBQzVFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNoQixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FDbkYsQ0FBQTtnQkFDTCxDQUFDLENBQUMsQ0FBQTtnQkFFRixFQUFFLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLFVBQVUsUUFBUTtvQkFDdkQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsQ0FDM0csQ0FBQztvQkFDRixRQUFRLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO29CQUNsRCxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDckIsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQ3pGLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQUE7WUFDTixDQUFDO1NBQ0osQ0FBQTtJQUNMLENBQUM7SUFFVSxRQUFBLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBQSxzQ0FBc0IsRUFBQyxJQUFBLHNDQUFzQixFQUFDLElBQUEsK0JBQWUsRUFBQyxJQUFBLGlDQUFpQixFQUFDLElBQUEsbUNBQW1CLEVBQUMsMEJBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0ICogYXMgcHJvY2VzYW1pZW50byBmcm9tIFwicHJvY2VzYW1pZW50b1wiO1xyXG5pbXBvcnQgeyBlbWVyZ2VBcHBQcm9jZXNhbWllbnRvLCBlbWVyZ2VBcHBDb25zaXN0ZW5jaWFzLCBlbWVyZ2VBcHBWYXJDYWwsIGVtZXJnZUFwcERhdG9zRXh0LCBlbWVyZ2VBcHBPcGVyYXRpdm9zLCBBcHBCYWNrZW5kLCBDbGllbnRNb2R1bGVEZWZpbml0aW9uLCBPcHRzQ2xpZW50UGFnZSB9IGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7IHBhc2FyRW5jdWVzdGFzQVByb2llLCBQcm9jZWR1cmVzRG1FbmN1IH0gZnJvbSBcIi4vcHJvY2VkdXJlcy1kbWVuY3VcIjtcclxuaW1wb3J0IHsgY2FyZ2FyQXl1ZGEsIGNhcnBldGFEZWxQYXF1ZXRlLCBwcm9ibGVtYXNEZUF5dWRhLCBRdWllbkNvbnN1bHRhQXl1ZGEsIHJ1dGFzRGVsTWVudSwgdGVtYXNWaXNpYmxlcyB9IGZyb20gXCIuL2F5dWRhXCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwZyBmcm9tIFwicGctcHJvbWlzZS1zdHJpY3RcIjtcclxuaW1wb3J0ICogYXMgbWluaVRvb2xzIGZyb20gXCJtaW5pLXRvb2xzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBBeXVkYUZ1ZW50ZSxcclxuICAgIENsaWVudCwgQ29udGV4dCwgQ29yZUZ1bmN0aW9uUGFyYW1ldGVycyxcclxuICAgIE1lbnVJbmZvQmFzZSxcclxuICAgIFB1ZWRlLFxyXG4gICAgUmVxdWVzdCwgUmVzcG9uc2UsXHJcbiAgICBTdWZpam9zQW1iaWVudGUsXHJcbn0gZnJvbSBcIi4vdHlwZXMtZG1lbmN1XCI7XHJcblxyXG5pbXBvcnQgeyBleHBlY3RlZCwgdW5leHBlY3RlZCB9IGZyb20gXCJjYXN0LWVycm9yXCI7XHJcblxyXG5pbXBvcnQgKiBhcyB5YXpsIGZyb20gXCJ5YXpsXCI7XHJcbmltcG9ydCB7IE5leHRGdW5jdGlvbiB9IGZyb20gXCJleHByZXNzLXNlcnZlLXN0YXRpYy1jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGV4cHJlc3MgZnJvbSBcImV4cHJlc3NcIjtcclxuXHJcbmltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSBcImZzXCI7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcclxuXHJcbmltcG9ydCB7IHJvbGVzIH0gZnJvbSBcIi4vdGFibGUtcm9sZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWwgfSBmcm9tIFwiLi90YWJsZS1wZXJzb25hbFwiO1xyXG5pbXBvcnQgeyByZWNlcGNpb25pc3RhcyB9IGZyb20gXCIuL3RhYmxlLXJlY2VwY2lvbmlzdGFzXCI7XHJcbmltcG9ydCB7IGVuY3Vlc3RhZG9yZXNfYXNpZ25hZG9zLCBpbmdyZXNhZG9yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyByZWN1cGVyYWRvcmVzX2FzaWduYWRvcyB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgc3VwZXJ2aXNvcmVzX2FzaWduYWRvcyB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgbWlzX3N1cGVydmlzb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IG1pc19lbmN1ZXN0YWRvcmVzIH0gZnJvbSBcIi4vdGFibGUtbWlzX2VuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgcmVjdXBlcmFkb3JlcyB9IGZyb20gXCIuL3RhYmxlLXJlY3VwZXJhZG9yZXNcIjtcclxuaW1wb3J0IHsgc3VwZXJ2aXNvcmVzIH0gZnJvbSBcIi4vdGFibGUtc3VwZXJ2aXNvcmVzXCI7XHJcbmltcG9ydCB7IHBlcnNvbmFsX3JvbCB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsX3JvbFwiO1xyXG5pbXBvcnQgeyBwZXJtaXNvcyB9IGZyb20gXCIuL3RhYmxlLXBlcm1pc29zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3Blcm1pc29zIH0gZnJvbSBcIi4vdGFibGUtcm9sZXNfcGVybWlzb3NcIjtcclxuaW1wb3J0IHsgbW9kb3NfZG0gfSBmcm9tIFwiLi90YWJsZS1tb2Rvc19kbVwiO1xyXG5pbXBvcnQgeyBwYXJhbWV0cm9zIH0gZnJvbSBcIi4vdGFibGUtcGFyYW1ldHJvc1wiO1xyXG5pbXBvcnQgeyByb2xlc19zdWJvcmRpbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19zdWJvcmRpbmFkb3NcIjtcclxuXHJcbmltcG9ydCB7IG5vX3JlYSB9IGZyb20gXCIuL3RhYmxlLW5vX3JlYVwiO1xyXG5pbXBvcnQgeyBub19yZWFfc3VwIH0gZnJvbSBcIi4vdGFibGUtbm9fcmVhX3N1cFwiO1xyXG5pbXBvcnQgeyByZWEgfSBmcm9tIFwiLi90YWJsZS1yZWFcIjtcclxuaW1wb3J0IHsgcmVhX3N1cCB9IGZyb20gXCIuL3RhYmxlLXJlYV9zdXBcIjtcclxuaW1wb3J0IHsgdGVtIH0gZnJvbSBcIi4vdGFibGUtdGVtXCI7XHJcbmltcG9ydCB7IHNlbWFuYXMgfSBmcm9tIFwiLi90YWJsZS1zZW1hbmFzXCI7XHJcbmltcG9ydCB7IHVzdWFyaW9zIH0gZnJvbSAnLi90YWJsZS11c3Vhcmlvcyc7XHJcbmltcG9ydCB7IG9wZXJhY2lvbmVzIH0gZnJvbSAnLi90YWJsZS1vcGVyYWNpb25lcyc7XHJcbmltcG9ydCB7IGNvbXVuYXMgfSBmcm9tICcuL3RhYmxlLWNvbXVuYXMnO1xyXG5pbXBvcnQgeyBhcmVhcyB9IGZyb20gJy4vdGFibGUtYXJlYXMnO1xyXG5pbXBvcnQgeyBzaW5jcm9uaXphY2lvbmVzIH0gZnJvbSAnLi90YWJsZS1zaW5jcm9uaXphY2lvbmVzJztcclxuaW1wb3J0IHsgdGFyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXMnO1xyXG5pbXBvcnQge1xyXG4gICAgdGFyZWFzX3RlbSxcclxuICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9lbmN1LFxyXG4gICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3JlY3UsXHJcbiAgICB0YXJlYXNfdGVtX2FzaWduYWNpb25fc3VwZSxcclxuICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9pbmdyXHJcbn0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtJztcclxuaW1wb3J0IHsgdGFyZWFzX2FyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyBhcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwgfSBmcm9tICcuL3RhYmxlLWFyZWFzX2FzaWduYWNpb25fZ2VuZXJhbCc7XHJcbmltcG9ydCB7IGdyaWxsYV9ob2phX3J1dGEgfSBmcm9tICcuL3RhYmxlLWdyaWxsYV9ob2phX3J1dGEnO1xyXG5pbXBvcnQgeyB0X2VuY3VfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IHRfcmVjdV9hcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9zdXBlX2FyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyB0X2luZ3JfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IG1pc190YXJlYXMgfSBmcm9tICcuL3RhYmxlLW1pc190YXJlYXMnO1xyXG5pbXBvcnQgeyB0ZW1fYXNpZ25hY2lvbiB9IGZyb20gJy4vdGFibGUtdGVtX2FzaWduYWNpb24nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX3JlY2VwY2lvbiB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9yZWNlcGNpb24nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX2luZ3Jlc28gfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1faW5ncmVzbyc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fZmluX2NhbXBvIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX2Zpbl9jYW1wbyc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fcHJvY2VzYW1pZW50byB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wbyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wbyc7XHJcbmltcG9ydCB7IG1pc190YXJlYXNfYXJlYXMgfSBmcm9tICcuL3RhYmxlLW1pc190YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyBjb250cm9sX2NhbXBvIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX2NhbXBvJztcclxuaW1wb3J0IHsgY29udHJvbF9yZXN1bWVuIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX3Jlc3VtZW4nO1xyXG5pbXBvcnQgeyBjb250cm9sX2RpYXNfY2FyZ2EgfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfZGlhc19jYXJnYSc7XHJcbmltcG9ydCB7IHZpdmllbmRhcyB9IGZyb20gJy4vdGFibGUtdml2aWVuZGFzJztcclxuaW1wb3J0IHsgdmlzaXRhcyB9IGZyb20gJy4vdGFibGUtdmlzaXRhcyc7XHJcbmltcG9ydCB7IGhvZ2FyZXMgfSBmcm9tICcuL3RhYmxlLWhvZ2FyZXMnO1xyXG5pbXBvcnQgeyBwZXJzb25hcyB9IGZyb20gJy4vdGFibGUtcGVyc29uYXMnO1xyXG5pbXBvcnQgeyB2aXNpdGFzX3N1cCB9IGZyb20gJy4vdGFibGUtdmlzaXRhc19zdXAnO1xyXG5pbXBvcnQgeyBob2dhcmVzX3N1cCB9IGZyb20gJy4vdGFibGUtaG9nYXJlc19zdXAnO1xyXG5pbXBvcnQgeyBwZXJzb25hc19zdXAgfSBmcm9tICcuL3RhYmxlLXBlcnNvbmFzX3N1cCc7XHJcbmltcG9ydCB7IGRpY2Npb25hcmlvIH0gZnJvbSAnLi90YWJsZS1kaWNjaW9uYXJpbyc7XHJcbmltcG9ydCB7IGRpY3RyYSB9IGZyb20gJy4vdGFibGUtZGljdHJhJztcclxuaW1wb3J0IHsgZGljdmFyIH0gZnJvbSAnLi90YWJsZS1kaWN2YXInO1xyXG5cclxuaW1wb3J0IHsgZXN0YWRvcyB9IGZyb20gJy4vdGFibGUtZXN0YWRvcyc7XHJcbmltcG9ydCB7IGFjY2lvbmVzIH0gZnJvbSAnLi90YWJsZS1hY2Npb25lcyc7XHJcbmltcG9ydCB7IGVzdGFkb3NfYWNjaW9uZXMgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3NfYWNjaW9uZXMnO1xyXG5pbXBvcnQgeyB0YXJlYXNfcHJveGltYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19wcm94aW1hcyc7XHJcbmltcG9ydCB7IGhpc3RvcmlhbF90ZW0gfSBmcm9tICcuL3RhYmxlLWhpc3RvcmlhbF90ZW0nO1xyXG5pbXBvcnQgeyBpbmNvbnNpc3RlbmNpYXNfY3VtcGxlbl9jb25kaWNpb24gfSBmcm9tICcuL3RhYmxlLWluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvbic7XHJcbmltcG9ydCB7IHRlbV9ib3JyYWRhcyB9IGZyb20gJy4vdGFibGUtdGVtX2JvcnJhZGFzJztcclxuaW1wb3J0IHsgYmFycmlvcyB9IGZyb20gXCIuL3RhYmxlLWJhcnJpb3NcIjtcclxuaW1wb3J0IHsgZnJhY2Npb25lcyB9IGZyb20gXCIuL3RhYmxlLWZyYWNjaW9uZXNcIjtcclxuaW1wb3J0IHsgcmFkaW9zIH0gZnJvbSBcIi4vdGFibGUtcmFkaW9zXCI7XHJcbmltcG9ydCB7IG1hbnphbmFzIH0gZnJvbSBcIi4vdGFibGUtbWFuemFuYXNcIjtcclxuaW1wb3J0IHsgYXJlYV9lbmNfcHJveGltYXMgfSBmcm9tIFwiLi90YWJsZS1hcmVhX2VuY19wcm94aW1hc1wiO1xyXG5cclxuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMtZG1lbmN1XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2F5dWRhXCI7XHJcbmltcG9ydCB7IGRlZkNvbmZpZyB9IGZyb20gXCIuL2RlZi1jb25maWdcIlxyXG5pbXBvcnQgeyBQcm9jZWR1cmVEZWYgfSBmcm9tIFwiYmFja2VuZC1wbHVzXCI7XHJcbmltcG9ydCB7IHRhYmxlIH0gZnJvbSBcImNvbnNvbGVcIjtcclxuXHJcbmltcG9ydCB7IGRhdGV0aW1lIH0gZnJvbSBcImJlc3QtZ2xvYmFsc1wiO1xyXG5pbXBvcnQgeyBQcm9jZWR1cmVDb250ZXh0IH0gZnJvbSBcImJhY2tlbmQtcGx1c1wiO1xyXG5cclxuXHJcbmNvbnN0IEFQUF9ETV9WRVJTSU9OID0gXCIjMjItMTItMTVcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2RvQnlQb2xpY3koYmU6IEFwcEJhY2tlbmQpIHtcclxuICAgIHJldHVybiBiZS5jb25maWcuc2VydmVyLnBvbGljeSA9PSAnd2ViJyA/ICdSRUxFVkFNSUVOVE8nIDogJ0dBQklORVRFJztcclxufVxyXG5cclxuLy8gcGVybWlzb3MgcXVlIGdldENvbnRleHQgYWdyZWdhIGFsIGNvbnRleHRvIHNlZ8O6biBlbCB1c3VhcmlvIGxvZ3VlYWRvIChvIGxhIGZhbHRhIGRlIHVzdWFyaW8pXHJcbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNvc1NlZ3VuVXN1YXJpbyhcclxuICAgIGNhY2hlczogUGljazxBcHBCYWNrZW5kWydjYWNoZXMnXSwgJ3Blcm1pc29zUm9sJyB8ICdwZXJtaXNvc1N1cGVydXNlcicgfCAncGVybWlzb3NQYXJhTmFkaWUnPixcclxuICAgIHVzZXI6IENvbnRleHRbJ3VzZXInXSB8IHVuZGVmaW5lZFxyXG4pOiB7IHN1cGVydXNlcj86IHRydWUsIHB1ZWRlPzogUHVlZGUgfSB7XHJcbiAgICBpZiAodXNlciA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgcHVlZGU6IGNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSB9O1xyXG4gICAgfVxyXG4gICAgdmFyIHJvbCA9IHVzZXIucm9sO1xyXG4gICAgdmFyIHBlcm1pc29zRGVsUm9sID0gcm9sICE9IG51bGwgPyBjYWNoZXMucGVybWlzb3NSb2xbcm9sXSA6IHVuZGVmaW5lZDtcclxuICAgIGlmIChwZXJtaXNvc0RlbFJvbD8uc3VwZXJ1c2VyKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgc3VwZXJ1c2VyOiB0cnVlLCBwdWVkZTogY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBwdWVkZTogcGVybWlzb3NEZWxSb2w/LnB1ZWRlIH07XHJcbn1cclxuXHJcbi8vIGxvIHF1ZSBkZWNpZGUgcXXDqSB0ZW1hcyBkZSBheXVkYSB2ZSBlbCB1c3VhcmlvOiBzdSByb2wsIHN1cyBwZXJtaXNvcyB5IGVsIG1vZG8gZGUgbGEgaW5zdGFuY2lhXHJcbmV4cG9ydCBmdW5jdGlvbiBxdWllbkNvbnN1bHRhQXl1ZGEoY29udGV4dDogQ29udGV4dCk6IFF1aWVuQ29uc3VsdGFBeXVkYSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJvbDogY29udGV4dC51c2VyPy5yb2wgPz8gbnVsbCxcclxuICAgICAgICBzdXBlcnVzZXI6ICEhY29udGV4dC5zdXBlcnVzZXIsXHJcbiAgICAgICAgcHVlZGU6IGNvbnRleHQucHVlZGUsXHJcbiAgICAgICAgbW9kbzogZ2V0TW9kb0J5UG9saWN5KGNvbnRleHQuYmUpLFxyXG4gICAgfTtcclxufVxyXG5cclxuLy8gbG8gcXVlIHVzYW4gcmVmcmVzaENhY2hlcyB5IHJlZnJlc2NhckVzdHJ1Y3R1cmFBbE1vZGlmaWNhclRhYmxhIGRlbCBjbGllbnRlIGRlIGJhc2UgKGVsIENsaWVudCBkZSBwZy1wcm9taXNlLXN0cmljdCBsbyBjdW1wbGUpXHJcbmV4cG9ydCB0eXBlIENvbnN1bHRhRGIgPSB7XHJcbiAgICBmZXRjaEFsbCgpOiBQcm9taXNlPHBnLlJlc3VsdFJvd3M+XHJcbiAgICBmZXRjaFVuaXF1ZVJvdygpOiBQcm9taXNlPHBnLlJlc3VsdE9uZVJvdz5cclxufVxyXG5leHBvcnQgdHlwZSBDbGllbnRlRGIgPSB7XHJcbiAgICBxdWVyeShzcWw6IHN0cmluZyk6IENvbnN1bHRhRGJcclxufVxyXG5cclxuLy8gdGFibGFzIGN1eWEgbW9kaWZpY2FjacOzbiBjYW1iaWEgbGEgZXN0cnVjdHVyYSBxdWUgc2UgbWFuZGEgYSBsb3MgZGlzcG9zaXRpdm9zICh2ZXIgb3BlcmF0aXZvX2VzdHJ1Y3R1cmFfY29tcGxldGEpXHJcbmV4cG9ydCBjb25zdCBUQUJMQVNfRVNUUlVDVFVSQSA9IFsnY2FzaWxsZXJvcycsICdzZW1hbmFzJ107XHJcbi8vIHRhYmxhcyBkZSByZWEvbm8gcmVhLCBxdWUgYWRlbcOhcyBzZSBndWFyZGFuIGVuIGJlLmNhY2hlcy50YWJsZUNvbnRlbnQgKHZlciByZWZyZXNoQ2FjaGVzKVxyXG5leHBvcnQgY29uc3QgVEFCTEFTX1JFQV9OT19SRUEgPSBbJ3JlYScsICdub19yZWEnLCAncmVhX3N1cCcsICdub19yZWFfc3VwJ107XHJcblxyXG5leHBvcnQgdHlwZSBSZWZyZXNjYWRvckVzdHJ1Y3R1cmEgPSB7XHJcbiAgICBjYWNoZXM6IHsgdGltZXN0YW1wRXN0cnVjdHVyYTogbnVtYmVyIH1cclxuICAgIHJlZnJlc2hDYWNoZXMoY2xpZW50OiBDbGllbnRlRGIpOiBQcm9taXNlPHZvaWQ+XHJcbn1cclxuXHJcbi8vIGVudnVlbHZlIHRhYmxlX3JlY29yZF9zYXZlL3RhYmxlX3JlY29yZF9kZWxldGUgcGFyYSBxdWUgYWwgbW9kaWZpY2FyIGVzYXMgdGFibGFzIGxvcyBkaXNwb3NpdGl2b3NcclxuLy8gcmVjaWJhbiBsYSBlc3RydWN0dXJhIG51ZXZhICh0aW1lc3RhbXBFc3RydWN0dXJhKSB5LCBzaSBzb24gZGUgcmVhL25vIHJlYSwgc2UgcmVjYXJndWVuIGxhcyBjYWNoZXNcclxuLy8gY29uIGVsIG1pc21vIGNsaWVudGUgKGRlbnRybyBkZSBsYSBtaXNtYSB0cmFuc2FjY2nDs24pXHJcbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNjYXJFc3RydWN0dXJhQWxNb2RpZmljYXJUYWJsYTxDIGV4dGVuZHMgeyBjbGllbnQ6IENsaWVudGVEYiB9LCBQIGV4dGVuZHMgeyB0YWJsZTogc3RyaW5nIH0sIFIsIFJlc3RvIGV4dGVuZHMgKG9iamVjdCB8IHVuZGVmaW5lZClbXT4oXHJcbiAgICBiZTogUmVmcmVzY2Fkb3JFc3RydWN0dXJhLFxyXG4gICAgY29yZUZ1bmN0aW9uOiAoY29udGV4dDogQywgcGFyYW1ldGVyczogUCwgLi4ucmVzdG86IFJlc3RvKSA9PiBQcm9taXNlPFI+XHJcbik6IChjb250ZXh0OiBDLCBwYXJhbWV0ZXJzOiBQLCAuLi5yZXN0bzogUmVzdG8pID0+IFByb21pc2U8Uj4ge1xyXG4gICAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChjb250ZXh0OiBDLCBwYXJhbWV0ZXJzOiBQLCAuLi5yZXN0bzogUmVzdG8pIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgY29yZUZ1bmN0aW9uKGNvbnRleHQsIHBhcmFtZXRlcnMsIC4uLnJlc3RvKTtcclxuICAgICAgICBpZiAoVEFCTEFTX0VTVFJVQ1RVUkEuaW5jbHVkZXMocGFyYW1ldGVycy50YWJsZSkpIHtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3NlIHRvY8OzIGxhIGVzdHJ1Y3R1cmEnLCBiZS5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFRBQkxBU19SRUFfTk9fUkVBLmluY2x1ZGVzKHBhcmFtZXRlcnMudGFibGUpKSB7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IGJlLnJlZnJlc2hDYWNoZXMoY29udGV4dC5jbGllbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCByZWdpc3RyYXJDcm9uSm9iUGFzYXJBUHJvaWUgPSBhc3luYyAoYmU6IEFwcEJhY2tlbmQpID0+IHtcclxuICAgIGNvbnN0IGVqZWN1dGFyUGFzYWplID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxvZyA9IChtc2c6IHN0cmluZywgZGF0YTogYW55ID0gJycpID0+XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2RhdGV0aW1lLm5vdygpLnRvWW1kSG1zKCl9IFtDUk9OOlBST0lFXSAke21zZ31gLCBkYXRhKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsb2coJ/CfmoAgaW5pY2lhIGNyb24gcGFzYWplIGEgcHJvaWUnKTtcclxuXHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIGFzeW5jIChjbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBwYXNhckVuY3Vlc3Rhc0FQcm9pZShjbGllbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxvZygn4pyFIHJlc3VsdCBwcm9jIHBhc2FqZSBhIHByb2llOicsIHJlc3VsdCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHZhciBlcnJvciA9IHVuZXhwZWN0ZWQoZXJyKTtcclxuICAgICAgICAgICAgbG9nKGDinYwgZXJyb3IgcGFzYWplIGEgcHJvaWU6ICR7ZXJyb3IubWVzc2FnZX1gKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBsb2coJ/Cfj4EgdGVybWluYSBjcm9uIHByb2llJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGF3YWl0IGVqZWN1dGFyUGFzYWplKCk7XHJcbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKGVqZWN1dGFyUGFzYWplLCAxMDAwICogNjAgKiA2MClcclxuICAgIGJlLnNodXRkb3duQ2FsbGJhY2tMaXN0QWRkKHtcclxuICAgICAgICBtZXNzYWdlOiAnYXBhZ2EgY3JvbiBwYXNhciBhIHByb2llJyxcclxuICAgICAgICBmdW46IGFzeW5jIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZ2V0TWFuaWZlc3RJbWFnZUljb25zID0gKEFQUF9OQU1FOiBzdHJpbmcsIHN1Zmlqbzogc3RyaW5nKSA9PiBbXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTMyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjMyeDMyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTQ4JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjQ4eDQ4XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTY0JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjY0eDY0XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTcyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjcyeDcyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTE5MiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCIxOTJ4MTkyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTUxMiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCI1MTJ4NTEyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH1cclxuXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbWVyZ2VBcHBEbUVuY3U8VCBleHRlbmRzIHByb2Nlc2FtaWVudG8uQ29uc3RydWN0b3I8cHJvY2VzYW1pZW50by5BcHBQcm9jZXNhbWllbnRvVHlwZT4+KEJhc2U6IFQpIHtcclxuICAgIHJldHVybiBjbGFzcyBBcHBEbUVuY3UgZXh0ZW5kcyBCYXNlIHtcclxuICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgICBzdXBlcihhcmdzKTtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhID0gW11cclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMgPSBbXVxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy5tZXRhRW5jSW5jbHVpckNhc2lsbGVyb3NTYWx0b1JFTCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhciA9IHt9O1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy5heXVkYSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRTdWZpam9Gcm9tYmFzZVVybCA9IChiYXNlVXJsOiBzdHJpbmcpID0+XHJcbiAgICAgICAgICAgIGJhc2VVcmwuaW5jbHVkZXMoJ3Rlc3QnKSB8fCBiYXNlVXJsLmluY2x1ZGVzKCcvcHInKSA/ICdfdGVzdCcgOlxyXG4gICAgICAgICAgICAgICAgYmFzZVVybC5pbmNsdWRlcygnY2FwYScpID8gJ19jYXBhJyA6ICcnO1xyXG5cclxuICAgICAgICBnZXRBcHBOYW1lID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICByZXR1cm4gKChhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIChjbGllbnQ6IHBnLkNsaWVudCkgPT5cclxuICAgICAgICAgICAgICAgIGNsaWVudC5xdWVyeShcInNlbGVjdCBvcGVyYXRpdm8gZnJvbSBwYXJhbWV0cm9zIHdoZXJlIHVuaWNvX3JlZ2lzdHJvXCIpLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICApKS52YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gYmFja2VuZC1wbHVzIGxvIGRlY2xhcmEgc2luIHBhcsOhbWV0cm9zIHBlcm8gbG8gbGxhbWEgY29uIChjb250ZXh0LCB1c3VhcmlvKSwgcG9yIGVzbyBzb24gb3BjaW9uYWxlc1xyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIGNhbkNoYW5nZVBhc3MocmVxT3JDb250ZXh0PzogUmVxdWVzdCB8IENvbnRleHQsIHVzZXJUb0NoYW5nZVBhc3M/OiBzdHJpbmcgfCBudWxsKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHZhciB1c3VhcmlvTG9ndWVhZG8gPSByZXFPckNvbnRleHQ/LnVzZXI7XHJcbiAgICAgICAgICAgIGlmIChyZXFPckNvbnRleHQgPT0gbnVsbCB8fCB1c3VhcmlvTG9ndWVhZG8gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciByb2wgPSB1c3VhcmlvTG9ndWVhZG8ucm9sO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgYmUuaW5EYkNsaWVudChudWxsLCBhc3luYyAoY2xpZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcSA9IGJlLmRiLnF1b3RlTGl0ZXJhbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCAqIFxyXG4gICAgICAgICAgICAgICAgICBmcm9tIHVzdWFyaW9zIFxyXG4gICAgICAgICAgICAgICAgICB3aGVyZSByb2wgaW4gKHNlbGVjdCByb2xfc3Vib3JkaW5hZG8gZnJvbSByb2xlc19zdWJvcmRpbmFkb3Mgd2hlcmUgcm9sID0gJHtxKHJvbCl9KWApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHZhciBwdWVkZSA9ICEhcmVzdWx0LmZpbmQoKHVzZXIpID0+IHVzZXIudXN1YXJpbyA9PSB1c2VyVG9DaGFuZ2VQYXNzKTtcclxuICAgICAgICAgICAgdmFyIGlzQWRtaW4gPSBiZS5pc0FkbWluKHJlcU9yQ29udGV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybiBpc0FkbWluIHx8IHB1ZWRlXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBnZXRQcm9jZWR1cmVzKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgcHJvY2VkaW1pZW50b0FSZWVtcGxhemFyID0gW1wiY2Fzb19ndWFyZGFyXCIsIFwiY2Fzb190cmFlclwiXTtcclxuICAgICAgICAgICAgdmFyIHBhcmVudFByb2MgPSBhd2FpdCBzdXBlci5nZXRQcm9jZWR1cmVzKCk7XHJcbiAgICAgICAgICAgIHBhcmVudFByb2MgPSBwYXJlbnRQcm9jLmZpbHRlcigocHJvY2VkdXJlOiBhbnkpID0+ICFwcm9jZWRpbWllbnRvQVJlZW1wbGF6YXIuaW5jbHVkZXMocHJvY2VkdXJlLmFjdGlvbikpO1xyXG4gICAgICAgICAgICBwYXJlbnRQcm9jID0gcGFyZW50UHJvYy5tYXAocHJvY0RlZiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvY0RlZi5hY3Rpb24gPT0gJ3RhYmxlX3JlY29yZF9zYXZlJyB8fCBwcm9jRGVmLmFjdGlvbiA9PSAndGFibGVfcmVjb3JkX2RlbGV0ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jRGVmLmNvcmVGdW5jdGlvbiA9IHJlZnJlc2NhckVzdHJ1Y3R1cmFBbE1vZGlmaWNhclRhYmxhKGJlLCBwcm9jRGVmLmNvcmVGdW5jdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvY0RlZjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFByb2MuY29uY2F0KFByb2NlZHVyZXNEbUVuY3UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBjaGVja0RhdGFiYXNlU3RydWN0dXJlKF9jbGllbnQ6IENsaWVudCkge1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwOiBwcm9jZXNhbWllbnRvLkV4cHJlc3MsIGJhc2VVcmw6IHN0cmluZykge1xyXG4gICAgICAgICAgICBsZXQgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzdXBlci5hZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwLCBiYXNlVXJsKTtcclxuICAgICAgICAgICAgLy9wZXJtaXRvIGxldmFudGFyIG1pcyBpbWFnZW5lcyBlbiBhcGxpY2FjaW9uZXMgZGVwZW5kaWVudGVzXHJcbiAgICAgICAgICAgIGJlLmFwcC51c2UoJy9pbWcnLCBleHByZXNzLnN0YXRpYygnbm9kZV9tb2R1bGVzL2RtZW5jdS9kaXN0L3VubG9nZ2VkL3VubG9nZ2VkL2ltZycpKVxyXG4gICAgICAgICAgICBtYWluQXBwLnVzZShmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCBfcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxLnNlc3Npb24gJiYgIXJlcS5zZXNzaW9uLmluc3RhbGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXEuc2Vzc2lvbi5pbnN0YWxsID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9zYWx2YXInLCBmdW5jdGlvbiAocmVxLCByZXMsIF9uZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHPDqSBxdWUgdm95IGEgcmVjaWJpciB1c2VyYWdlbnQgcG9yIGxvcyBtaWRkbGV3YXJlcyBkZSBCYWNrZW5kLXBsdXNcclxuICAgICAgICAgICAgICAgIHZhciB7IHVzZXJhZ2VudCB9ID0gcmVxO1xyXG4gICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluID0gYmUubWFpblBhZ2UoeyB1c2VyYWdlbnQgfSwgZmFsc2UsIHsgc2tpcE1lbnU6IHRydWUsIG9mZmxpbmVGaWxlOiB0cnVlIH0pLnRvSHRtbERvYygpO1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwgJ2h0bWwnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9jYW1wbycsIGZ1bmN0aW9uIChyZXEsIHJlcywgX25leHQpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICAgICAgdmFyIHsgdXNlcmFnZW50LCB1c2VyIH0gPSByZXE7XHJcbiAgICAgICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7e3R5cGU6J2pzJywgc3JjOnN0cmluZ31bXX0gKi9cclxuICAgICAgICAgICAgICAgICAgICB2YXIgd2ViTWFuaWZlc3RQYXRoID0gJ2NhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdCc7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluID0gYmUubWFpblBhZ2UoeyB1c2VyYWdlbnQsIHVzZXIgfSwgZmFsc2UsIHsgc2tpcE1lbnU6IHRydWUsIHdlYk1hbmlmZXN0UGF0aCwgb2ZmbGluZUZpbGU6IHRydWUgfSkudG9IdG1sRG9jKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwgJ2h0bWwnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5yZWRpcmVjdCg0MDEsIGJhc2VVcmwgKyAnL2xvZ2luI3c9cGF0aCZwYXRoPS9jYW1wbycpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9mYWxsYmFjay1zaW5jcm8nLCBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpzb25GYWxsYmFjayA9IHtcclxuICAgICAgICAgICAgICAgICAgICBvazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ05vIHNlIGxvZ3LDsyBlc3RhYmxlY2VyIGxhIGNvbmV4aW9uIGNvbiBlbCBzZXJ2aWRvciwgY29tcHJ1ZWJlIHN1IGNvbmV4aW9uIGRlIGludGVybmV0IChyZXNwdWVzdGEgZGVzZGUgZmFsbGJhY2spJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVKc29uKGpzb25GYWxsYmFjaykocmVxLCByZXMsIG5leHQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdmFyIGNyZWF0ZVNlcnZpY2VXb3JrZXIgPSBhc3luYyBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3cgPSBhd2FpdCBmcy5yZWFkRmlsZSgnbm9kZV9tb2R1bGVzL3NlcnZpY2Utd29ya2VyLWFkbWluL2Rpc3Qvc2VydmljZS13b3JrZXItd28tbWFuaWZlc3QuanMnLCAndXRmOCcpO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1hbmlmZXN0ID0gYXdhaXQgYmUuY3JlYXRlUmVzb3VyY2VzRm9yQ2FjaGVKc29uKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3dNYW5pZmVzdCA9IHN3XHJcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoXCInLyp2ZXJzaW9uKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LnZlcnNpb24pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qYXBwTmFtZSovJ1wiLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5hcHBOYW1lKSlcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKnVybHNUb0NhY2hlXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmNhY2hlKSlcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKmZhbGxiYWNrc1xcKlxcL1xccypcXF0vLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5mYWxsYmFja3MgfHwgW10pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qZGVmYXVsdEZhbGxiYWNrKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmRlZmF1bHRGYWxsYmFjaykpO1xyXG4gICAgICAgICAgICAgICAgLy8ucmVwbGFjZShcIi8jQ0FDSEUkL1wiLCBcIi8oYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19lc3RydWN0dXJhLmpzKXwoYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19oZHIuanNvbikvXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN3TWFuaWZlc3RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgYC9zdy1tYW5pZmVzdC5qc2AsIGFzeW5jIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGF3YWl0IGNyZWF0ZVNlcnZpY2VXb3JrZXIoKSwgJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLCByZXMsIG5leHQpKHVuZXhwZWN0ZWQoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgYC9jYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3RgLCBhc3luYyBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IEFQUF9OQU1FID0gYXdhaXQgYmUuZ2V0QXBwTmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VmaWpvID0gYmUuZ2V0U3VmaWpvRnJvbWJhc2VVcmwoYmFzZVVybCk7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBgJHtBUFBfTkFNRX0ke3N1Zmlqb30gUHJvZ3Jlc3NpdmUgV2ViIEFwcGAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2hvcnRfbmFtZVwiOiBgJHtBUFBfTkFNRX0ke3N1Zmlqb30gUFdBYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBgUHJvZ3Jlc3NpdmUgV2ViIEFwcCBmb3IgJHtBUFBfTkFNRX0ke3N1Zmlqb30uYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpY29uc1wiOiBnZXRNYW5pZmVzdEltYWdlSWNvbnMoQVBQX05BTUUsIHN1ZmlqbyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJlLmdldENvbG9yc0pzb24oc3VmaWpvIGFzIFN1Zmlqb3NBbWJpZW50ZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChKU09OLnN0cmluZ2lmeShjb250ZW50KSwgJ2FwcGxpY2F0aW9uL2pzb24nKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLCByZXMsIG5leHQpKHVuZXhwZWN0ZWQoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDb2xvcnNKc29uKF9zdWZpam86IFN1Zmlqb3NBbWJpZW50ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgXCJzdGFydF91cmxcIjogXCIuLi9jYW1wb1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwic3RhbmRhbG9uZVwiLFxyXG4gICAgICAgICAgICAgICAgXCJ0aGVtZV9jb2xvclwiOiBcIiMzRjUxQjVcIixcclxuICAgICAgICAgICAgICAgIFwiYmFja2dyb3VuZF9jb2xvclwiOiBcIiM2ZDYwZWRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFkZExvZ2dlZFNlcnZpY2VzKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzdXBlci5hZGRMb2dnZWRTZXJ2aWNlcygpO1xyXG4gICAgICAgICAgICBiZS5hcHAuZ2V0KCcvbWFuaWZlc3QubWFuaWZlc3QnLCBhc3luYyBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBfbmV4dDogTmV4dEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKCdzcmMvY2xpZW50L21hbmlmZXN0Lm1hbmlmZXN0Jywge30pKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLmdldCgnL2ZpbGUnLCBhc3luYyBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihyZXEsXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWVudDogcGcuQ2xpZW50KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQucXVlcnkoXCJzZWxlY3QgcnV0YSBmcm9tIGFkanVudG9zIHdoZXJlIGlkX2FkanVudG8gPSAkMVwiLCBbcmVxLnF1ZXJ5LmlkX2FkanVudG9dKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHZhciBmaWxlUGF0aCA9IHJlc3VsdC52YWx1ZTtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoZmlsZVBhdGgsIHt9KShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFwcC5nZXQoJy9pbWFnZW5lcycsIGFzeW5jIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoJ2xvY2FsLWltYWdlcy8nICsgcmVxLnF1ZXJ5LnBkZiwge30pKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLmdldCgnL2Rvd25sb2FkL2FsbCcsIGFzeW5jIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6ICgpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEudXNlciA9PSBudWxsIHx8IHJlcS51c2VyLnJvbCAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vIGVzdMOhIGF1dG9yaXphZG8gYSBiYWphcnNlIHRvZG8nLCByZXEudXNlcilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IHppcCA9IG5ldyB5YXpsLlppcEZpbGUoKTtcclxuICAgICAgICAgICAgICAgIHppcC5vdXRwdXRTdHJlYW0ucGlwZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2UgPSAnbG9jYWwtYXR0YWNobWVudHMnXHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKGFzeW5jIGZ1bmN0aW9uIChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVQYXRoID0gYmFzZSArICcvJyArIGZpbGVOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ID0gYXdhaXQgZnMuc3RhdChmaWxlUGF0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXQuaXNGaWxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgemlwLmFkZEZpbGUoZmlsZVBhdGgsIGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB6aXAuZW5kKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIHBvc3RDb25maWcoKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHN1cGVyLnBvc3RDb25maWcoKTtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgYmUuY2FjaGVzLm1ldGFFbmNJbmNsdWlyQ2FzaWxsZXJvc1NhbHRvUkVMID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgYXN5bmMgZnVuY3Rpb24gKGNsaWVudDogcGcuQ2xpZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcVBlcm1pc29zID0gYFxyXG4gICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhyLnJvbCxqc29uYl9idWlsZF9vYmplY3QoJ3N1cGVydXNlcicsci5zdXBlcnVzZXIsJ3B1ZWRlJywoXHJcbiAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHJwLnBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhycGEuYWNjaW9uLHJwYS5oYWJpbGl0YWRvKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnBhLnJvbD1ycC5yb2wgQU5EIHJwYS5wZXJtaXNvPXJwLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBcclxuICAgICAgICAgICAgICAgICAgICBXSEVSRSBycC5yb2w9ci5yb2wgI2NvbmRIYWJpbGl0YWRvI1xyXG4gICAgICAgICAgICAgICkpKVxyXG4gICAgICAgICAgICAgIEZST00gcm9sZXMgclxyXG4gICAgICAgICAgICBgO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJywgJycpKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJywgYCBhbmQgcnAuJHtwZy5xdW90ZUlkZW50KCdoYWJpbGl0YWRvJyl9YCkpLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcGEucGVybWlzbz1wLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBcclxuICAgICAgICAgICAgICAgIGApLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHBhLnBlcm1pc289cC5wZXJtaXNvXHJcbiAgICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwXHJcbiAgICAgICAgICAgICAgICBgKS5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NSb2wgPSByZXN1bHRzWzBdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUm9sU29sb1RydWUgPSByZXN1bHRzWzFdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyID0gcmVzdWx0c1syXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSA9IHJlc3VsdHNbM10udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1JvbFNvbG9UcnVlLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlcix7ZGVwdGg6OX0pO1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5jYWNoZXMucGVybWlzb3NQYXJhTmFkaWUse2RlcHRoOjl9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy5heXVkYSA9IGNhcmdhckF5dWRhKGJlLmdldEF5dWRhRnVlbnRlcygpKTtcclxuICAgICAgICAgICAgYmUucHJvYmxlbWFzRGVBeXVkYSgpLmZvckVhY2gocHJvYmxlbWEgPT4gY29uc29sZS5lcnJvcihwcm9ibGVtYSkpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hDYWNoZXMoKTtcclxuICAgICAgICAgICAgYXdhaXQgcmVnaXN0cmFyQ3JvbkpvYlBhc2FyQVByb2llKGJlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2FycGV0YXMgY29uIGxhIGF5dWRhIHBhcmEgdXN1YXJpb3MsIGVuIG9yZGVuOiB1biB0ZW1hIGRlIHVuYSBmdWVudGUgcG9zdGVyaW9yIHJlZW1wbGF6YSB1IG9jdWx0YVxyXG4gICAgICAgIC8vIGFsIGRlIHVuYSBhbnRlcmlvciBjb24gZWwgbWlzbW8gaWQuIExhcyBhcHBzIGZpbmFsZXMgYWdyZWdhbiBsYSBzdXlhICh2ZXIgZG9jcy9heXVkYS1vbmxpbmUubWQpXHJcbiAgICAgICAgZ2V0QXl1ZGFGdWVudGVzKCk6IEF5dWRhRnVlbnRlW10ge1xyXG4gICAgICAgICAgICByZXR1cm4gW3sgb3JpZ2VuOiAnZG1lbmN1JywgY2FycGV0YTogcGF0aC5qb2luKGNhcnBldGFEZWxQYXF1ZXRlKF9fZGlybmFtZSksICdheXVkYScpIH1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0ZW1hcyBkZSBheXVkYSBkZWwgbW9kbyBhY3R1YWwgY29uIHBlcm1pc29zLCByb2xlcyB1IG9wY2lvbmVzIGRlIG1lbsO6IHF1ZSBubyBleGlzdGVuXHJcbiAgICAgICAgcHJvYmxlbWFzRGVBeXVkYSgpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHZhciBtb2RvID0gZ2V0TW9kb0J5UG9saWN5KGJlKTtcclxuICAgICAgICAgICAgdmFyIHJ1dGFzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhiZS5jYWNoZXMucGVybWlzb3NSb2wpLmZvckVhY2gocm9sID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciB1c2VyID0geyByb2wsIGlkcGVyOiAnJywgdXN1YXJpbzogJycgfTtcclxuICAgICAgICAgICAgICAgIHZhciBjb250ZXh0OiBDb250ZXh0ID0geyAuLi5wZXJtaXNvc1NlZ3VuVXN1YXJpbyhiZS5jYWNoZXMsIHVzZXIpLCBiZSwgdXNlciwgc2Vzc2lvbjoge30sIHVzZXJuYW1lOiAnJywgbWFjaGluZUlkOiAnJywgbmF2aWdhdG9yOiAnJyB9O1xyXG4gICAgICAgICAgICAgICAgcnV0YXMgPSBydXRhcy5jb25jYXQocnV0YXNEZWxNZW51KGJlLmdldE1lbnUoY29udGV4dCkubWVudSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHByb2JsZW1hc0RlQXl1ZGEoXHJcbiAgICAgICAgICAgICAgICBiZS5jYWNoZXMuYXl1ZGEuZmlsdGVyKHRlbWEgPT4gdGVtYS5tb2RvID09IG51bGwgfHwgdGVtYS5tb2RvID09IG1vZG8pLFxyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLFxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYmUuY2FjaGVzLnBlcm1pc29zUm9sKSxcclxuICAgICAgICAgICAgICAgIHJ1dGFzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGNvbmZpZ1N0YXRpY0NvbmZpZygpIHtcclxuICAgICAgICAgICAgc3VwZXIuY29uZmlnU3RhdGljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGljQ29uZmlnKGRlZkNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGNsaWVudEluY2x1ZGVzKHJlcTogUmVxdWVzdCwgb3B0czogT3B0c0NsaWVudFBhZ2UpOiBDbGllbnRNb2R1bGVEZWZpbml0aW9uW10ge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgdW5sb2dnZWQgPSBvcHRzICYmIG9wdHMub2ZmbGluZUZpbGU7XHJcbiAgICAgICAgICAgIHZhciBtZW51ZWRSZXNvdXJjZXM6IENsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IHVubG9nZ2VkID8gW1xyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAndW5sb2dnZWQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICBdIDogW1xyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vY2xpZW50L2NsaWVudCcsIGZpbGU6ICdjbGllbnQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmV4dHJhRmlsZXMpIHtcclxuICAgICAgICAgICAgICAgIG1lbnVlZFJlc291cmNlcyA9IG1lbnVlZFJlc291cmNlcy5jb25jYXQob3B0cy5leHRyYUZpbGVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgZXh0ZXJuYWxSZXNvdXJjZXM6IENsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IFtcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QnLCBtb2RQYXRoOiAndW1kJywgZmlsZTogJ3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdC1kb20nLCBtb2RQYXRoOiAndW1kJywgZmlsZTogJ3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIC8veyB0eXBlOiAnanMnLCBtb2R1bGU6ICdAbWF0ZXJpYWwtdWkvY29yZScsIG1vZFBhdGg6ICd1bWQnLCBmaWxlRGV2ZWxvcG1lbnQ6J21hdGVyaWFsLXVpLmRldmVsb3BtZW50LmpzJywgZmlsZTonbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ0BtdWkvbWF0ZXJpYWwnLCBtb2RQYXRoOiAnLi4vdW1kJywgZmlsZTogJ21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG5cclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVkdXgnLCBtb2RQYXRoOiAnLi4vZGlzdCcsIGZpbGU6ICdyZWR1eC5taW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0LXJlZHV4JywgbW9kUGF0aDogJy4uL2Rpc3QnLCBmaWxlOiAncmVhY3QtcmVkdXgubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgLy97IHR5cGU6ICdqcycsIG1vZHVsZTogJ3FyY29kZScsIG1vZFBhdGg6ICcuLi9idWlsZCcsIGZpbGU6ICdxcmNvZGUuanMnfSxcclxuICAgICAgICAgICAgICAgIC4uLnN1cGVyLmNsaWVudEluY2x1ZGVzKHJlcSwgb3B0cykuZmlsdGVyKG0gPT4gbS5maWxlICE9ICdmb3JtdWxhcmlvcy5jc3MnKVxyXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobSA9PiAhdW5sb2dnZWQgfHwgdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBtLmZpbGUgIT0gJ3Zhci1jYWwuanMnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIG0uZmlsZSAhPSAndmFyLWNhbC5qcydcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdzZXJ2aWNlLXdvcmtlci1hZG1pbicsIGZpbGU6ICdzZXJ2aWNlLXdvcmtlci1hZG1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVkdXgtdHlwZWQtcmVkdWNlcicsIG1vZFBhdGg6ICcuLi9kaXN0JywgZmlsZTogJ3JlZHV4LXR5cGVkLXJlZHVjZXIuanMnIH1cclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgdmFyIHJlc291cmNlczogQ2xpZW50TW9kdWxlRGVmaW5pdGlvbltdID0gW1xyXG4gICAgICAgICAgICAgICAgLi4uZXh0ZXJuYWxSZXNvdXJjZXMsXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdhZGFwdC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICd0aXBvcy5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdoZWxwZXJzLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnY2FsY3Vsb3MtZW5jdWVzdGEuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWNvbmZpZy5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItaW5pdC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZWR1eC1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2hlbHBlcnMtY2FzaWxsZXJvcy5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdieXBhc3MtZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItZ2VuZXJhbC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdhYnJpci1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnZm9ybXVsYXJpby1yZWFjdC5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdib290c3RyYXAubWluLmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICd0dGYnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ1JvYm90by1SZWd1bGFyLnR0ZicsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgICAgICAuLi5tZW51ZWRSZXNvdXJjZXMsXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vY2xpZW50L2NsaWVudC9jc3MnLCBmaWxlOiAnbWVudS5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIHJldHVybiByZXNvdXJjZXNcclxuICAgICAgICAgICAgLy8gLm1hcChtPT4oey4uLm0sIGZpbGU6bS5maWxlRGV2ZWxvcG1lbnR8fG0uZmlsZX0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgYXN5bmMgcmVmcmVzaENhY2hlcyhjbGllbnQ6IENsaWVudGVEYiB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCA9IHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCB8fCB7fTtcclxuXHJcbiAgICAgICAgICAgIC8vIEZ1bmNpw7NuIGF1eGlsaWFyIHBhcmEgZWplY3V0YXIgbGFzIHF1ZXJpZXMgY29uIGVsIGNsaWVudGUgcHJvdmlzdG8gbyB1bm8gbnVldm9cclxuICAgICAgICAgICAgY29uc3QgZXhlY3V0ZVF1ZXJpZXMgPSBhc3luYyAoZGJDbGllbnQ6Q2xpZW50ZURiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIG5vX3JlYSBvcmRlciBieSBvcGVyYXRpdm8sIG9yZGVuLCBub19yZWFgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50LnJlYSA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSByZWEgb3JkZXIgYnkgb3BlcmF0aXZvLCBvcmRlbiwgcmVhYCkuZmV0Y2hBbGwoKSkucm93cztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3VwcyA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYSByIGdyb3VwIGJ5IGdydXBvIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfZ3JvdXBzMCA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwbzAgYXMgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWEgciBncm91cCBieSBncnVwbzAgb3JkZXIgYnkgMVxyXG4gICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXAgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gbm9fcmVhX3N1cCBvcmRlciBieSBvcGVyYXRpdm8sIG9yZGVuLCBub19yZWFfc3VwYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5yZWFfc3VwID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIHJlYV9zdXAgb3JkZXIgYnkgb3BlcmF0aXZvLCBvcmRlbiwgcmVhX3N1cGApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXBfZ3JvdXBzID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGdydXBvX3N1cCwganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYV9zdXAgciBncm91cCBieSBncnVwb19zdXAgb3JkZXIgYnkgMVxyXG4gICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXBfZ3JvdXBzMCA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwbzBfc3VwIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhX3N1cCByIGdyb3VwIGJ5IGdydXBvMF9zdXAgb3JkZXIgYnkgMVxyXG4gICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGNvbl9yZWFfaG9nYXIsIG9wZXJhdGl2bywgY29uZmlnX3NvcnRlbyBmcm9tIG9wZXJhdGl2b3Mgam9pbiBwYXJhbWV0cm9zIHVzaW5nIChvcGVyYXRpdm8pIHdoZXJlIHVuaWNvX3JlZ2lzdHJvXHJcbiAgICAgICAgYCkuZmV0Y2hVbmlxdWVSb3coKSkucm93O1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKGNsaWVudCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZXhlY3V0ZVF1ZXJpZXMoY2xpZW50KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaW5EYkNsaWVudChudWxsLCBhc3luYyAoZGJDbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjdXRlUXVlcmllcyhkYkNsaWVudCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzJywgdGhpcy5jYWNoZXMudGFibGVDb250ZW50KVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzIG9rJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vc3FsTm9yZWFDYXNlKGNhbXBvTmVjZXNhcmlvOnN0cmluZyl7XHJcbiAgICAgICAgLy8gICAgdmFyIGJlPXRoaXM7XHJcbiAgICAgICAgLy8gICAgcmV0dXJuIGBDQVNFICR7YmUuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWEubWFwKHg9PlxyXG4gICAgICAgIC8vICAgICAgICBgIFdIRU4gbm9yZWEgID0gJHtiZS5kYi5xdW90ZUxpdGVyYWwoeC5ub19yZWEpfTo6aW50ZWdlciBUSEVOICR7YmUuZGIucXVvdGVMaXRlcmFsKHhbY2FtcG9OZWNlc2FyaW9dKX1gXHJcbiAgICAgICAgLy8gICAgKS5qb2luKCcnKX0gV0hFTiBUUlVFIFRIRU4gTlVMTCBFTkRgXHJcbiAgICAgICAgLy99ICAgIFxyXG4gICAgICAgIG92ZXJyaWRlIGdldENvbnRleHQocmVxOiBSZXF1ZXN0KTogQ29udGV4dCB7XHJcbiAgICAgICAgICAgIHZhciBmYXRoZXJDb250ZXh0ID0gc3VwZXIuZ2V0Q29udGV4dChyZXEpO1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi5wZXJtaXNvc1NlZ3VuVXN1YXJpbyh0aGlzLmNhY2hlcywgZmF0aGVyQ29udGV4dC51c2VyKSwgLi4uZmF0aGVyQ29udGV4dCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBnZXRDb250ZXh0Rm9yRHVtcCgpOiBDb250ZXh0IHtcclxuICAgICAgICAgICAgdmFyIGZhdGhlckNvbnRleHQgPSBzdXBlci5nZXRDb250ZXh0Rm9yRHVtcCgpO1xyXG4gICAgICAgICAgICByZXR1cm4geyBzdXBlcnVzZXI6IHRydWUsIHB1ZWRlOiB0aGlzLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlciwgLi4uZmF0aGVyQ29udGV4dCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBnZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcTogUmVxdWVzdCkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uKGF3YWl0IHN1cGVyLmdldENsaWVudFNldHVwRm9yU2VuZFRvRnJvbnRFbmQocmVxKSksXHJcbiAgICAgICAgICAgICAgICBpZHBlcjogcmVxLnVzZXI/LmlkcGVyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYXN5bmMgY3JlYXRlUmVzb3VyY2VzRm9yQ2FjaGVKc29uKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBjb25zdCBBUFBfTkFNRSA9IGF3YWl0IGJlLmdldEFwcE5hbWUoKVxyXG4gICAgICAgICAgICBjb25zdCBzdWZpam8gPSBiZS5nZXRTdWZpam9Gcm9tYmFzZVVybChiZS5jb25maWcuc2VydmVyWydiYXNlLXVybCddKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBqc29uUmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogQVBQX0RNX1ZFUlNJT04sXHJcbiAgICAgICAgICAgICAgICBhcHBOYW1lOiAnZG1lbmN1JyxcclxuICAgICAgICAgICAgICAgIGNhY2hlOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjYW1wb1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwib2ZmbGluZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZmFsbGJhY2stc2luY3JvXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9tYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlZHV4Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LXJlZHV4Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vXCJsaWIvcXJjb2RlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVxdWlyZS1icm8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9jYXN0LWVycm9yLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbGlrZS1hci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2Jlc3QtZ2xvYmFscy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2pzb240YWxsLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvanMtdG8taHRtbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlZHV4LXR5cGVkLXJlZHVjZXIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9hZGFwdC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3VubG9nZ2VkLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvanMteWFtbC51bWQubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIveGxzeC1ub3cudW1kLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIveGxzeC1ub3ctYnJvd3Nlci51bWQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9sYXp5LXNvbWUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9zcWwtdG9vbHMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRpYWxvZy1wcm9taXNlL2RpYWxvZy1wcm9taXNlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJtb21lbnQvbWluL21vbWVudC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicGlrYWRheS9waWthZGF5LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcG9seWZpbGxzLWJyby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2JpZy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3R5cGUtc3RvcmUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi90eXBlZC1jb250cm9scy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2FqYXgtYmVzdC1wcm9taXNlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJteS1hamF4LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJteS1zdGFydC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LWxvY2FsZGIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS13ZWJzcWxkYi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LWxvY2FsZGIuanMubWFwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktd2Vic3FsZGIuanMubWFwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktdGhpbmdzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktdGFibGVzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktaW5mb3JtLW5ldC1zdGF0dXMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS1tZW51LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktc2tpbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2NsaWVudGUtZW4tY2FzdGVsbGFuby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3NlcnZpY2Utd29ya2VyLWFkbWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVkdXgtdHlwZWQtcmVkdWNlci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvb3BlcmF0aXZvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvdmFyY2FsLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9mb3JtLXN0cnVjdHVyZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvbWV0YS1lbmMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2RhdG9zLWV4dC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvY29uc2lzdGVuY2lhcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcHJvY2VzYW1pZW50by5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3RpcG9zLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWNvbmZpZy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlbmRlci1pbml0LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvaGVscGVycy1jYXNpbGxlcm9zLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvaGVscGVycy1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvY2FsY3Vsb3MtZW5jdWVzdGEuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9ieXBhc3MtZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlZHV4LWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItZ2VuZXJhbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlbmRlci1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvYWJyaXItZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcm93LXZhbGlkYXRvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50L21lbnUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9sb2dvLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vXCJpbWcvbG9nby1kbS5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9sb2dvLTEyOC5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9tYWluLWxvYWRpbmcuZ2lmXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvYm9ycmFyLXZhbG9yLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2ZvbmRvLXNhbHRlYWRvLWVycm9yLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2ZvbmRvLXNhbHRlYWRvLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2JhY2tncm91bmQtdGVzdC5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAvL1wiY2xpZW50LXNldHVwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvYm9vdHN0cmFwLm1pbi5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9mb3JtdWxhcmlvLXJlYWN0LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicGlrYWRheS9waWthZGF5LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZGlhbG9nLXByb21pc2UvZGlhbG9nLXByb21pc2UuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZWwtZW5jL2VzdGFkb3MuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvbXktdGFibGVzLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL215LW1lbnUuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvbXktdGhpbmdzLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL21lbnUuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZWwtZW5jL215LXRoaW5nczIuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvZm9ybXVsYXJpby1yZWFjdC5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9Sb2JvdG8tUmVndWxhci50dGZcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdFwiLFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIGZhbGxiYWNrczpbXHJcbiAgICAgICAgICAgICAgICAgICAge3BhdGg6ICdkbV9zaW5jcm9uaXphcicsIGZhbGxiYWNrOidmYWxsYmFjay1zaW5jcm8nfVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRGYWxsYmFjazogXCJvZmZsaW5lXCJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAganNvblJlc3VsdC5jYWNoZSA9IGpzb25SZXN1bHQuY2FjaGUuY29uY2F0KGdldE1hbmlmZXN0SW1hZ2VJY29ucyhBUFBfTkFNRSwgc3VmaWpvKS5tYXAoKGVsZW0pID0+IGBtZW51LyR7ZWxlbS5zcmN9YCkpO1xyXG5cclxuICAgICAgICAgICAgdmFyIHNraW4gPSBiZS5jb25maWdbJ2NsaWVudC1zZXR1cCddLnNraW47XHJcbiAgICAgICAgICAgIGlmIChza2luICYmIGJlLmFjdGl2ZVNraW5GaWxlcykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNraW5VcmwgPSBza2luICsgJy8nO1xyXG4gICAgICAgICAgICAgICAganNvblJlc3VsdC5jYWNoZS5wdXNoKGAke3NraW59L2ltZy9iYWNrZ3JvdW5kLXRlc3QucG5nYCk7XHJcbiAgICAgICAgICAgICAgICAvLyBDb252ZXJ0aW1vcyBlbCBTZXQgYSBBcnJheSB5IG1hcGVhbW9zIGxhcyBydXRhc1xyXG4gICAgICAgICAgICAgICAgdmFyIHNraW5SZXNvdXJjZXMgPSBBcnJheS5mcm9tKGJlLmFjdGl2ZVNraW5GaWxlcykubWFwKGZ1bmN0aW9uIChwYXRoUmVsYXRpdm8pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBTaSBlcyB1biAuc3R5bCwgbG8gcGVkaW1vcyBjb21vIC5jc3MgcG9ycXVlIGVsIFNlcnZpY2UgV29ya2VyIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRlYmUgY2FjaGVhciBlbCByZWN1cnNvIGZpbmFsIHF1ZSBlbCBuYXZlZ2Fkb3Igc29saWNpdGEuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNraW5VcmwgKyBwYXRoUmVsYXRpdm8ucmVwbGFjZSgvXFwuc3R5bCQvLCAnLmNzcycpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAganNvblJlc3VsdC5jYWNoZSA9IGpzb25SZXN1bHQuY2FjaGUuY29uY2F0KHNraW5SZXNvdXJjZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBqc29uUmVzdWx0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldE1lbnVDb250cm9sZXMoX2NvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2VbXSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YXNfcHJvY2VzYW1pZW50b19wYXNhcicsIGxhYmVsOiAncGFzYXIgZW5jdWVzdGFzIGEgcHJvY2VzYW1pZW50bycgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyZXN1bWVuJywgdGFibGU6ICdjb250cm9sX3Jlc3VtZW4nLCBzZWxlY3RlZEJ5RGVmYXVsdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2RvbWluaW8nLCB0YWJsZTogJ2NvbnRyb2xfY2FtcG9fZG9taW5pbycgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd6b25hJywgdGFibGU6ICdjb250cm9sX2NhbXBvX3pvbmEnIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnY29tdW5hJywgdGFibGU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICfDoXJlYScsIHRhYmxlOiAnY29udHJvbF9jYW1wb19hcmVhJyB9LFxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfTtcclxuICAgICAgICBnZXRNZW51VmFyaW9zKGNvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2Uge1xyXG4gICAgICAgICAgICBsZXQgc3VibWVudVZhcmlvczogTWVudUluZm9CYXNlW10gPSBbeyBtZW51VHlwZTogJ2FicmlyX2VuY3Vlc3RhJywgbmFtZTogJ2FicmlyX2VuY3Vlc3RhJyB9XVxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdob2phX3J1dGEnLCB0YWJsZTogJ2dyaWxsYV9ob2phX3J1dGEnLCBsYWJlbDogJ2hvamEgZGUgcnV0YScgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFkb3JfZG1zX21vc3RyYXInLCBsYWJlbDogJ2ZvcnphciBkZXNjYXJnYSBlbmN1ZXN0YXMgRE0nIH0pO1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3RhX2JsYW5xdWVhcl9wcmV2aXN1YWxpemFyJywgbGFiZWw6ICdibGFucXVlYXIgZW5jdWVzdGEnIH0pO1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3RhX2JvcnJhcl9wcmV2aXN1YWxpemFyJywgbGFiZWw6ICdxdWl0YXIgZW5jdWVzdGEgZGUgbGEgbXVlc3RyYScgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFzX2NhcGFjaXRhY2lvbl9ib3JyYXInLCBsYWJlbDogJ3F1aXRhciBlbmN1ZXN0YXMgZGUgY2FwYSBkZSBsYSBtdWVzdHJhJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdvcGVyYXRpdm9fbWlncmFyJywgbGFiZWw6ICdtaWdyYXIgb3BlcmF0aXZvJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YV9jYXBhX2FfcHJvZF9wYXNhcicsIGxhYmVsOiAncGFzYXIgZW5jdWVzdGFzIGRlIGNhcGEgYSBwcm9kJyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2ludGVyY2FtYmlhcl9lbmN1ZXN0YXMnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICd2YXJpb3MnLCBtZW51Q29udGVudDogc3VibWVudVZhcmlvcyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldE1lbnVBc2lnbmFjaW9uKGNvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2Uge1xyXG4gICAgICAgICAgICBsZXQgZmlsdHJvUmVjZXBjaW9uaXN0YSA9IGNvbnRleHQudXNlci5yb2wgPT0gJ3JlY2VwY2lvbmlzdGEnID8geyByZWNlcGNpb25pc3RhOiBjb250ZXh0LnVzZXIuaWRwZXIgfSA6IHt9O1xyXG4gICAgICAgICAgICBsZXQgc3VibWVudUFzaWduYWNpb246IE1lbnVJbmZvQmFzZVtdID0gW107XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVBc2lnbmFjaW9uLnB1c2goeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2dlbmVyYWwnLCB0YWJsZTogJ2FyZWFzX2FzaWduYWNpb25fZ2VuZXJhbCcgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3VibWVudUFzaWduYWNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdlbmN1ZXN0YWRvcicsIHRhYmxlOiAndF9lbmN1X2FyZWFzJywgZmY6IHsgdGFyZWE6ICdlbmN1JywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnaW5ncmVzYWRvcicsIHRhYmxlOiAndF9pbmdyX2FyZWFzJywgZmY6IHsgdGFyZWE6ICdpbmdyJywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVjdXBlcmFkb3InLCB0YWJsZTogJ3RhcmVhc190ZW1fYXNpZ25hY2lvbl9yZWN1JywgZmY6IHsgdGFyZWFfYWN0dWFsOiAncmVjdScsIHRhcmVhOiAncmVjdScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51QXNpZ25hY2lvbi5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdzdXBlcnZpc29yJywgdGFibGU6ICd0YXJlYXNfdGVtX2FzaWduYWNpb25fc3VwZScsIGZmOiB7IHRhcmVhX2FjdHVhbDogJ3N1cGUnLCB0YXJlYTogJ3N1cGUnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdhc2lnbmFjaW9uJywgbGFiZWw6ICdhc2lnbmFjacOzbicsIG1lbnVDb250ZW50OiBzdWJtZW51QXNpZ25hY2lvbiB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldE1lbnVSZWNlcGNpb24oY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZSB7XHJcbiAgICAgICAgICAgIGxldCBzdWJtZW51UmVjZXBjaW9uOiBNZW51SW5mb0Jhc2VbXSA9IFtdXHJcbiAgICAgICAgICAgIHN1Ym1lbnVSZWNlcGNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdlbmN1ZXN0YWRvcicsIHRhYmxlOiAnZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3MnIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVjdXBlcmFkb3InLCB0YWJsZTogJ3JlY3VwZXJhZG9yZXNfYXNpZ25hZG9zJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2luZ3Jlc2Fkb3InLCB0YWJsZTogJ2luZ3Jlc2Fkb3Jlc19hc2lnbmFkb3MnIH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVSZWNlcGNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnc3VwZXJ2aXNvcicsIHRhYmxlOiAnc3VwZXJ2aXNvcmVzX2FzaWduYWRvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnbWlzX3N1cGVydmlzb3JlcycsIHRhYmxlOiAnbWlzX3N1cGVydmlzb3Jlc19hc2lnbmFkb3MnIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ3JlY2VwY2lvbicsIGxhYmVsOiAncmVjZXBjacOzbicsIG1lbnVDb250ZW50OiBzdWJtZW51UmVjZXBjaW9uIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdldE1lbnVDYXJ0byhjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlIHwgbnVsbCB7XHJcbiAgICAgICAgICAgIGxldCBzdWJtZW51Q2FydG86IE1lbnVJbmZvQmFzZVtdID0gW11cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudUNhcnRvLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbXVuYXMnLCB0YWJsZTogJ2NvbXVuYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2JhcnJpb3MnLCB0YWJsZTogJ2JhcnJpb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2ZyYWNjaW9uZXMnLCB0YWJsZTogJ2ZyYWNjaW9uZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JhZGlvcycsIHRhYmxlOiAncmFkaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdtYW56YW5hcycsIHRhYmxlOiAnbWFuemFuYXMnIH0sXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnY2FydG8nLCBsYWJlbDogJ2NhcnRvZ3JhZsOtYScsIG1lbnVDb250ZW50OiBzdWJtZW51Q2FydG8gfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXRNZW51Q29uZmlndXJhcihjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlW10ge1xyXG4gICAgICAgICAgICBjb25zdCBtZW51Q29uZmlndXJhcjogTWVudUluZm9CYXNlW10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VibWVudU11ZXN0cmE6IE1lbnVJbmZvQmFzZVtdID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0ZW0nLCBsYWJlbDogJ1RFTScgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdtdWVzdHJhX2dlbmVyYXInLCBsYWJlbDogJ2dlbmVyYXIgbXVlc3RyYScgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnc2VtYW5hcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnYXJlYV9lbmNfcHJveGltYXMnIH0sXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbXVlc3RyYScsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdtdWVzdHJhJyxcclxuICAgICAgICAgICAgICAgICAgICBtZW51Q29udGVudDogc3VibWVudU11ZXN0cmFcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FzaWxsZXJvc190ZXh0bz8uZWRpdGFyKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdtZXRhZGF0b3MnLFxyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdvcGVyYXRpdm9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdyZWEvbm9yZWEnLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVhJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ25vX3JlYScgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyZWFfc3VwJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ25vX3JlYV9zdXAnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZm9ybXVsYXJpb3MnLCB0YWJsZTogJ2Nhc2lsbGVyb3NfcHJpbmNpcGFsZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdwbGFubycsIHRhYmxlOiAnY2FzaWxsZXJvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3ZhcmlhYmxlcycsIHRhYmxlOiAnY2FzaWxsZXJvcycsIGZjOiBbeyBjb2x1bW46ICd2YXJfbmFtZScsIG9wZXJhdG9yOiAnIT1cXHUyMjA1JywgdmFsdWU6IG51bGwgfV0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RpcG9jJywgbGFiZWw6ICd0aXBvcyBkZSBjZWxkYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0aXBvY190aXBvYycsIGxhYmVsOiAnaW5jbHVzaW9uZXMgZGUgY2VsZGFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5zdXBlcnVzZXIpIHtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZXN0YWRvc19hY2Npb25lc190YXJlYXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VzdGFkb3MvYWNjaW9uZXMvdGFyZWFzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudUNvbnRlbnQ6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0YXJlYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZXN0YWRvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdhY2Npb25lcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdlc3RhZG9zX2FjY2lvbmVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc19wcm94aW1hcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ21vbWVudG9zX2NvbnNpc3RlbmNpYScgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncGFyYW1ldHJvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnbW9kb3NfZG0nIH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3VzdWFyaW9zJyxcclxuICAgICAgICAgICAgICAgICAgICBtZW51Q29udGVudDogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndXN1YXJpb3MnLCBzZWxlY3RlZEJ5RGVmYXVsdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncm9sZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdwZXJtaXNvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JvbGVzX3Blcm1pc29zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbWVudUNvbmZpZ3VyYXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBsb3MgbWl4aW5zIChtZXRhLWVuYywgcHJvY2VzYW1pZW50bykgbG8gZGVjbGFyYW4gc2luIHBhcsOhbWV0cm9zLCBwZXJvIGJhY2tlbmQtcGx1cyBzaWVtcHJlIGxvIGxsYW1hIGNvbiBjb250ZXh0LlxyXG4gICAgICAgIC8vIEVsIHRpcG8gZGUgcmV0b3JubyBxdWUgZGVjbGFyYSBvcGVyYXRpdm9zIChNZW51SW5mb1tdKSBubyBhZG1pdGUgZm9ybWFzIHF1ZSBiYWNrZW5kLXBsdXMgc8OtIGFjZXB0YSB5IGRtZW5jdSB1c2FcclxuICAgICAgICAvLyAoZmYgY29tbyBvYmpldG8sIGZjIGNvbiBjb2x1bW4pOyBzZSBkZXZ1ZWx2ZSBNZW51SW5mb0Jhc2VbXSwgcXVlIGVzIGxvIHF1ZSBkZWNsYXJhIGJhY2tlbmQtcGx1cy5cclxuICAgICAgICAvLyBRdWl0YXIgZXN0YSBsw61uZWEgY3VhbmRvIHNlIGNvcnJpamFuIGxvcyB0aXBvcyBkZSBtZW7DuiBlbiBvcGVyYXRpdm9zL2JhY2tlbmQtcGx1cyAoZWwgY29tcGlsYWRvciBhdmlzYSBzaSBkZWphIGRlIGhhY2VyIGZhbHRhKS5cclxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIE1lbnVEZWZpbml0aW9uIGRlIG9wZXJhdGl2b3MgbcOhcyBlc3RyaWN0byBxdWUgZWwgZGUgYmFja2VuZC1wbHVzXHJcbiAgICAgICAgb3ZlcnJpZGUgZ2V0TWVudShjb250ZXh0PzogQ29udGV4dCkge1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldE1lbnUgZGUgZG1lbmN1IHJlcXVpZXJlIGVsIGNvbnRleHQgcGFyYSBhcm1hciBlbCBtZW7DuiBzZWfDum4gbG9zIHBlcm1pc29zJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IG1lbnU6IE1lbnVJbmZvQmFzZVtdID0gW107XHJcbiAgICAgICAgICAgIGlmIChnZXRNb2RvQnlQb2xpY3koY29udGV4dC5iZSkgPT09ICdSRUxFVkFNSUVOVE8nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5yZWxldmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHsgbWVudVR5cGU6ICdwYXRoJywgbmFtZTogJ3JlbGV2YW1pZW50bycsIHBhdGg6ICcvY2FtcG8nIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAnc2luY3Jvbml6YXJfZG0nLCBuYW1lOiAnc2luY3Jvbml6YXInIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICdjYW1iaWFyX21vZG9fZG0nLCBuYW1lOiAnY2FtYmlhcl9tb2RvJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNZW51QXNpZ25hY2lvbihjb250ZXh0KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNZW51UmVjZXBjaW9uKGNvbnRleHQpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFyZWFzX3RlbV9maW5fY2FtcG8nLCBsYWJlbDogJ2VzcGVyYSBmaW4gZGUgY2FtcG8nIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wbycsIGxhYmVsOiAnYW7DoWxpc2lzIGRlIGNhbXBvJyB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdzdXBlcnZpc2lvbicsIGxhYmVsOiAnc3VwZXJ2aXNpw7NuJywgbWVudUNvbnRlbnQ6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnc3VwZXJ2aXNhcicsIHRhYmxlOiAndGFyZWFzX3RlbV9pbmdyZXNvJywgZmY6IHsgdGFyZWE6ICdzdXBlJywgYXNpZ25hZG86IGNvbnRleHQudXNlci5pZHBlciB9IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uZWRpdGFyIHx8IGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHRoaXMuZ2V0TWVudVZhcmlvcyhjb250ZXh0KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ2NvbnRyb2wnLCBtZW51Q29udGVudDogdGhpcy5nZXRNZW51Q29udHJvbGVzKGNvbnRleHQpIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIC8qe21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3BhcnRpY2lwYWNpb24nICAgICAgICAsIHRhYmxlOidjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb24nICB9LCovXHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdwcm9jZXNhcicsIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3ZhcmlhYmxlcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndmFyaWFibGVzX2N1ZXN0aW9uYXJpbycsIHRhYmxlOiAnY2FzaWxsZXJvcycsIHRkOiB7IGVkaXRhYmxlOiBmYWxzZSwgYWxsb3c6IHsgdXBkYXRlOiBmYWxzZSwgaW1wb3J0OiBmYWxzZSwgZGVsZXRlOiBmYWxzZSwgaW5zZXJ0OiBmYWxzZSB9IH0sIGZjOiBbeyBjb2x1bW46ICd2YXJfbmFtZScsIG9wZXJhdG9yOiAnIT1cXHUyMjA1JywgdmFsdWU6IG51bGwgfV0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnY29uc2lzdGVuY2lhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnY29uc2lzdGVuY2lhc19jdWVzdGlvbmFyaW8nLCB0YWJsZTogJ2Nhc2lsbGVyb3MnLCBmZjogeyB0aXBvYzogJ0NPTlMnIH0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnaW5jb25zaXN0ZW5jaWFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0YWJsYV9kYXRvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZGljY2lvbmFyaW8nLCBsYWJlbDogJ2RpY2Npb25hcmlvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvJywgbGFiZWw6ICdlbmN1ZXN0YXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IG1lbnVDb25maWd1cmFyID0gdGhpcy5nZXRNZW51Q29uZmlndXJhcihjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChtZW51Q29uZmlndXJhci5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goeyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnY29uZmlndXJhcicsIG1lbnVDb250ZW50OiBtZW51Q29uZmlndXJhciB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IG1lbnVDYXJ0byA9IHRoaXMuZ2V0TWVudUNhcnRvKGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1lbnVDYXJ0bykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaChtZW51Q2FydG8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0ZW1hc1Zpc2libGVzKHRoaXMuY2FjaGVzLmF5dWRhLCBxdWllbkNvbnN1bHRhQXl1ZGEoY29udGV4dCkpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKHsgbWVudVR5cGU6ICdheXVkYScsIG5hbWU6ICdheXVkYScgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHsgbWVudSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBwcmVwYXJlR2V0VGFibGVzKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzdXBlci5wcmVwYXJlR2V0VGFibGVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uID0ge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRUYWJsZURlZmluaXRpb25cclxuICAgICAgICAgICAgICAgICwgcm9sZXNcclxuICAgICAgICAgICAgICAgICwgdXN1YXJpb3NcclxuICAgICAgICAgICAgICAgICwgcGVyc29uYWxcclxuICAgICAgICAgICAgICAgICwgcmVjZXBjaW9uaXN0YXNcclxuICAgICAgICAgICAgICAgICwgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgICAgICwgaW5ncmVzYWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAgICAgLCByZWN1cGVyYWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAgICAgLCBzdXBlcnZpc29yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIG1pc19zdXBlcnZpc29yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIG1pc19lbmN1ZXN0YWRvcmVzXHJcbiAgICAgICAgICAgICAgICAsIHJlY3VwZXJhZG9yZXNcclxuICAgICAgICAgICAgICAgICwgc3VwZXJ2aXNvcmVzXHJcbiAgICAgICAgICAgICAgICAsIHBlcnNvbmFsX3JvbFxyXG4gICAgICAgICAgICAgICAgLCBwZXJtaXNvc1xyXG4gICAgICAgICAgICAgICAgLCByb2xlc19wZXJtaXNvc1xyXG4gICAgICAgICAgICAgICAgLCByb2xlc19zdWJvcmRpbmFkb3NcclxuICAgICAgICAgICAgICAgICwgbm9fcmVhXHJcbiAgICAgICAgICAgICAgICAsIG5vX3JlYV9zdXBcclxuICAgICAgICAgICAgICAgICwgcmVhXHJcbiAgICAgICAgICAgICAgICAsIHJlYV9zdXBcclxuICAgICAgICAgICAgICAgICwgc2VtYW5hc1xyXG4gICAgICAgICAgICAgICAgLCBlc3RhZG9zXHJcbiAgICAgICAgICAgICAgICAsIGFjY2lvbmVzXHJcbiAgICAgICAgICAgICAgICAsIGVzdGFkb3NfYWNjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3Byb3hpbWFzXHJcbiAgICAgICAgICAgICAgICAsIHRlbVxyXG4gICAgICAgICAgICAgICAgLCBoaXN0b3JpYWxfdGVtXHJcbiAgICAgICAgICAgICAgICAsIG1vZG9zX2RtXHJcbiAgICAgICAgICAgICAgICAsIHBhcmFtZXRyb3NcclxuICAgICAgICAgICAgICAgICwgb3BlcmFjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgY29tdW5hc1xyXG4gICAgICAgICAgICAgICAgLCBhcmVhc1xyXG4gICAgICAgICAgICAgICAgLCBzaW5jcm9uaXphY2lvbmVzXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9lbmN1XHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9yZWN1XHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9zdXBlXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9pbmdyXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc19hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCBhcmVhc19hc2lnbmFjaW9uX2dlbmVyYWxcclxuICAgICAgICAgICAgICAgICwgZ3JpbGxhX2hvamFfcnV0YVxyXG4gICAgICAgICAgICAgICAgLCB0X2VuY3VfYXJlYXNcclxuICAgICAgICAgICAgICAgICwgdF9yZWN1X2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRfc3VwZV9hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCB0X2luZ3JfYXJlYXNcclxuICAgICAgICAgICAgICAgICwgbWlzX3RhcmVhc1xyXG4gICAgICAgICAgICAgICAgLCB0ZW1fYXNpZ25hY2lvblxyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX3JlY2VwY2lvblxyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2luZ3Jlc29cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9maW5fY2FtcG9cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fYW5hbGlzaXNfY2FtcG9cclxuICAgICAgICAgICAgICAgICwgbWlzX3RhcmVhc19hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfcmVzdW1lblxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3pvbmE6IGNvbnRleHQgPT4gY29udHJvbF9jYW1wbyhjb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbm9tYnJlOiAnY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTogJ2NvbnRyb2wgY2FtcG8geCB6b25hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOiBbeyBuYW1lOiAnem9uYScsIHR5cGVOYW1lOiAndGV4dCcgfV0sIHNpbmhvZ2ZpbjogIWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyLCBmaWx0cm9XaGVyZTogJ2RvbWluaW89MycgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2NvbXVuYTogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IGNvbXVuYSBzb2xvIGNlbWVudG8nLCBjYW1wb3NDb3J0ZTogW3sgbmFtZTogJ3pvbmEnLCB0eXBlTmFtZTogJ3RleHQnIH0sIHsgbmFtZTogJ25yb2NvbXVuYScsIHR5cGVOYW1lOiAndGV4dCcgfV0sIHNpbmhvZ2ZpbjogIWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyLCBmaWx0cm9XaGVyZTogJ2RvbWluaW89MycgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2FyZWE6IGNvbnRleHQgPT4gY29udHJvbF9jYW1wbyhjb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbm9tYnJlOiAnY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTogJ2NvbnRyb2wgY2FtcG8geCBhcmVhJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICd6b25hJywgdHlwZU5hbWU6ICd0ZXh0JyB9LCB7IG5hbWU6ICducm9jb211bmEnLCB0eXBlTmFtZTogJ3RleHQnIH0sIHsgbmFtZTogJ2FyZWEnLCB0eXBlTmFtZTogJ2ludGVnZXInIH0sIHsgbmFtZTogJ3BhcnRpY2lwYWNpb25fYScsIHR5cGVOYW1lOiAndGV4dCcgfSwgeyBuYW1lOiAnY2xhc2VfYScsIHR5cGVOYW1lOiAndGV4dCcgfV0sIHNpbmhvZ2ZpbjogIWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19wYXJ0aWNpcGFjaW9uOiBjb250ZXh0ID0+IGNvbnRyb2xfY2FtcG8oY29udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICB7IG5vbWJyZTogJ2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6ICdjb250cm9sIGNhbXBvIHggcGFydGljaXBhY2lvbicsIGNhbXBvc0NvcnRlOiBbeyBuYW1lOiAncGFydGljaXBhY2lvbicsIHR5cGVOYW1lOiAnYmlnaW50JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2RvbWluaW86IGNvbnRleHQgPT4gY29udHJvbF9jYW1wbyhjb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbm9tYnJlOiAnY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTogJ2NvbnRyb2wgY2FtcG8geCBkb21pbmlvJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICdkb21pbmlvJywgdHlwZU5hbWU6ICdpbnRlZ2VyJyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2RpYXNfY2FyZ2FcclxuICAgICAgICAgICAgICAgICwgdml2aWVuZGFzXHJcbiAgICAgICAgICAgICAgICAsIHZpc2l0YXNcclxuICAgICAgICAgICAgICAgICwgaG9nYXJlc1xyXG4gICAgICAgICAgICAgICAgLCBwZXJzb25hc1xyXG4gICAgICAgICAgICAgICAgLCB2aXNpdGFzX3N1cFxyXG4gICAgICAgICAgICAgICAgLCBob2dhcmVzX3N1cFxyXG4gICAgICAgICAgICAgICAgLCBwZXJzb25hc19zdXBcclxuICAgICAgICAgICAgICAgICwgZGljY2lvbmFyaW9cclxuICAgICAgICAgICAgICAgICwgZGljdmFyXHJcbiAgICAgICAgICAgICAgICAsIGRpY3RyYVxyXG4gICAgICAgICAgICAgICAgLCBpbmNvbnNpc3RlbmNpYXNfY3VtcGxlbl9jb25kaWNpb25cclxuICAgICAgICAgICAgICAgICwgdGVtX2JvcnJhZGFzXHJcbiAgICAgICAgICAgICAgICAsIGJhcnJpb3NcclxuICAgICAgICAgICAgICAgICwgZnJhY2Npb25lc1xyXG4gICAgICAgICAgICAgICAgLCByYWRpb3NcclxuICAgICAgICAgICAgICAgICwgbWFuemFuYXNcclxuICAgICAgICAgICAgICAgICwgYXJlYV9lbmNfcHJveGltYXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignY29uc2lzdGVuY2lhcycsIGZ1bmN0aW9uICh0YWJsZURlZiwgY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGUgPSB0YWJsZURlZi5lZGl0YWJsZSB8fCBjb250ZXh0Py5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcjtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5uYW1lID09ICdlcnJvcl9jb21waWxhY2lvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLnZpc2libGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJyoqKioqKioqKioqKiBRVUlUQVIgRVNUTyBlcnJvcl9jb21waWxhY2lvbiB5YSBlcyB2aXNpYmxlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ2luY29uc2lzdGVuY2lhcycsIGZ1bmN0aW9uICh0YWJsZURlZiwgY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuc3FsID0geyAuLi50YWJsZURlZi5zcWwsIGlzVGFibGU6IHRydWUgfTtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5zcGxpY2UoMiwgMCxcclxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICd2aXZpZW5kYScsIHR5cGVOYW1lOiAndGV4dCcsIGVkaXRhYmxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ2hvZ2FyJywgdHlwZU5hbWU6ICdiaWdpbnQnLCBlZGl0YWJsZTogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdwZXJzb25hJywgdHlwZU5hbWU6ICdiaWdpbnQnLCBlZGl0YWJsZTogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICd2aXNpdGEnLCB0eXBlTmFtZTogJ2JpZ2ludCcsIGVkaXRhYmxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmVkaXRhYmxlID0gdGFibGVEZWYuZWRpdGFibGUgfHwgY29udGV4dD8ucHVlZGU/LmVuY3Vlc3Rhcz8uanVzdGlmaWNhcjtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5uYW1lID09ICdwa19pbnRlZ3JhZGEnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0gJ2p1c3RpZmljYWNpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmVkaXRhYmxlID0gY29udGV4dD8uZm9yRHVtcCB8fCBjb250ZXh0Py5wdWVkZT8uZW5jdWVzdGFzPy5qdXN0aWZpY2FyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMgPSB0YWJsZURlZi5maWVsZHMuY29uY2F0KFsndGFyZWFfYWN0dWFsJywgJ3RhcmVhX2FudGVyaW9yJ10ubWFwKGZuID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiBmbiwgdHlwZU5hbWU6ICd0ZXh0JywgZWRpdGFibGU6IGZhbHNlLCBpblRhYmxlOiBmYWxzZSB9XHJcbiAgICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgICAgIC8vc2FjYXIgY2FtcG9zIGRlIHZpdGFsZXMhIFxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVnRXhwRmllbGRzVml0YSA9IG5ldyBSZWdFeHAoJ14oY29tcHxpbmZlfGNvZF9jYXVzYXxkb21pKSQnKTtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcyA9IHRhYmxlRGVmLmZpZWxkcy5maWx0ZXIoZiA9PiAhKHJlZ0V4cEZpZWxkc1ZpdGEudGVzdChmLm5hbWUpKSlcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgcV9pbmNvbnNpc3QgPSB0YWJsZURlZi5zcWwhLmZyb21cclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLnNxbCEuZnJvbSA9IGBcclxuICAgICAgICAgICAgICAgIChzZWxlY3QgaS4qLCB0LnRhcmVhX2FjdHVhbCwgdGFyZWFfYW50ZXJpb3JcclxuICAgICAgICAgICAgICAgICAgZnJvbSAke3FfaW5jb25zaXN0fSBpIFxyXG4gICAgICAgICAgICAgICAgICBqb2luIHRlbSB0IG9uIGkudml2aWVuZGE9dC5lbmMgYW5kIGkub3BlcmF0aXZvPXQub3BlcmF0aXZvIFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0IGpvaW4gdGFyZWFzX3RlbSB0dCBvbiB0Lm9wZXJhdGl2bz10dC5vcGVyYXRpdm8gYW5kIHQuZW5jPXR0LmVuYyBhbmQgdC50YXJlYV9hY3R1YWw9dHQudGFyZWEgXHJcbiAgICAgICAgICAgICAgICAgIGxlZnQgam9pbiBsYXRlcmFsIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0IHRhcmVhIGFzIHRhcmVhX2FudGVyaW9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhpc3RvcmlhbF90ZW0gaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHQub3BlcmF0aXZvID0gaHQub3BlcmF0aXZvIGFuZCB0LmVuYyA9IGh0LmVuY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgYnkgdHNfc2FsaWRhIGRlc2NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0IDFcclxuICAgICAgICAgICAgICAgICAgICApIGFzIHRhIG9uIHRydWVcclxuICAgICAgICAgICAgICAgICkgICBcclxuICAgICAgICAgICAgYFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignb3BlcmF0aXZvcycsIGZ1bmN0aW9uICh0YWJsZURlZiwgY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnNwbGljZSgyLCAwLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbmZpZ19zb3J0ZW8nLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGVOYW1lOiAnanNvbmInLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdoYWJpbGl0YWNpb25fYm90b25fZm9ybXVsYXJpbycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdqc29uYicsXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rpc2Zvcm1fY2VycmFkbycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdib29sZWFuJyxcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBjb250ZXh0Py5mb3JEdW1wIHx8IGNvbnRleHQgIT0gbnVsbCAmJiBbJ2FkbWluJywgJ2Rpc19jb25jZXB0dWFsJ10uaW5jbHVkZXMoY29udGV4dC51c2VyLnJvbClcclxuICAgICAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29uX3JlYV9ob2dhcicsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdib29sZWFuJyxcclxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdERiVmFsdWU6ICd0cnVlJ1xyXG4gICAgICAgICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJtaXRlX2dlbmVyYXJfbXVlc3RyYScsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdib29sZWFuJyxcclxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdERiVmFsdWU6ICdmYWxzZSdcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbigndmFyaWFibGVzJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXNBZG1pbiA9IGNvbnRleHQ/LnVzZXIucm9sID09PSAnYWRtaW4nO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGUgPSB0YWJsZURlZi5lZGl0YWJsZSB8fCBjb250ZXh0Py5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcjtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmFsbG93ID0geyBkZWxldGU6IGVzQWRtaW4gfTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ21vbWVudG9zX2NvbnNpc3RlbmNpYScsIGZ1bmN0aW9uICh0YWJsZURlZiwgX2NvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ2NvbmRpY2lvbicsIHR5cGVOYW1lOiAndGV4dCcsIG51bGxhYmxlOiBmYWxzZSwgZGVmYXVsdERiVmFsdWU6ICd0cnVlJyB9LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ3BhcmFtZXRyb3MnLCBmdW5jdGlvbiAodGFibGVEZWYpIHtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ21vZG9fZG1fZGVmZWN0bycsIHR5cGVOYW1lOiAndGV4dCcsIGVkaXRhYmxlOiB0cnVlLCBudWxsYWJsZTogZmFsc2UsIGRlZmF1bHREYlZhbHVlOiBcIidjYXBhJ1wiIH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZm9yZWlnbktleXMgPSB0YWJsZURlZi5mb3JlaWduS2V5cyB8fCBbXTtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZvcmVpZ25LZXlzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyByZWZlcmVuY2VzOiAnbW9kb3NfZG0nLCBmaWVsZHM6IFt7IHNvdXJjZTogJ21vZG9fZG1fZGVmZWN0bycsIHRhcmdldDogJ21vZG9fZG0nIH1dIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIEFwcERtRW5jdSA9IGVtZXJnZUFwcERtRW5jdShlbWVyZ2VBcHBQcm9jZXNhbWllbnRvKGVtZXJnZUFwcENvbnNpc3RlbmNpYXMoZW1lcmdlQXBwVmFyQ2FsKGVtZXJnZUFwcERhdG9zRXh0KGVtZXJnZUFwcE9wZXJhdGl2b3MoQXBwQmFja2VuZCkpKSkpKTtcclxuZXhwb3J0IHR5cGUgQXBwQXBwRG1FbmN1VHlwZSA9IEluc3RhbmNlVHlwZTx0eXBlb2YgQXBwRG1FbmN1PjsiXX0=
|