dmencu 2.0.20 → 2.0.21

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.
Files changed (59) hide show
  1. package/dist/client/server/table-tem.d.ts +3 -0
  2. package/dist/client/server/table-tem.js +239 -0
  3. package/dist/client/server/types-dmencu.d.ts +48 -0
  4. package/dist/client/server/types-dmencu.js +33 -0
  5. package/dist/client/unlogged/css/bootstrap.min.css +6 -6
  6. package/dist/client/unlogged/tsconfig.json +14 -14
  7. package/dist/server/server/table-barrios.js +1 -1
  8. package/dist/server/server/table-comunas copy.d.ts +2 -0
  9. package/dist/server/server/table-comunas copy.js +28 -0
  10. package/dist/server/server/table-comunas.js +2 -2
  11. package/dist/server/server/table-encuestadores.js +7 -7
  12. package/dist/server/server/table-fracciones.js +1 -1
  13. package/dist/server/server/table-hogares.js +1 -1
  14. package/dist/server/server/table-hogares_sup.js +1 -1
  15. package/dist/server/server/table-manzanas.js +1 -1
  16. package/dist/server/server/table-parametros.js +1 -1
  17. package/dist/server/server/table-personal.js +7 -7
  18. package/dist/server/server/table-personal_rol.js +7 -7
  19. package/dist/server/server/table-personas.js +1 -1
  20. package/dist/server/server/table-personas_sup.js +1 -1
  21. package/dist/server/server/table-radios.js +3 -3
  22. package/dist/server/server/table-recepcionistas.js +1 -1
  23. package/dist/server/server/table-visitas.js +1 -1
  24. package/dist/server/server/table-visitas_sup.js +1 -1
  25. package/dist/server/server/table-viviendas.js +1 -1
  26. package/dist/unlogged/unlogged/css/bootstrap.min.css +6 -6
  27. package/dist/unlogged/unlogged/server/table-tem.d.ts +3 -0
  28. package/dist/unlogged/unlogged/server/table-tem.js +239 -0
  29. package/dist/unlogged/unlogged/server/types-dmencu.d.ts +48 -0
  30. package/dist/unlogged/unlogged/server/types-dmencu.js +33 -0
  31. package/dist/unlogged/unlogged/tsconfig.json +14 -14
  32. package/dist/unlogged/unlogged/unlogged/abrir-formulario.d.ts +13 -0
  33. package/dist/unlogged/unlogged/unlogged/abrir-formulario.js +109 -0
  34. package/dist/unlogged/unlogged/unlogged/adapt.d.ts +0 -0
  35. package/dist/unlogged/unlogged/unlogged/adapt.js +8 -0
  36. package/dist/unlogged/unlogged/unlogged/bypass-formulario.d.ts +202 -0
  37. package/dist/unlogged/unlogged/unlogged/bypass-formulario.js +1100 -0
  38. package/dist/unlogged/unlogged/unlogged/redux-formulario.d.ts +349 -0
  39. package/dist/unlogged/unlogged/unlogged/redux-formulario.js +318 -0
  40. package/dist/unlogged/unlogged/unlogged/render-formulario.d.ts +86 -0
  41. package/dist/unlogged/unlogged/unlogged/render-formulario.js +1692 -0
  42. package/dist/unlogged/unlogged/unlogged/render-general.d.ts +127 -0
  43. package/dist/unlogged/unlogged/unlogged/render-general.js +176 -0
  44. package/dist/unlogged/unlogged/unlogged/tipos.d.ts +486 -0
  45. package/dist/unlogged/unlogged/unlogged/tipos.js +22 -0
  46. package/dist/unlogged/unlogged/unlogged/unlogged.d.ts +1 -0
  47. package/dist/unlogged/unlogged/unlogged/unlogged.js +180 -0
  48. package/install/actualizar-2023-05-14.sql +38 -38
  49. package/install/actualizar_inconvar.sql +28 -28
  50. package/install/agregados_tem.sql +4 -4
  51. package/install/asignar_desasignar_tareas_tem_trg.sql +43 -43
  52. package/install/metadatos/permisos.tab +11 -11
  53. package/install/metadatos/roles.tab +10 -10
  54. package/install/metadatos/roles_permisos.tab +94 -94
  55. package/install/metadatos/tipovar.tab +9 -9
  56. package/install/sincro_tareas_areas_tareas_tem_trg.sql +29 -29
  57. package/install/usuarios_trg.sql +41 -41
  58. package/install/validar_tareas_tem_trg.sql +67 -67
  59. package/package.json +91 -91
@@ -0,0 +1,318 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ (function (factory) {
11
+ if (typeof module === "object" && typeof module.exports === "object") {
12
+ var v = factory(require, exports);
13
+ if (v !== undefined) module.exports = v;
14
+ }
15
+ else if (typeof define === "function" && define.amd) {
16
+ define(["require", "exports", "redux", "./tipos", "redux-typed-reducer", "like-ar", "best-globals", "json4all"], factory);
17
+ }
18
+ })(function (require, exports) {
19
+ "use strict";
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.dispatchers = void 0;
22
+ exports.replaceSpecialWords = replaceSpecialWords;
23
+ exports.gotoSincronizar = gotoSincronizar;
24
+ exports.gotoCampo = gotoCampo;
25
+ exports.gotoConsistir = gotoConsistir;
26
+ exports.getCacheVersion = getCacheVersion;
27
+ exports.traerEstructura = traerEstructura;
28
+ exports.dmTraerDatosFormulario = dmTraerDatosFormulario;
29
+ const redux_1 = require("redux");
30
+ const tipos_1 = require("./tipos");
31
+ const redux_typed_reducer_1 = require("redux-typed-reducer");
32
+ const likeAr = require("like-ar");
33
+ const bestGlobals = require("best-globals");
34
+ const JSON4all = require("json4all");
35
+ var my = myOwn;
36
+ const LOCAL_STORAGE_STATE_NAME = 'hdr-state';
37
+ function forPkToUrl(forPk, pilaForPk) {
38
+ var addrParams = myOwn.UriSearchToObject(location.hash || location.search || '');
39
+ myOwn.replaceAddrParams(Object.assign(Object.assign({}, addrParams), { state_forPk: forPk == null ? 'null' : (0, tipos_1.toPlainForPk)(forPk), state_pilaForPk: pilaForPk.map(tipos_1.toPlainForPk).join('|') }));
40
+ }
41
+ var reducers = {
42
+ MODO_DESPLIEGUE: (payload) => function (state) {
43
+ return Object.assign(Object.assign({}, state), { opciones: Object.assign(Object.assign({}, state.opciones), { modoDespliegue: payload.modoDespliegue }) });
44
+ },
45
+ CAMBIAR_FORMULARIO: (payload) => function (state) {
46
+ var forPk = payload.forPk;
47
+ var pilaForPk = payload.apilarVuelta ? (state.opciones.forPk == null ? [] : [...state.opciones.pilaForPk, state.opciones.forPk]) : state.opciones.pilaForPk;
48
+ forPkToUrl(forPk, pilaForPk);
49
+ return Object.assign(Object.assign({}, state), { opciones: Object.assign(Object.assign({}, state.opciones), { forPk,
50
+ pilaForPk }) });
51
+ },
52
+ VOLVER_DE_FORMULARIO: ({ magnitudRetroceso }) => function (state) {
53
+ var forPk = state.opciones.pilaForPk[state.opciones.pilaForPk.length - magnitudRetroceso] || null;
54
+ var pilaForPk = state.opciones.pilaForPk.slice(0, state.opciones.pilaForPk.length - magnitudRetroceso);
55
+ forPkToUrl(forPk, pilaForPk);
56
+ return Object.assign(Object.assign({}, state), { opciones: Object.assign(Object.assign({}, state.opciones), { forPk,
57
+ pilaForPk }) });
58
+ },
59
+ ESTADO_CARGA: (payload) => function (state) {
60
+ return state;
61
+ //DESACTIVADO
62
+ //return {
63
+ // ...state,
64
+ // datos:{
65
+ // ...state.datos,
66
+ // cargas:{
67
+ // ...state.datos.cargas,
68
+ // [payload.idCarga]: {
69
+ // ...state.datos.cargas[payload.idCarga],
70
+ // estado_carga: payload.estado_carga
71
+ // }
72
+ // }
73
+ // }
74
+ //}
75
+ },
76
+ VOLVER_HDR: (_payload) => function (state) {
77
+ var forPk = null;
78
+ var pilaForPk = [];
79
+ forPkToUrl(forPk, pilaForPk);
80
+ return Object.assign(Object.assign({}, state), { opciones: Object.assign(Object.assign({}, state.opciones), { forPk,
81
+ pilaForPk }) });
82
+ },
83
+ SET_OPCION: (payload) => function (state) {
84
+ return Object.assign(Object.assign({}, state), { opciones: Object.assign(Object.assign({}, state.opciones), { [payload.opcion]: payload.valor }) });
85
+ },
86
+ RESET_OPCIONES: (_payload) => function (state) {
87
+ return Object.assign(Object.assign({}, state), { opciones: Object.assign(Object.assign({}, state.opciones), { forPk: null }) });
88
+ },
89
+ REINICIAR_DEMO: (_payload) => function (state) {
90
+ if (!state.modo.demo)
91
+ return state;
92
+ return Object.assign(Object.assign({}, state), {
93
+ // @ts-ignore copio los datos iniciales
94
+ datos: bestGlobals.deepCopy(state.modo.demo) });
95
+ },
96
+ CONFIRMAR_BORRAR_RESPUESTA: (payload) => function (state) {
97
+ return Object.assign(Object.assign({}, state), { opciones: Object.assign(Object.assign({}, state.opciones), { forPk: payload.forPk, modoBorrarRespuesta: payload.variable }) });
98
+ },
99
+ };
100
+ /* FIN ACCIONES */
101
+ exports.dispatchers = (0, redux_typed_reducer_1.createDispatchers)(reducers);
102
+ const casilleroVacio = { salto: null, despliegue: null, aclaracion: null, ver_id: null, casilleros: [], leer: null,
103
+ despliegueEncabezado: null, despliegueContenido: null, despliegueOculta: null, despliegueTipoInput: null
104
+ };
105
+ const opcionesSiNo = [
106
+ Object.assign(Object.assign({}, casilleroVacio), { casillero: 1, tipoc: 'O', nombre: 'Sí' }),
107
+ Object.assign(Object.assign({}, casilleroVacio), { casillero: 2, tipoc: 'O', nombre: 'No' }),
108
+ ];
109
+ function aplanarLaCurva(casillerosData) {
110
+ var _a, _b, _c, _d, _e, _f, _g;
111
+ var data = casillerosData.data;
112
+ return Object.assign(Object.assign({}, data), { despliegueContenido: ((_a = data.despliegue) === null || _a === void 0 ? void 0 : _a.includes('horizontal')) ? 'horizontal' : ((_b = data.despliegue) === null || _b === void 0 ? void 0 : _b.includes('vertical')) ? 'vertical' : null, despliegueEncabezado: ((_c = data.despliegue) === null || _c === void 0 ? void 0 : _c.includes('lateral')) ? 'lateral' : ((_d = data.despliegue) === null || _d === void 0 ? void 0 : _d.includes('superior')) ? 'superior' : null, despliegueOculta: (_f = (_e = data.despliegue) === null || _e === void 0 ? void 0 : _e.includes('ocultar')) !== null && _f !== void 0 ? _f : null, despliegueTipoInput: ((_g = data.despliegue) === null || _g === void 0 ? void 0 : _g.includes('telefono')) ? 'tel' : null, casilleros: !casillerosData.childs.length && casillerosData.data.tipoc == 'OM' ? opcionesSiNo :
113
+ casillerosData.childs.map(casillero => aplanarLaCurva(casillero)) });
114
+ }
115
+ // type AnyRef<T extends {}>=[T, keyof T];
116
+ function rellenarVariablesYOpciones(idFormulario, estructura, casillero, unidadAnalisis, subordinadaVar, subordinadaValor) {
117
+ if (casillero.var_name != null || casillero.tipoc == 'FILTRO') {
118
+ var var_name;
119
+ if (casillero.tipoc == 'FILTRO') {
120
+ // @ts-ignore pongo como nombre de variable el filtro;
121
+ var_name = casillero.casillero;
122
+ }
123
+ else if (casillero.var_name.endsWith('!')) {
124
+ // @ts-ignore las variables espejo son las que terminan en !
125
+ var_name = casillero.var_name_especial.replace(/!+$/, '');
126
+ casillero.var_name = var_name;
127
+ }
128
+ else {
129
+ var_name = casillero.var_name;
130
+ }
131
+ let variableDef = {
132
+ tipo: casillero.tipoc == 'FILTRO' ? 'filtro' : casillero.tipoc == 'OM' || casillero.tipovar == 'si_no' ? 'opciones' : casillero.tipovar,
133
+ // @ts-ignore optativo podría no existir, quedará null.
134
+ optativa: casillero.optativo,
135
+ opciones: (casillero.tipoc == 'OM' || casillero.tipovar == 'opciones' || casillero.tipovar == 'si_no' ?
136
+ likeAr.createIndex(casillero.casilleros, 'casillero') : {}),
137
+ salto: casillero.salto,
138
+ saltoNsNr: 'salto_ns_nc' in casillero && casillero.salto_ns_nc || null,
139
+ funcionHabilitar: casillero.expresion_habilitar_js,
140
+ funcionAutoIngresar: casillero.expresion_autoingresar_js,
141
+ calculada:
142
+ // @ts-ignore // TODO. Averiguar si las preguntas y filtros pueden tener unidad de análisis
143
+ casillero.unidad_analisis && casillero.unidad_analisis != unidadAnalisis
144
+ || casillero.calculada,
145
+ libre: casillero.libre
146
+ };
147
+ if (subordinadaValor != undefined) {
148
+ variableDef.subordinadaVar = subordinadaVar;
149
+ variableDef.subordinadaValor = subordinadaValor;
150
+ }
151
+ estructura.variables[var_name] = variableDef;
152
+ }
153
+ else if (casillero.tipoc == 'BF') {
154
+ // var var_name = '$B.F:'+casillero.salto as IdVariable; //original
155
+ var saltoNombre = casillero.salto.substr(0, 2) == 'F:' ? casillero.salto.slice(2) : casillero.salto;
156
+ var var_name = '$B.F:' + saltoNombre;
157
+ casillero.var_name_BF = var_name;
158
+ let variableDef = Object.assign({ tipo: 'texto', libre: true }, (casillero.expresion_habilitar ? { funcionHabilitar: `valores['${casillero.expresion_habilitar}'] !==0 ` } : {}));
159
+ estructura.variables[var_name] = variableDef;
160
+ }
161
+ if (casillero.casilleros) {
162
+ casillero.casilleros.forEach((casilleroHijo) => rellenarVariablesYOpciones(idFormulario, estructura, casilleroHijo, unidadAnalisis, casillero.var_name ? casillero.var_name : casillero.tipoc == 'O' ? subordinadaVar : undefined, casillero.tipoc == 'O' ? casillero.casillero : undefined));
163
+ }
164
+ }
165
+ function obtenerDestinosCasilleros(casillero, destinos) {
166
+ if (destinos == null)
167
+ return obtenerDestinosCasilleros(casillero, {});
168
+ if (casillero.tipoc == 'FILTRO') {
169
+ destinos[casillero.casillero] = casillero.casillero;
170
+ }
171
+ else if (casillero.tipoc != 'F' && casillero.tipoc != 'O' && casillero.tipoc != 'OM') {
172
+ destinos[casillero.casillero] = casillero.primera_variable || null;
173
+ }
174
+ if (casillero.casilleros) {
175
+ casillero.casilleros.forEach(c => obtenerDestinosCasilleros(c, destinos));
176
+ }
177
+ return destinos;
178
+ }
179
+ function rellenarDestinos(estructura, destinos) {
180
+ function obtenerDestino(idVariableQueTieneUnDestino) {
181
+ return idVariableQueTieneUnDestino == 'fin' ? 'fin' : idVariableQueTieneUnDestino != null && destinos[idVariableQueTieneUnDestino] || null;
182
+ }
183
+ return Object.assign(Object.assign({}, estructura), { variables: likeAr(estructura.variables).map(variableDef => (Object.assign(Object.assign({}, variableDef), { salto: obtenerDestino(variableDef.salto), saltoNsNr: obtenerDestino(variableDef.saltoNsNr), opciones: variableDef.opciones != null ? likeAr(variableDef.opciones).map(opcionDef => ({ salto: obtenerDestino(opcionDef.salto) })).plain() : undefined }))).plain() });
184
+ }
185
+ function generarEstructuraRowValidator(casillero, idFormulario) {
186
+ var estructuraIncompleta = { variables: {}, marcaFin: 'fin' };
187
+ rellenarVariablesYOpciones(idFormulario, estructuraIncompleta, casillero,
188
+ // @ts-ignore ver si cualquier cosa puede tener unidad_analisis
189
+ casillero.unidad_analisis);
190
+ var destinos = obtenerDestinosCasilleros(casillero);
191
+ return rellenarDestinos(estructuraIncompleta, destinos);
192
+ }
193
+ function replaceSpecialWords(text, nombre, apellido, resultado) {
194
+ function capitalizeFirstLetter(text) {
195
+ return text.charAt(0).toUpperCase() + text.slice(1);
196
+ }
197
+ var simplificatedChars = {
198
+ "#nombre": capitalizeFirstLetter(nombre),
199
+ "#apellido": capitalizeFirstLetter(apellido),
200
+ "#resultado": resultado,
201
+ };
202
+ var re = new RegExp(Object.keys(simplificatedChars).join("|"), "gi");
203
+ return text.replace(re, function (matched) {
204
+ return simplificatedChars[matched.toLowerCase()];
205
+ });
206
+ }
207
+ function gotoSincronizar() {
208
+ history.replaceState(null, '', `${location.origin + location.pathname}/../menu#i=sincronizar`);
209
+ location.reload();
210
+ }
211
+ function gotoCampo() {
212
+ history.replaceState(null, '', `${location.origin + location.pathname}/../campo`);
213
+ location.reload();
214
+ }
215
+ function gotoConsistir(operativo, tarea, enc) {
216
+ // TODO-2023-03: probar con esto:
217
+ history.replaceState(null, '', `${location.origin + location.pathname}/../menu#w=consistir_encuesta&up=${JSON4all.toUrl({ operativo, tarea, enc })}&autoproced=true`);
218
+ // history.replaceState(null, '', `${location.origin+location.pathname}/../menu#w=consistir_encuesta&up={"operativo":"${operativo}","tarea":"${tarea}","encuesta":${encuesta}}&autoproced=true`);
219
+ location.reload();
220
+ }
221
+ function getCacheVersion() {
222
+ return my.getLocalVar('app-cache-version');
223
+ }
224
+ var redirectIfNotLogged = function redirectIfNotLogged(err) {
225
+ if (err.message == my.messages.notLogged) {
226
+ setTimeout(() => {
227
+ history.replaceState(null, '', `${location.origin + location.pathname}/../login${location.hash}`);
228
+ location.reload();
229
+ }, 1500);
230
+ }
231
+ };
232
+ function traerEstructura(params) {
233
+ return __awaiter(this, void 0, void 0, function* () {
234
+ var estructura = yield my.ajax.operativo_estructura_completa(params);
235
+ var casillerosOriginales = estructura.formularios;
236
+ //TODO: GENERALIZAR
237
+ //@ts-ignore
238
+ // casillerosOriginales['F:F2_personas']=casillerosOriginales['F:F2'].childs.find(casillero=>casillero.data.casillero=='LP');
239
+ var mainForm;
240
+ //@ts-ignore
241
+ var casillerosTodosFormularios = likeAr(casillerosOriginales).map((casillerosJerarquizados, idFormulario) => {
242
+ var casillerosAplanados = aplanarLaCurva(casillerosJerarquizados);
243
+ if (casillerosAplanados.tipoc == 'F' && casillerosAplanados.formulario_principal) {
244
+ mainForm = idFormulario;
245
+ }
246
+ return {
247
+ casilleros: casillerosAplanados,
248
+ estructuraRowValidator: generarEstructuraRowValidator(casillerosAplanados, idFormulario)
249
+ };
250
+ }).plain();
251
+ estructura.formularios = casillerosTodosFormularios;
252
+ return estructura;
253
+ });
254
+ }
255
+ function dmTraerDatosFormulario(opts) {
256
+ return __awaiter(this, void 0, void 0, function* () {
257
+ var getCasoState = () => myOwn.getLocalVar(LOCAL_STORAGE_STATE_NAME);
258
+ var setCasoState = (casoState) => myOwn.setLocalVar(LOCAL_STORAGE_STATE_NAME, casoState);
259
+ var loadState = function loadState() {
260
+ return __awaiter(this, void 0, void 0, function* () {
261
+ var casoState = getCasoState();
262
+ var initialState = {
263
+ opciones: {
264
+ forPk: null,
265
+ pilaForPk: [],
266
+ modoDespliegue: 'relevamiento',
267
+ modoDirecto: false,
268
+ conCampoOpciones: false,
269
+ saltoAutomatico: true,
270
+ bienvenido: true,
271
+ modoBorrarRespuesta: null,
272
+ }, // poner los valores por defecto más abajo
273
+ modo: {
274
+ //@ts-ignore es un booleano pero pongo ahí los datos de demo!
275
+ demo:
276
+ // @ts-ignore
277
+ myOwn.config.config.ambiente == 'test' || myOwn.config.config.ambiente == 'demo',
278
+ }
279
+ };
280
+ if (casoState) {
281
+ initialState = Object.assign(Object.assign({}, initialState), { opciones: casoState.opciones });
282
+ }
283
+ if (opts.forPkRaiz) {
284
+ initialState.opciones.forPk = opts.forPkRaiz;
285
+ initialState.opciones.modoDirecto = !!opts.forPkRaiz;
286
+ initialState.opciones.pilaForPk = [];
287
+ }
288
+ var addrParams = myOwn.UriSearchToObject(location.hash || location.search || '');
289
+ if (addrParams.state_forPk) {
290
+ initialState.opciones.forPk = JSON.parse(addrParams.state_forPk);
291
+ }
292
+ if (addrParams.state_pilaForPk) {
293
+ initialState.opciones.pilaForPk = addrParams.state_pilaForPk.split('|').map(j => JSON4all.parse(j));
294
+ }
295
+ return initialState;
296
+ });
297
+ };
298
+ var saveState = function saveState(state) {
299
+ setCasoState(state);
300
+ };
301
+ /* DEFINICION CONTROLADOR */
302
+ var initialState = yield loadState();
303
+ const hdrReducer = (0, redux_typed_reducer_1.createReducer)(reducers, initialState);
304
+ /* FIN DEFINICION CONTROLADOR */
305
+ /* CARGA Y GUARDADO DE STATE */
306
+ /* CREACION STORE */
307
+ const store = (0, redux_1.createStore)(hdrReducer, initialState);
308
+ saveState(store.getState());
309
+ store.subscribe(function () {
310
+ saveState(store.getState());
311
+ });
312
+ /* FIN CREACION STORE */
313
+ //HDR CON STORE CREADO
314
+ return store;
315
+ });
316
+ }
317
+ });
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQThSQSxrREFjQztJQUVELDBDQUdDO0lBRUQsOEJBR0M7SUFFRCxzQ0FLQztJQUVELDBDQUVDO0lBWUQsMENBdUJDO0lBRUQsd0RBNkRDO0lBbmFELGlDQUFvQztJQUNwQyxtQ0FVaUI7SUFDakIsNkRBQW9GO0lBRXBGLGtDQUFrQztJQUNsQyw0Q0FBNEM7SUFDNUMscUNBQXFDO0lBSXJDLElBQUksRUFBRSxHQUFDLEtBQUssQ0FBQztJQUViLE1BQU0sd0JBQXdCLEdBQUUsV0FBVyxDQUFDO0lBRTVDLFNBQVMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsU0FBaUI7UUFDbkQsSUFBSSxVQUFVLEdBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUUsUUFBUSxDQUFDLE1BQU0sSUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRSxLQUFLLENBQUMsaUJBQWlCLGlDQUNoQixVQUFVLEtBQ2IsV0FBVyxFQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxFQUN4RCxlQUFlLEVBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUN2RCxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksUUFBUSxHQUFDO1FBQ1QsZUFBZSxFQUFFLENBQUMsT0FBd0MsRUFBRSxFQUFFLENBQzFELFVBQVMsS0FBZ0I7WUFDckIsdUNBQ08sS0FBSyxLQUNSLFFBQVEsa0NBQ0QsS0FBSyxDQUFDLFFBQVEsS0FDakIsY0FBYyxFQUFDLE9BQU8sQ0FBQyxjQUFjLE9BRTVDO1FBQ0ws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QXNCO1lBQ3RCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7S0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSBcInJlZHV4XCI7XHJcbmltcG9ydCB7IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCBDYXNvU3RhdGUsIFxyXG4gICAgRXN0YWRvQ2FyZ2EsIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsIFxyXG4gICAgRm9ybXVsYXJpbywgRm9yUGssIEZvclBrUmFpeiwgXHJcbiAgICBJZENhcmdhLCBJZERlc3Rpbm8sIElkRm9ybXVsYXJpbywgSWRWYXJpYWJsZSwgSWRPcGVyYXRpdm8sIFxyXG4gICAgTW9kb0Rlc3BsaWVndWUsIFxyXG4gICAgT3BjaW9uLFxyXG4gICAgdG9QbGFpbkZvclBrLFxyXG4gICAgSWRGaW4sXHJcbiAgICBJZEVuYyxcclxuICAgIElkVGFyZWEsXHJcbn0gZnJvbSBcIi4vdGlwb3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgY3JlYXRlRGlzcGF0Y2hlcnMsIEFjdGlvbnNGcm9tIH0gZnJvbSBcInJlZHV4LXR5cGVkLXJlZHVjZXJcIjtcclxuaW1wb3J0IHsgTW9kb0FsbWFjZW5hbWllbnRvIH0gZnJvbSBcIi4vdGlwb3NcIlxyXG5pbXBvcnQgKiBhcyBsaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuaW1wb3J0ICogYXMgYmVzdEdsb2JhbHMgZnJvbSBcImJlc3QtZ2xvYmFsc1wiO1xyXG5pbXBvcnQgKiBhcyBKU09ONGFsbCBmcm9tIFwianNvbjRhbGxcIjtcclxuXHJcbmltcG9ydCB7IE9wY2lvbiBhcyBSb3dWYWxpZGF0b3JPcGNpb24gfSBmcm9tIFwicm93LXZhbGlkYXRvclwiO1xyXG5cclxudmFyIG15PW15T3duO1xyXG5cclxuY29uc3QgTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FID0naGRyLXN0YXRlJztcclxuXHJcbmZ1bmN0aW9uIGZvclBrVG9VcmwoZm9yUGs6Rm9yUGt8bnVsbCwgcGlsYUZvclBrOkZvclBrW10pe1xyXG4gICAgdmFyIGFkZHJQYXJhbXM9bXlPd24uVXJpU2VhcmNoVG9PYmplY3QobG9jYXRpb24uaGFzaHx8bG9jYXRpb24uc2VhcmNofHwnJyk7XHJcbiAgICBteU93bi5yZXBsYWNlQWRkclBhcmFtcyh7XHJcbiAgICAgICAgLi4uYWRkclBhcmFtcywgXHJcbiAgICAgICAgc3RhdGVfZm9yUGs6Zm9yUGsgPT0gbnVsbCA/ICdudWxsJyA6IHRvUGxhaW5Gb3JQayhmb3JQayksIFxyXG4gICAgICAgIHN0YXRlX3BpbGFGb3JQazpwaWxhRm9yUGsubWFwKHRvUGxhaW5Gb3JQaykuam9pbignfCcpXHJcbiAgICB9KTtcclxufVxyXG5cclxudmFyIHJlZHVjZXJzPXtcclxuICAgIE1PRE9fREVTUExJRUdVRTogKHBheWxvYWQ6IHttb2RvRGVzcGxpZWd1ZTpNb2RvRGVzcGxpZWd1ZX0pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kb0Rlc3BsaWVndWU6cGF5bG9hZC5tb2RvRGVzcGxpZWd1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENBTUJJQVJfRk9STVVMQVJJTzogKHBheWxvYWQ6IHtmb3JQazpGb3JQaywgYXBpbGFyVnVlbHRhOmJvb2xlYW59KSA9PiBcclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgdmFyIGZvclBrID0gcGF5bG9hZC5mb3JQaztcclxuICAgICAgICAgICAgdmFyIHBpbGFGb3JQayA9IHBheWxvYWQuYXBpbGFyVnVlbHRhPyhcclxuICAgICAgICAgICAgICAgIHN0YXRlLm9wY2lvbmVzLmZvclBrPT1udWxsP1tdOlsuLi5zdGF0ZS5vcGNpb25lcy5waWxhRm9yUGssIHN0YXRlLm9wY2lvbmVzLmZvclBrXVxyXG4gICAgICAgICAgICApOnN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaztcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFZPTFZFUl9ERV9GT1JNVUxBUklPOiAoe21hZ25pdHVkUmV0cm9jZXNvfToge21hZ25pdHVkUmV0cm9jZXNvOm51bWJlcn0pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGtbc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLmxlbmd0aC1tYWduaXR1ZFJldHJvY2Vzb118fG51bGw7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGsgPSBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsuc2xpY2UoMCxzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsubGVuZ3RoLW1hZ25pdHVkUmV0cm9jZXNvKTtcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIEVTVEFET19DQVJHQTogKHBheWxvYWQ6IHtpZENhcmdhOklkQ2FyZ2EsIGVzdGFkb19jYXJnYTpFc3RhZG9DYXJnYX0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZVxyXG4gICAgICAgICAgICAvL0RFU0FDVElWQURPXHJcbiAgICAgICAgICAgIC8vcmV0dXJuIHtcclxuICAgICAgICAgICAgLy8gICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgIC8vICAgIGRhdG9zOntcclxuICAgICAgICAgICAgLy8gICAgICAgIC4uLnN0YXRlLmRhdG9zLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgY2FyZ2FzOntcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAuLi5zdGF0ZS5kYXRvcy5jYXJnYXMsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgW3BheWxvYWQuaWRDYXJnYV06IHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uc3RhdGUuZGF0b3MuY2FyZ2FzW3BheWxvYWQuaWRDYXJnYV0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIGVzdGFkb19jYXJnYTogcGF5bG9hZC5lc3RhZG9fY2FyZ2FcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgIH1cclxuICAgICAgICAgICAgLy99XHJcbiAgICAgICAgfSxcclxuICAgIFZPTFZFUl9IRFI6IChfcGF5bG9hZDoge30pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBudWxsO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrOkZvclBrW10gPSBbXTtcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFNFVF9PUENJT046IChwYXlsb2FkOiB7b3BjaW9uOmtleW9mIENhc29TdGF0ZVsnb3BjaW9uZXMnXSwgdmFsb3I6YW55fSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBbcGF5bG9hZC5vcGNpb25dOiBwYXlsb2FkLnZhbG9yXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgUkVTRVRfT1BDSU9ORVM6IChfcGF5bG9hZDoge30pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGs6IG51bGxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBSRUlOSUNJQVJfREVNTzogKF9wYXlsb2FkOiB7fSkgPT5cclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgaWYoIXN0YXRlLm1vZG8uZGVtbykgcmV0dXJuIHN0YXRlO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIGNvcGlvIGxvcyBkYXRvcyBpbmljaWFsZXNcclxuICAgICAgICAgICAgICAgIGRhdG9zOmJlc3RHbG9iYWxzLmRlZXBDb3B5KHN0YXRlLm1vZG8uZGVtbylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBDT05GSVJNQVJfQk9SUkFSX1JFU1BVRVNUQTogKHBheWxvYWQ6IHtmb3JQazpGb3JQaywgdmFyaWFibGU6SWRWYXJpYWJsZXxudWxsfSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazpwYXlsb2FkLmZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6IHBheWxvYWQudmFyaWFibGVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFjdGlvbkZvcm11bGFyaW9TdGF0ZSA9IEFjdGlvbnNGcm9tPHR5cGVvZiByZWR1Y2Vycz47XHJcbi8qIEZJTiBBQ0NJT05FUyAqL1xyXG5cclxuZXhwb3J0IGNvbnN0IGRpc3BhdGNoZXJzID0gY3JlYXRlRGlzcGF0Y2hlcnMocmVkdWNlcnMpO1xyXG5cclxuaW50ZXJmYWNlIElEYXRhU2VwYXJhZGE8VCBleHRlbmRzIHt0aXBvYzpzdHJpbmd9PiB7XHJcbiAgICBkYXRhOlQsXHJcbiAgICBjaGlsZHM6SURhdGFTZXBhcmFkYTxUPltdXHJcbn1cclxuXHJcbnR5cGUgSURhdGFDb25DYXNpbGxlcm9zPFQ+ID0gVCAmIHtcclxuICAgIGNhc2lsbGVyb3M6cmVhZG9ubHkgSURhdGFDb25DYXNpbGxlcm9zPFQ+W11cclxufVxyXG5cclxuY29uc3QgY2FzaWxsZXJvVmFjaW89e3NhbHRvOm51bGwsIGRlc3BsaWVndWU6bnVsbCwgYWNsYXJhY2lvbjpudWxsLCB2ZXJfaWQ6bnVsbCwgY2FzaWxsZXJvczpbXSwgbGVlcjpudWxsLFxyXG4gICAgZGVzcGxpZWd1ZUVuY2FiZXphZG86bnVsbCwgZGVzcGxpZWd1ZUNvbnRlbmlkbzpudWxsLCBkZXNwbGllZ3VlT2N1bHRhOm51bGwsIGRlc3BsaWVndWVUaXBvSW5wdXQ6bnVsbFxyXG59XHJcblxyXG5jb25zdCBvcGNpb25lc1NpTm86IE9wY2lvbltdID0gW1xyXG4gICAgey4uLmNhc2lsbGVyb1ZhY2lvLCBjYXNpbGxlcm86MSwgdGlwb2M6J08nLCBub21icmU6J1PDrSd9LFxyXG4gICAgey4uLmNhc2lsbGVyb1ZhY2lvLCBjYXNpbGxlcm86MiwgdGlwb2M6J08nLCBub21icmU6J05vJ30sXHJcbl1cclxuXHJcbnR5cGUgQ2FyYWNlcml6YWNpb25Fc3RhZG9Sb3dWYWxpZGF0b3I9e1xyXG4gICAgY29ycmVjdG86Ym9vbGVhbixcclxuICAgIGNvblZhbG9yOmJvb2xlYW58bnVsbCwgLy8gbnVsbCA9IHVua25vd25cclxufVxyXG5cclxuZnVuY3Rpb24gYXBsYW5hckxhQ3VydmE8VCBleHRlbmRzIHt0aXBvYzpzdHJpbmcsIGRlc3BsaWVndWU/OnN0cmluZ30+KGNhc2lsbGVyb3NEYXRhOklEYXRhU2VwYXJhZGE8VD4pOklEYXRhQ29uQ2FzaWxsZXJvczxUfE9wY2lvbj57XHJcbiAgICB2YXIgZGF0YSA9IGNhc2lsbGVyb3NEYXRhLmRhdGFcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZGF0YSxcclxuICAgICAgICBkZXNwbGllZ3VlQ29udGVuaWRvOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdob3Jpem9udGFsJyk/J2hvcml6b250YWwnOmRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ3ZlcnRpY2FsJyk/J3ZlcnRpY2FsJzpudWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdsYXRlcmFsJyk/J2xhdGVyYWwnOmRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ3N1cGVyaW9yJyk/J3N1cGVyaW9yJzpudWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVPY3VsdGE6IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ29jdWx0YXInKT8/bnVsbCxcclxuICAgICAgICBkZXNwbGllZ3VlVGlwb0lucHV0OiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCd0ZWxlZm9ubycpPyd0ZWwnOm51bGwsXHJcbiAgICAgICAgY2FzaWxsZXJvczogIWNhc2lsbGVyb3NEYXRhLmNoaWxkcy5sZW5ndGggJiYgY2FzaWxsZXJvc0RhdGEuZGF0YS50aXBvYz09J09NJyA/IG9wY2lvbmVzU2lObyA6XHJcbiAgICAgICAgICAgICBjYXNpbGxlcm9zRGF0YS5jaGlsZHMubWFwKGNhc2lsbGVybz0+YXBsYW5hckxhQ3VydmEoY2FzaWxsZXJvKSlcclxuICAgIH1cclxufVxyXG5cclxuLy8gdHlwZSBBbnlSZWY8VCBleHRlbmRzIHt9Pj1bVCwga2V5b2YgVF07XHJcblxyXG5mdW5jdGlvbiByZWxsZW5hclZhcmlhYmxlc1lPcGNpb25lcyhpZEZvcm11bGFyaW86SWRGb3JtdWxhcmlvLCBlc3RydWN0dXJhOkVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsIGNhc2lsbGVybzpDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgdW5pZGFkQW5hbGlzaXM/OnN0cmluZ3xudWxsLFxyXG4gICAgc3Vib3JkaW5hZGFWYXI/OklkVmFyaWFibGUsIHN1Ym9yZGluYWRhVmFsb3I/OmFueVxyXG4pe1xyXG4gICAgaWYoY2FzaWxsZXJvLnZhcl9uYW1lICE9IG51bGwgfHwgY2FzaWxsZXJvLnRpcG9jPT0nRklMVFJPJyl7XHJcbiAgICAgICAgdmFyIHZhcl9uYW1lOklkVmFyaWFibGVcclxuICAgICAgICBpZihjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nKXtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBwb25nbyBjb21vIG5vbWJyZSBkZSB2YXJpYWJsZSBlbCBmaWx0cm87XHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLmNhc2lsbGVybztcclxuICAgICAgICB9ZWxzZSBpZihjYXNpbGxlcm8udmFyX25hbWUuZW5kc1dpdGgoJyEnKSl7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgbGFzIHZhcmlhYmxlcyBlc3Blam8gc29uIGxhcyBxdWUgdGVybWluYW4gZW4gIVxyXG4gICAgICAgICAgICB2YXJfbmFtZSA9IGNhc2lsbGVyby52YXJfbmFtZV9lc3BlY2lhbC5yZXBsYWNlKC8hKyQvLCcnKTtcclxuICAgICAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lID0gdmFyX25hbWU7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLnZhcl9uYW1lXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB2YXJpYWJsZURlZj17XHJcbiAgICAgICAgICAgIHRpcG86Y2FzaWxsZXJvLnRpcG9jPT0nRklMVFJPJz8nZmlsdHJvJzpjYXNpbGxlcm8udGlwb2M9PSdPTScgfHwgY2FzaWxsZXJvLnRpcG92YXI9PSdzaV9ubyc/J29wY2lvbmVzJzpjYXNpbGxlcm8udGlwb3ZhcixcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBvcHRhdGl2byBwb2Ryw61hIG5vIGV4aXN0aXIsIHF1ZWRhcsOhIG51bGwuXHJcbiAgICAgICAgICAgIG9wdGF0aXZhOmNhc2lsbGVyby5vcHRhdGl2byEsXHJcbiAgICAgICAgICAgIG9wY2lvbmVzOihjYXNpbGxlcm8udGlwb2M9PSdPTScgfHwgY2FzaWxsZXJvLnRpcG92YXI9PSdvcGNpb25lcycgfHwgY2FzaWxsZXJvLnRpcG92YXI9PSdzaV9ubyc/XHJcbiAgICAgICAgICAgICAgICBsaWtlQXIuY3JlYXRlSW5kZXgoY2FzaWxsZXJvLmNhc2lsbGVyb3MsICdjYXNpbGxlcm8nKTp7fSkgYXMgdW5rbm93biBhcyB7IFtrZXk6IHN0cmluZ106IFJvd1ZhbGlkYXRvck9wY2lvbjxJZFZhcmlhYmxlPiB9LFxyXG4gICAgICAgICAgICBzYWx0bzpjYXNpbGxlcm8uc2FsdG8gYXMgSWRWYXJpYWJsZSxcclxuICAgICAgICAgICAgc2FsdG9Oc05yOidzYWx0b19uc19uYycgaW4gY2FzaWxsZXJvICYmIGNhc2lsbGVyby5zYWx0b19uc19uYyB8fCBudWxsLFxyXG4gICAgICAgICAgICBmdW5jaW9uSGFiaWxpdGFyOmNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyX2pzLFxyXG4gICAgICAgICAgICBmdW5jaW9uQXV0b0luZ3Jlc2FyOmNhc2lsbGVyby5leHByZXNpb25fYXV0b2luZ3Jlc2FyX2pzLFxyXG4gICAgICAgICAgICBjYWxjdWxhZGE6XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIC8vIFRPRE8uIEF2ZXJpZ3VhciBzaSBsYXMgcHJlZ3VudGFzIHkgZmlsdHJvcyBwdWVkZW4gdGVuZXIgdW5pZGFkIGRlIGFuw6FsaXNpc1xyXG4gICAgICAgICAgICAgICAgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAmJiBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzIT11bmlkYWRBbmFsaXNpcyBcclxuICAgICAgICAgICAgICAgIHx8IGNhc2lsbGVyby5jYWxjdWxhZGEsXHJcbiAgICAgICAgICAgIGxpYnJlOmNhc2lsbGVyby5saWJyZVxyXG4gICAgICAgIH0gYXMgKHR5cGVvZiBlc3RydWN0dXJhLnZhcmlhYmxlcylbSWRWYXJpYWJsZV1cclxuICAgICAgICBpZihzdWJvcmRpbmFkYVZhbG9yICE9IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIHZhcmlhYmxlRGVmLnN1Ym9yZGluYWRhVmFyID0gc3Vib3JkaW5hZGFWYXI7XHJcbiAgICAgICAgICAgIHZhcmlhYmxlRGVmLnN1Ym9yZGluYWRhVmFsb3IgPSBzdWJvcmRpbmFkYVZhbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlc3RydWN0dXJhLnZhcmlhYmxlc1t2YXJfbmFtZV09dmFyaWFibGVEZWY7XHJcbiAgICB9IGVsc2UgaWYgKGNhc2lsbGVyby50aXBvYz09J0JGJyl7XHJcbiAgICAgICAvLyB2YXIgdmFyX25hbWUgPSAnJEIuRjonK2Nhc2lsbGVyby5zYWx0byBhcyBJZFZhcmlhYmxlOyAgICAvL29yaWdpbmFsXHJcbiAgICAgICAgdmFyIHNhbHRvTm9tYnJlPWNhc2lsbGVyby5zYWx0byEuc3Vic3RyKDAsMik9PSdGOic/Y2FzaWxsZXJvLnNhbHRvIS5zbGljZSgyKTpjYXNpbGxlcm8uc2FsdG87XHJcbiAgICAgICAgdmFyIHZhcl9uYW1lID0gJyRCLkY6JytzYWx0b05vbWJyZSBhcyBJZFZhcmlhYmxlO1xyXG4gICAgICAgIGNhc2lsbGVyby52YXJfbmFtZV9CRiA9IHZhcl9uYW1lO1xyXG4gICAgICAgIGxldCB2YXJpYWJsZURlZj17XHJcbiAgICAgICAgICAgIHRpcG86J3RleHRvJyxcclxuICAgICAgICAgICAgbGlicmU6dHJ1ZSxcclxuICAgICAgICAgICAgLi4uKGNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyP3tmdW5jaW9uSGFiaWxpdGFyOmB2YWxvcmVzWycke2Nhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyfSddICE9PTAgYH06e30pLFxyXG4gICAgICAgIH1cclxuICAgICAgICBlc3RydWN0dXJhLnZhcmlhYmxlc1t2YXJfbmFtZV09dmFyaWFibGVEZWY7XHJcbiAgICB9XHJcbiAgICBpZihjYXNpbGxlcm8uY2FzaWxsZXJvcyl7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaCgoY2FzaWxsZXJvSGlqbzpDYXNpbGxlcm9zSW1wbGVtZW50YWRvcyk9PlxyXG4gICAgICAgICAgICByZWxsZW5hclZhcmlhYmxlc1lPcGNpb25lcyhpZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmEsIGNhc2lsbGVyb0hpam8sIHVuaWRhZEFuYWxpc2lzLCBjYXNpbGxlcm8udmFyX25hbWU/Y2FzaWxsZXJvLnZhcl9uYW1lOmNhc2lsbGVyby50aXBvYz09J08nP3N1Ym9yZGluYWRhVmFyOnVuZGVmaW5lZCxjYXNpbGxlcm8udGlwb2M9PSdPJz9jYXNpbGxlcm8uY2FzaWxsZXJvOnVuZGVmaW5lZClcclxuICAgICAgICApXHJcbiAgICB9XHJcbn1cclxuXHJcbnR5cGUgUmVnaXN0cm9EZXN0aW5vcz17W2Rlc3Rpbm8gaW4gSWREZXN0aW5vXTpJZFZhcmlhYmxlfG51bGx9O1xyXG5cclxuZnVuY3Rpb24gb2J0ZW5lckRlc3Rpbm9zQ2FzaWxsZXJvcyhjYXNpbGxlcm86Q2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGRlc3Rpbm9zPzpSZWdpc3Ryb0Rlc3Rpbm9zKTpSZWdpc3Ryb0Rlc3Rpbm9ze1xyXG4gICAgaWYoZGVzdGlub3M9PW51bGwpIHJldHVybiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybywge30gYXMgUmVnaXN0cm9EZXN0aW5vcyk7XHJcbiAgICBpZihjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nKXtcclxuICAgICAgICBkZXN0aW5vc1tjYXNpbGxlcm8uY2FzaWxsZXJvXT1jYXNpbGxlcm8uY2FzaWxsZXJvIGFzIElkVmFyaWFibGU7XHJcbiAgICB9ZWxzZSBpZihjYXNpbGxlcm8udGlwb2MhPSdGJyAmJiBjYXNpbGxlcm8udGlwb2MhPSdPJyAmJiBjYXNpbGxlcm8udGlwb2MhPSdPTScpe1xyXG4gICAgICAgIGRlc3Rpbm9zW2Nhc2lsbGVyby5jYXNpbGxlcm9dPWNhc2lsbGVyby5wcmltZXJhX3ZhcmlhYmxlfHxudWxsXHJcbiAgICB9XHJcbiAgICBpZihjYXNpbGxlcm8uY2FzaWxsZXJvcyl7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaChjPT5vYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGMsZGVzdGlub3MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkZXN0aW5vcztcclxufVxyXG5cclxuZnVuY3Rpb24gcmVsbGVuYXJEZXN0aW5vcyhlc3RydWN0dXJhOkVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsIGRlc3Rpbm9zOlJlZ2lzdHJvRGVzdGlub3MpOkVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3J7XHJcbiAgICBmdW5jdGlvbiBvYnRlbmVyRGVzdGlubyhpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm86SWRWYXJpYWJsZXxudWxsfHVuZGVmaW5lZHxJZEZpbik6SWRWYXJpYWJsZXxudWxse1xyXG4gICAgICAgIHJldHVybiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm89PSdmaW4nIGFzIElkVmFyaWFibGUgPyAnZmluJyBhcyBJZFZhcmlhYmxlIDogaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vIT1udWxsICYmIGRlc3Rpbm9zW2lkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubyBhcyBJZERlc3Rpbm9dIHx8IG51bGxcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZXN0cnVjdHVyYSxcclxuICAgICAgICB2YXJpYWJsZXM6bGlrZUFyKGVzdHJ1Y3R1cmEudmFyaWFibGVzKS5tYXAodmFyaWFibGVEZWY9Pih7XHJcbiAgICAgICAgICAgIC4uLnZhcmlhYmxlRGVmLFxyXG4gICAgICAgICAgICBzYWx0bzpvYnRlbmVyRGVzdGlubyh2YXJpYWJsZURlZi5zYWx0byksXHJcbiAgICAgICAgICAgIHNhbHRvTnNOcjpvYnRlbmVyRGVzdGlubyh2YXJpYWJsZURlZi5zYWx0b05zTnIpLFxyXG4gICAgICAgICAgICBvcGNpb25lczp2YXJpYWJsZURlZi5vcGNpb25lcyE9bnVsbCA/IGxpa2VBcih2YXJpYWJsZURlZi5vcGNpb25lcykubWFwKG9wY2lvbkRlZj0+KHtzYWx0bzpvYnRlbmVyRGVzdGlubyhvcGNpb25EZWYuc2FsdG8pfSkpLnBsYWluKCk6dW5kZWZpbmVkXHJcbiAgICAgICAgfSkpLnBsYWluKClcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhckVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IoY2FzaWxsZXJvOkNhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCBpZEZvcm11bGFyaW86IElkRm9ybXVsYXJpbyk6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvcntcclxuICAgIHZhciBlc3RydWN0dXJhSW5jb21wbGV0YTpFc3RydWN0dXJhUm93VmFsaWRhdG9yPXt2YXJpYWJsZXM6e30sIG1hcmNhRmluOidmaW4nfSBhcyB1bmtub3duIGFzIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I7XHJcbiAgICByZWxsZW5hclZhcmlhYmxlc1lPcGNpb25lcyhpZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmFJbmNvbXBsZXRhLCBjYXNpbGxlcm8sIFxyXG4gICAgICAgIC8vIEB0cy1pZ25vcmUgdmVyIHNpIGN1YWxxdWllciBjb3NhIHB1ZWRlIHRlbmVyIHVuaWRhZF9hbmFsaXNpc1xyXG4gICAgICAgIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXNcclxuICAgICk7XHJcbiAgICB2YXIgZGVzdGlub3M9b2J0ZW5lckRlc3Rpbm9zQ2FzaWxsZXJvcyhjYXNpbGxlcm8pO1xyXG4gICAgcmV0dXJuIHJlbGxlbmFyRGVzdGlub3MoZXN0cnVjdHVyYUluY29tcGxldGEsIGRlc3Rpbm9zKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VTcGVjaWFsV29yZHModGV4dDpzdHJpbmcsIG5vbWJyZTpzdHJpbmcsIGFwZWxsaWRvOnN0cmluZywgcmVzdWx0YWRvOnN0cmluZyk6c3RyaW5ne1xyXG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6c3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXh0LnNsaWNlKDEpO1xyXG4gICAgfVxyXG4gICAgdmFyIHNpbXBsaWZpY2F0ZWRDaGFyczp7W2s6c3RyaW5nXTpzdHJpbmd9PXtcclxuICAgICAgICBcIiNub21icmVcIjpjYXBpdGFsaXplRmlyc3RMZXR0ZXIobm9tYnJlKSxcclxuICAgICAgICBcIiNhcGVsbGlkb1wiOmNhcGl0YWxpemVGaXJzdExldHRlcihhcGVsbGlkbyksXHJcbiAgICAgICAgXCIjcmVzdWx0YWRvXCI6cmVzdWx0YWRvLFxyXG4gICAgfTtcclxuICAgIHZhciByZSA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMoc2ltcGxpZmljYXRlZENoYXJzKS5qb2luKFwifFwiKSxcImdpXCIpO1xyXG5cclxuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UocmUsIGZ1bmN0aW9uKG1hdGNoZWQpe1xyXG4gICAgICAgIHJldHVybiBzaW1wbGlmaWNhdGVkQ2hhcnNbbWF0Y2hlZC50b0xvd2VyQ2FzZSgpXTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ290b1NpbmNyb25pemFyKCl7XHJcbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi9tZW51I2k9c2luY3Jvbml6YXJgKTtcclxuICAgIGxvY2F0aW9uLnJlbG9hZCgpOyAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ290b0NhbXBvKCl7XHJcbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi9jYW1wb2ApO1xyXG4gICAgbG9jYXRpb24ucmVsb2FkKCk7ICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvQ29uc2lzdGlyKG9wZXJhdGl2bzpJZE9wZXJhdGl2byx0YXJlYTpJZFRhcmVhLCBlbmM6SWRFbmMpe1xyXG4gICAgLy8gVE9ETy0yMDIzLTAzOiBwcm9iYXIgY29uIGVzdG86XHJcbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi9tZW51I3c9Y29uc2lzdGlyX2VuY3Vlc3RhJnVwPSR7SlNPTjRhbGwudG9Vcmwoe29wZXJhdGl2bywgdGFyZWEsIGVuY30pfSZhdXRvcHJvY2VkPXRydWVgKTtcclxuICAgIC8vIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjdz1jb25zaXN0aXJfZW5jdWVzdGEmdXA9e1wib3BlcmF0aXZvXCI6XCIke29wZXJhdGl2b31cIixcInRhcmVhXCI6XCIke3RhcmVhfVwiLFwiZW5jdWVzdGFcIjoke2VuY3Vlc3RhfX0mYXV0b3Byb2NlZD10cnVlYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTsgICBcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENhY2hlVmVyc2lvbigpe1xyXG4gICAgcmV0dXJuIG15LmdldExvY2FsVmFyKCdhcHAtY2FjaGUtdmVyc2lvbicpO1xyXG59XHJcblxyXG52YXIgcmVkaXJlY3RJZk5vdExvZ2dlZCA9IGZ1bmN0aW9uIHJlZGlyZWN0SWZOb3RMb2dnZWQoZXJyOkVycm9yKXtcclxuICAgIGlmKGVyci5tZXNzYWdlID09IG15Lm1lc3NhZ2VzLm5vdExvZ2dlZCl7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi9sb2dpbiR7bG9jYXRpb24uaGFzaH1gKTtcclxuICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7ICAgXHJcbiAgICAgICAgfSwxNTAwKVxyXG4gICAgICAgIFxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhZXJFc3RydWN0dXJhKHBhcmFtczp7b3BlcmF0aXZvOiBzdHJpbmd9KXtcclxuICAgIHZhciBlc3RydWN0dXJhID0gIGF3YWl0IG15LmFqYXgub3BlcmF0aXZvX2VzdHJ1Y3R1cmFfY29tcGxldGEocGFyYW1zKTtcclxuICAgIHZhciBjYXNpbGxlcm9zT3JpZ2luYWxlczp7fSA9IGVzdHJ1Y3R1cmEuZm9ybXVsYXJpb3M7XHJcbiAgICAvL1RPRE86IEdFTkVSQUxJWkFSXHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIC8vIGNhc2lsbGVyb3NPcmlnaW5hbGVzWydGOkYyX3BlcnNvbmFzJ109Y2FzaWxsZXJvc09yaWdpbmFsZXNbJ0Y6RjInXS5jaGlsZHMuZmluZChjYXNpbGxlcm89PmNhc2lsbGVyby5kYXRhLmNhc2lsbGVybz09J0xQJyk7XHJcbiAgICB2YXIgbWFpbkZvcm06SWRGb3JtdWxhcmlvfHVuZGVmaW5lZDtcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgdmFyIGNhc2lsbGVyb3NUb2Rvc0Zvcm11bGFyaW9zOntbZiBpbiBJZEZvcm11bGFyaW9dOntjYXNpbGxlcm9zOkZvcm11bGFyaW8sIGVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvcn19PVxyXG4gICAgICAgIGxpa2VBcihjYXNpbGxlcm9zT3JpZ2luYWxlcykubWFwKFxyXG4gICAgICAgICAgICAoY2FzaWxsZXJvc0plcmFycXVpemFkb3M6YW55LCBpZEZvcm11bGFyaW8pPT57XHJcbiAgICAgICAgICAgICAgICB2YXIgY2FzaWxsZXJvc0FwbGFuYWRvczpDYXNpbGxlcm9zSW1wbGVtZW50YWRvcyA9IGFwbGFuYXJMYUN1cnZhKGNhc2lsbGVyb3NKZXJhcnF1aXphZG9zKTtcclxuICAgICAgICAgICAgICAgIGlmKGNhc2lsbGVyb3NBcGxhbmFkb3MudGlwb2M9PSdGJyAmJiBjYXNpbGxlcm9zQXBsYW5hZG9zLmZvcm11bGFyaW9fcHJpbmNpcGFsKXtcclxuICAgICAgICAgICAgICAgICAgICBtYWluRm9ybT1pZEZvcm11bGFyaW87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2lsbGVyb3M6IGNhc2lsbGVyb3NBcGxhbmFkb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjogZ2VuZXJhckVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IoY2FzaWxsZXJvc0FwbGFuYWRvcywgaWRGb3JtdWxhcmlvKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5wbGFpbigpO1xyXG4gICAgZXN0cnVjdHVyYS5mb3JtdWxhcmlvcyA9IGNhc2lsbGVyb3NUb2Rvc0Zvcm11bGFyaW9zXHJcbiAgICByZXR1cm4gZXN0cnVjdHVyYTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRtVHJhZXJEYXRvc0Zvcm11bGFyaW8ob3B0czp7b3BlcmF0aXZvOklkT3BlcmF0aXZvLCBtb2RvRGVtbzpib29sZWFuLCBmb3JQa1JhaXo/OkZvclBrUmFpen0pe1xyXG4gICAgdmFyIGdldENhc29TdGF0ZT0oKTpDYXNvU3RhdGU9PiBteU93bi5nZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUpO1xyXG4gICAgdmFyIHNldENhc29TdGF0ZT0oY2Fzb1N0YXRlOkNhc29TdGF0ZSk9PiBteU93bi5zZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUsIGNhc29TdGF0ZSk7XHJcbiAgICBcclxuICAgIHZhciBsb2FkU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBsb2FkU3RhdGUoKTpQcm9taXNlPENhc29TdGF0ZT57XHJcbiAgICAgICAgdmFyIGNhc29TdGF0ZTpDYXNvU3RhdGV8bnVsbCA9IGdldENhc29TdGF0ZSgpO1xyXG4gICAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB7XHJcbiAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgIGZvclBrOm51bGwsXHJcbiAgICAgICAgICAgICAgICBwaWxhRm9yUGs6W10sXHJcbiAgICAgICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZToncmVsZXZhbWllbnRvJyxcclxuICAgICAgICAgICAgICAgIG1vZG9EaXJlY3RvOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY29uQ2FtcG9PcGNpb25lczpmYWxzZSxcclxuICAgICAgICAgICAgICAgIHNhbHRvQXV0b21hdGljbzp0cnVlLCBcclxuICAgICAgICAgICAgICAgIGJpZW52ZW5pZG86dHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6bnVsbCxcclxuICAgICAgICAgICAgfSBhcyBDYXNvU3RhdGVbXCJvcGNpb25lc1wiXSwgLy8gcG9uZXIgbG9zIHZhbG9yZXMgcG9yIGRlZmVjdG8gbcOhcyBhYmFqb1xyXG4gICAgICAgICAgICBtb2RvOntcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZSBlcyB1biBib29sZWFubyBwZXJvIHBvbmdvIGFow60gbG9zIGRhdG9zIGRlIGRlbW8hXHJcbiAgICAgICAgICAgICAgICBkZW1vOiBcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgbXlPd24uY29uZmlnLmNvbmZpZy5hbWJpZW50ZT09J3Rlc3QnIHx8IG15T3duLmNvbmZpZy5jb25maWcuYW1iaWVudGU9PSdkZW1vJyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gYXMgQ2Fzb1N0YXRlO1xyXG4gICAgICAgIGlmKGNhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IHtcclxuICAgICAgICAgICAgICAgIC4uLmluaXRpYWxTdGF0ZSwgXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczpjYXNvU3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYob3B0cy5mb3JQa1JhaXope1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMuZm9yUGs9b3B0cy5mb3JQa1JhaXo7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5tb2RvRGlyZWN0bz0hIW9wdHMuZm9yUGtSYWl6O1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMucGlsYUZvclBrPVtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYWRkclBhcmFtcz1teU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNofHxsb2NhdGlvbi5zZWFyY2h8fCcnKTtcclxuICAgICAgICBpZihhZGRyUGFyYW1zLnN0YXRlX2ZvclBrKXtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLmZvclBrPUpTT04ucGFyc2UoYWRkclBhcmFtcy5zdGF0ZV9mb3JQayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGFkZHJQYXJhbXMuc3RhdGVfcGlsYUZvclBrKXtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaz0oYWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGsgYXMgc3RyaW5nKS5zcGxpdCgnfCcpLm1hcChqPT5KU09ONGFsbC5wYXJzZShqKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XHJcbiAgICB9XHJcbiAgICB2YXIgc2F2ZVN0YXRlID0gZnVuY3Rpb24gc2F2ZVN0YXRlKHN0YXRlOkNhc29TdGF0ZSl7XHJcbiAgICAgICAgc2V0Q2Fzb1N0YXRlKHN0YXRlKTtcclxuICAgIH1cclxuICAgIC8qIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIHZhciBpbml0aWFsU3RhdGU6Q2Fzb1N0YXRlID0gYXdhaXQgbG9hZFN0YXRlKCk7XHJcbiAgICBjb25zdCBoZHJSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihyZWR1Y2VycywgaW5pdGlhbFN0YXRlKTtcclxuICAgIC8qIEZJTiBERUZJTklDSU9OIENPTlRST0xBRE9SICovXHJcbiAgICAvKiBDQVJHQSBZIEdVQVJEQURPIERFIFNUQVRFICovXHJcbiAgICAvKiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgY29uc3Qgc3RvcmUgPSBjcmVhdGVTdG9yZShoZHJSZWR1Y2VyLCBpbml0aWFsU3RhdGUpOyBcclxuICAgIHNhdmVTdGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcclxuICAgIHN0b3JlLnN1YnNjcmliZShmdW5jdGlvbigpe1xyXG4gICAgICAgICBzYXZlU3RhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XHJcbiAgICB9KTtcclxuICAgIC8qIEZJTiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgLy9IRFIgQ09OIFNUT1JFIENSRUFET1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG59Il19
@@ -0,0 +1,86 @@
1
+ import * as React from "react";
2
+ import { CasoState, EstadoCarga, ForPk, ForPkRaiz, Formulario, IdFormulario, IdVariable, PlainForPk, Respuestas, RespuestaLasUA, RespuestasRaiz, Valor, TEM, IdCarga, Carga, IdFin, InformacionHdr, IdOperativo, IdEnc, Libre } from "./tipos";
3
+ import { FormStructureState } from "row-validator";
4
+ type CommonAttributes = {
5
+ className?: string;
6
+ style?: React.CSSProperties;
7
+ id?: string;
8
+ tabIndex?: number;
9
+ };
10
+ type ColorValues = 'primary' | 'secondary' | 'default' | 'inherit';
11
+ export type LibreDespliegueType = (props: {
12
+ key: string;
13
+ casillero: Libre;
14
+ formulario: Formulario;
15
+ forPk: ForPk;
16
+ }) => JSX.Element;
17
+ export declare const Button: ({ variant, onClick, disabled, children, className, color, size, disableElevation, disableFocusRipple, disableRipple, ...other }: {
18
+ variant?: string;
19
+ color?: ColorValues;
20
+ onClick?: React.MouseEventHandler<HTMLButtonElement>;
21
+ disabled?: boolean;
22
+ children: any;
23
+ className?: string;
24
+ size?: "small";
25
+ disableElevation?: any;
26
+ disableFocusRipple?: any;
27
+ disableRipple?: any;
28
+ } & CommonAttributes) => React.JSX.Element;
29
+ export declare function Atributo(props: {
30
+ nombre: string;
31
+ valor: any;
32
+ }): React.JSX.Element | null;
33
+ export declare const listaEstadosCarga: EstadoCarga[];
34
+ export declare var resumidores: {
35
+ nombre: string;
36
+ f: (rr: RespuestasRaiz) => boolean;
37
+ }[];
38
+ export type DesplegarLineaResumenUAPrincipalType = (props: {
39
+ numVivienda: IdEnc;
40
+ formPrincipal: IdFormulario;
41
+ tarea: string;
42
+ respuestas: RespuestasRaiz;
43
+ }) => JSX.Element;
44
+ export declare var DesplegarLineaResumenUAPrincipal: DesplegarLineaResumenUAPrincipalType;
45
+ export declare const setDesplegarLineaResumenUAPrincipal: (lineaResumenUAPrincipal: DesplegarLineaResumenUAPrincipalType) => DesplegarLineaResumenUAPrincipalType;
46
+ export type DesplegarCargaType = (props: {
47
+ carga: Carga;
48
+ idCarga: IdCarga;
49
+ posicion: number;
50
+ informacionHdr: InformacionHdr;
51
+ respuestas: RespuestaLasUA;
52
+ feedbackRowValidator: {
53
+ [formulario in PlainForPk]: FormStructureState<IdVariable, Valor, IdFin>;
54
+ };
55
+ }) => JSX.Element;
56
+ export declare var DesplegarCarga: DesplegarCargaType;
57
+ export declare const setDesplegarCarga: (despliegueCarga: DesplegarCargaType) => DesplegarCargaType;
58
+ export declare function DesplegarCitaPactada(props: {
59
+ respuestas: Respuestas;
60
+ }): React.JSX.Element;
61
+ export declare function DesplegarCitaPactadaYSeleccionadoAnteriorTem(props: {
62
+ tem: TEM;
63
+ }): React.JSX.Element;
64
+ export declare function DesplegarTem(props: {
65
+ tem: TEM;
66
+ }): React.JSX.Element;
67
+ export type HojaDeRutaDespliegueType = (props: {}) => JSX.Element;
68
+ export declare var HojaDeRutaDespliegue: HojaDeRutaDespliegueType;
69
+ export declare const setHojaDeRutaDespliegue: (hojaDeRuta: HojaDeRutaDespliegueType) => HojaDeRutaDespliegueType;
70
+ export declare function ListaTextos(props: {
71
+ textos: string[];
72
+ }): React.JSX.Element;
73
+ export declare function BienvenidaDespliegue(props: {
74
+ modo: CasoState["modo"];
75
+ }): React.JSX.Element;
76
+ export declare function OpenedTabs(): React.JSX.Element | null;
77
+ export declare function AppDmEncu(): React.JSX.Element;
78
+ export declare function PantallaInicial(): React.JSX.Element;
79
+ export declare function dmPantallaInicialSinCarga(): Promise<void>;
80
+ export declare function desplegarFormularioActual(opts: {
81
+ modoDemo: boolean;
82
+ forPkRaiz?: ForPkRaiz;
83
+ operativo: IdOperativo;
84
+ }): Promise<void>;
85
+ export declare const setLibreDespliegue: (libre: LibreDespliegueType) => LibreDespliegueType;
86
+ export {};