dmencu 3.2.21 → 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.
Files changed (258) hide show
  1. package/README.md +42 -42
  2. package/ayuda/asignacion.md +16 -0
  3. package/ayuda/circuito-encuesta.md +27 -0
  4. package/ayuda/control.md +13 -0
  5. package/ayuda/dm-cambiar-modo.md +16 -0
  6. package/ayuda/dm-relevamiento.md +20 -0
  7. package/ayuda/dm-sincronizar.md +18 -0
  8. package/ayuda/fin-de-campo.md +14 -0
  9. package/ayuda/metadatos.md +14 -0
  10. package/ayuda/procesar.md +13 -0
  11. package/ayuda/recepcion.md +20 -0
  12. package/ayuda/supervision.md +9 -0
  13. package/ayuda/usuarios.md +12 -0
  14. package/ayuda/varios.md +23 -0
  15. package/dist/client/client/client.js +101 -4
  16. package/dist/client/client/css/menu.styl +29 -0
  17. package/dist/client/unlogged/abrir-formulario.js +1 -1
  18. package/dist/client/unlogged/bypass-formulario.d.ts +6 -42
  19. package/dist/client/unlogged/bypass-formulario.js +84 -219
  20. package/dist/client/unlogged/calculos-encuesta.js +112 -38
  21. package/dist/client/unlogged/css/formulario-react.styl +9 -0
  22. package/dist/client/unlogged/helpers-casilleros.d.ts +1 -1
  23. package/dist/client/unlogged/helpers-casilleros.js +12 -18
  24. package/dist/client/unlogged/helpers-formulario.d.ts +16 -0
  25. package/dist/client/unlogged/helpers-formulario.js +88 -0
  26. package/dist/client/unlogged/redux-formulario.d.ts +1 -2
  27. package/dist/client/unlogged/redux-formulario.js +21 -31
  28. package/dist/client/unlogged/render-config.d.ts +5 -1
  29. package/dist/client/unlogged/render-config.js +14 -1
  30. package/dist/client/unlogged/render-formulario.d.ts +3 -6
  31. package/dist/client/unlogged/render-formulario.js +71 -69
  32. package/dist/client/unlogged/render-formulario.tsx +100 -57
  33. package/dist/client/unlogged/render-general.d.ts +2 -0
  34. package/dist/client/unlogged/render-general.js +2 -1
  35. package/dist/client/unlogged/render-general.tsx +2 -1
  36. package/dist/client/unlogged/render-init.d.ts +1 -0
  37. package/dist/client/unlogged/render-init.js +9 -2
  38. package/dist/client/unlogged/tipos.d.ts +93 -41
  39. package/dist/client/unlogged/tipos.js +1 -1
  40. package/dist/server/app-dmencu.d.ts +1435 -0
  41. package/dist/server/app-dmencu.js +1091 -0
  42. package/dist/server/ayuda.d.ts +19 -0
  43. package/dist/server/ayuda.js +224 -0
  44. package/dist/server/def-config.d.ts +1 -0
  45. package/dist/server/def-config.js +123 -0
  46. package/dist/server/procedures-dmencu.d.ts +43 -0
  47. package/dist/server/procedures-dmencu.js +2313 -0
  48. package/dist/server/server/app-dmencu.d.ts +49 -91
  49. package/dist/server/server/app-dmencu.js +151 -52
  50. package/dist/server/server/ayuda.d.ts +19 -0
  51. package/dist/server/server/ayuda.js +224 -0
  52. package/dist/server/server/procedures-dmencu.d.ts +34 -2
  53. package/dist/server/server/procedures-dmencu.js +93 -51
  54. package/dist/server/server/setters-rea-no-rea.d.ts +13 -0
  55. package/dist/server/server/setters-rea-no-rea.js +35 -0
  56. package/dist/server/server/table-areas.js +4 -4
  57. package/dist/server/server/table-areas_asignacion_general.js +2 -1
  58. package/dist/server/server/table-control_campo.js +4 -4
  59. package/dist/server/server/table-no_rea.js +4 -2
  60. package/dist/server/server/table-no_rea_sup.js +7 -3
  61. package/dist/server/server/table-personal.js +1 -1
  62. package/dist/server/server/table-tareas_tem.js +2 -2
  63. package/dist/server/server/table-tem.js +2 -2
  64. package/dist/server/server/types-dmencu.d.ts +53 -2
  65. package/dist/server/server/types-dmencu.js +2 -1
  66. package/dist/server/setters-rea-no-rea.d.ts +13 -0
  67. package/dist/server/setters-rea-no-rea.js +35 -0
  68. package/dist/server/table-acciones.d.ts +2 -0
  69. package/dist/server/table-acciones.js +45 -0
  70. package/dist/server/table-area_enc_proximas.d.ts +2 -0
  71. package/dist/server/table-area_enc_proximas.js +30 -0
  72. package/dist/server/table-areas.d.ts +4 -0
  73. package/dist/server/table-areas.js +112 -0
  74. package/dist/server/table-areas_asignacion_general.d.ts +2 -0
  75. package/dist/server/table-areas_asignacion_general.js +86 -0
  76. package/dist/server/table-barrios.d.ts +2 -0
  77. package/dist/server/table-barrios.js +35 -0
  78. package/dist/server/table-comunas.d.ts +2 -0
  79. package/dist/server/table-comunas.js +33 -0
  80. package/dist/server/table-control_campo.d.ts +12 -0
  81. package/dist/server/table-control_campo.js +119 -0
  82. package/dist/server/table-control_dias_carga.d.ts +2 -0
  83. package/dist/server/table-control_dias_carga.js +63 -0
  84. package/dist/server/table-control_resumen.d.ts +2 -0
  85. package/dist/server/table-control_resumen.js +19 -0
  86. package/dist/server/table-diccionario.d.ts +2 -0
  87. package/dist/server/table-diccionario.js +32 -0
  88. package/dist/server/table-dictra.d.ts +2 -0
  89. package/dist/server/table-dictra.js +46 -0
  90. package/dist/server/table-dicvar.d.ts +2 -0
  91. package/dist/server/table-dicvar.js +32 -0
  92. package/dist/server/table-encuestadores.d.ts +13 -0
  93. package/dist/server/table-encuestadores.js +75 -0
  94. package/dist/server/table-estados.d.ts +2 -0
  95. package/dist/server/table-estados.js +47 -0
  96. package/dist/server/table-estados_acciones.d.ts +2 -0
  97. package/dist/server/table-estados_acciones.js +40 -0
  98. package/dist/server/table-fracciones.d.ts +2 -0
  99. package/dist/server/table-fracciones.js +37 -0
  100. package/dist/server/table-grilla_hoja_ruta.d.ts +2 -0
  101. package/dist/server/table-grilla_hoja_ruta.js +93 -0
  102. package/dist/server/table-historial_tem.d.ts +2 -0
  103. package/dist/server/table-historial_tem.js +57 -0
  104. package/dist/server/table-hogares.d.ts +2 -0
  105. package/dist/server/table-hogares.js +156 -0
  106. package/dist/server/table-hogares_sup.d.ts +2 -0
  107. package/dist/server/table-hogares_sup.js +191 -0
  108. package/dist/server/table-inconsistencias_cumplen_condicion.d.ts +2 -0
  109. package/dist/server/table-inconsistencias_cumplen_condicion.js +33 -0
  110. package/dist/server/table-manzanas.d.ts +2 -0
  111. package/dist/server/table-manzanas.js +36 -0
  112. package/dist/server/table-mis_encuestadores.d.ts +2 -0
  113. package/dist/server/table-mis_encuestadores.js +77 -0
  114. package/dist/server/table-mis_tareas.d.ts +2 -0
  115. package/dist/server/table-mis_tareas.js +18 -0
  116. package/dist/server/table-mis_tareas_areas.d.ts +2 -0
  117. package/dist/server/table-mis_tareas_areas.js +20 -0
  118. package/dist/server/table-modos_dm.d.ts +2 -0
  119. package/dist/server/table-modos_dm.js +28 -0
  120. package/dist/server/table-no_rea.js +38 -0
  121. package/dist/server/table-no_rea_sup.js +36 -0
  122. package/dist/server/table-operaciones.d.ts +2 -0
  123. package/dist/server/table-operaciones.js +30 -0
  124. package/dist/server/table-parametros.d.ts +2 -0
  125. package/dist/server/table-parametros.js +40 -0
  126. package/dist/server/table-permisos.d.ts +2 -0
  127. package/dist/server/table-permisos.js +31 -0
  128. package/dist/server/table-personal.d.ts +5 -0
  129. package/dist/server/table-personal.js +62 -0
  130. package/dist/server/table-personal_rol.d.ts +2 -0
  131. package/dist/server/table-personal_rol.js +42 -0
  132. package/dist/server/table-personas.d.ts +2 -0
  133. package/dist/server/table-personas.js +448 -0
  134. package/dist/server/table-personas_sup.d.ts +2 -0
  135. package/dist/server/table-personas_sup.js +93 -0
  136. package/dist/server/table-radios.d.ts +2 -0
  137. package/dist/server/table-radios.js +37 -0
  138. package/dist/server/table-rea.d.ts +2 -0
  139. package/dist/server/table-rea.js +38 -0
  140. package/dist/server/table-rea_sup.d.ts +2 -0
  141. package/dist/server/table-rea_sup.js +38 -0
  142. package/dist/server/table-recepcionistas.d.ts +2 -0
  143. package/dist/server/table-recepcionistas.js +18 -0
  144. package/dist/server/table-recuperadores.d.ts +2 -0
  145. package/dist/server/table-recuperadores.js +18 -0
  146. package/dist/server/table-roles.d.ts +2 -0
  147. package/dist/server/table-roles.js +33 -0
  148. package/dist/server/table-roles_permisos.d.ts +2 -0
  149. package/dist/server/table-roles_permisos.js +36 -0
  150. package/dist/server/table-roles_subordinados.d.ts +2 -0
  151. package/dist/server/table-roles_subordinados.js +31 -0
  152. package/dist/server/table-semanas.d.ts +2 -0
  153. package/dist/server/table-semanas.js +42 -0
  154. package/dist/server/table-sincronizaciones.d.ts +2 -0
  155. package/dist/server/table-sincronizaciones.js +30 -0
  156. package/dist/server/table-supervisores.d.ts +2 -0
  157. package/dist/server/table-supervisores.js +18 -0
  158. package/dist/server/table-tareas.d.ts +2 -0
  159. package/dist/server/table-tareas.js +48 -0
  160. package/dist/server/table-tareas_areas.d.ts +7 -0
  161. package/dist/server/table-tareas_areas.js +112 -0
  162. package/dist/server/table-tareas_proximas.d.ts +2 -0
  163. package/dist/server/table-tareas_proximas.js +48 -0
  164. package/dist/server/table-tareas_tem.d.ts +14 -0
  165. package/dist/server/table-tareas_tem.js +206 -0
  166. package/dist/server/table-tareas_tem_analisis_campo.d.ts +2 -0
  167. package/dist/server/table-tareas_tem_analisis_campo.js +31 -0
  168. package/dist/server/table-tareas_tem_fin_campo.d.ts +3 -0
  169. package/dist/server/table-tareas_tem_fin_campo.js +56 -0
  170. package/dist/server/table-tareas_tem_ingreso.d.ts +2 -0
  171. package/dist/server/table-tareas_tem_ingreso.js +31 -0
  172. package/dist/server/table-tareas_tem_procesamiento.d.ts +2 -0
  173. package/dist/server/table-tareas_tem_procesamiento.js +34 -0
  174. package/dist/server/table-tareas_tem_recepcion.d.ts +6 -0
  175. package/dist/server/table-tareas_tem_recepcion.js +59 -0
  176. package/dist/server/table-tem.d.ts +3 -0
  177. package/dist/server/table-tem.js +247 -0
  178. package/dist/server/table-tem_asignacion.d.ts +2 -0
  179. package/dist/server/table-tem_asignacion.js +50 -0
  180. package/dist/server/table-tem_borradas.d.ts +2 -0
  181. package/dist/server/table-tem_borradas.js +35 -0
  182. package/dist/server/table-usuarios.d.ts +2 -0
  183. package/dist/server/table-usuarios.js +63 -0
  184. package/dist/server/table-visitas.d.ts +2 -0
  185. package/dist/server/table-visitas.js +91 -0
  186. package/dist/server/table-visitas_sup.d.ts +2 -0
  187. package/dist/server/table-visitas_sup.js +91 -0
  188. package/dist/server/table-viviendas.d.ts +2 -0
  189. package/dist/server/table-viviendas.js +299 -0
  190. package/dist/server/types-dmencu.d.ts +114 -0
  191. package/dist/server/types-dmencu.js +34 -0
  192. package/dist/server/unlogged/tipos.d.ts +93 -41
  193. package/dist/server/unlogged/tipos.js +1 -1
  194. package/dist/test/app-para-tests.d.ts +1117 -0
  195. package/dist/test/app-para-tests.js +95 -0
  196. package/dist/test/test-ayuda.d.ts +1 -0
  197. package/dist/test/test-ayuda.js +183 -0
  198. package/dist/test/test-caches-rea.d.ts +1 -0
  199. package/dist/test/test-caches-rea.js +243 -0
  200. package/dist/test/test-helpers-casilleros.d.ts +1 -0
  201. package/dist/test/test-helpers-casilleros.js +154 -0
  202. package/dist/test/test-helpers-formulario.d.ts +1 -0
  203. package/dist/test/test-helpers-formulario.js +95 -0
  204. package/dist/test/test-impacto-rea-no-rea-en-bd.d.ts +1 -0
  205. package/dist/test/test-impacto-rea-no-rea-en-bd.js +243 -0
  206. package/dist/test/test-menu-segun-rol.d.ts +1 -0
  207. package/dist/test/test-menu-segun-rol.js +170 -0
  208. package/dist/test/test-setters-rea-no-rea.d.ts +1 -0
  209. package/dist/test/test-setters-rea-no-rea.js +95 -0
  210. package/dist/test/test.d.ts +7 -0
  211. package/dist/test/test.js +9 -2
  212. package/dist/unlogged/helpers-casilleros.d.ts +1 -1
  213. package/dist/unlogged/helpers-casilleros.js +12 -18
  214. package/dist/unlogged/helpers-formulario.d.ts +16 -0
  215. package/dist/unlogged/helpers-formulario.js +88 -0
  216. package/dist/unlogged/tipos.d.ts +20 -2
  217. package/dist/unlogged/tipos.js +1 -1
  218. package/dist/unlogged/unlogged/abrir-formulario.js +1 -1
  219. package/dist/unlogged/unlogged/bypass-formulario.d.ts +6 -42
  220. package/dist/unlogged/unlogged/bypass-formulario.js +84 -219
  221. package/dist/unlogged/unlogged/css/formulario-react.styl +9 -0
  222. package/dist/unlogged/unlogged/helpers-casilleros.js +7 -14
  223. package/dist/unlogged/unlogged/helpers-formulario.d.ts +16 -0
  224. package/dist/unlogged/unlogged/helpers-formulario.js +88 -0
  225. package/dist/unlogged/unlogged/redux-formulario.d.ts +1 -2
  226. package/dist/unlogged/unlogged/redux-formulario.js +21 -31
  227. package/dist/unlogged/unlogged/render-config.d.ts +5 -1
  228. package/dist/unlogged/unlogged/render-config.js +14 -1
  229. package/dist/unlogged/unlogged/render-formulario.d.ts +3 -6
  230. package/dist/unlogged/unlogged/render-formulario.js +71 -69
  231. package/dist/unlogged/unlogged/render-formulario.tsx +100 -57
  232. package/dist/unlogged/unlogged/render-general.d.ts +2 -0
  233. package/dist/unlogged/unlogged/render-general.js +2 -1
  234. package/dist/unlogged/unlogged/render-general.tsx +2 -1
  235. package/dist/unlogged/unlogged/render-init.d.ts +1 -0
  236. package/dist/unlogged/unlogged/render-init.js +9 -2
  237. package/dist/unlogged/unlogged/tipos.d.ts +93 -41
  238. package/dist/unlogged/unlogged/tipos.js +1 -1
  239. package/dist/unlogged/unlogged/unlogged.js +15 -2
  240. package/install/accion_cumple_condicion.sql +1 -1
  241. package/install/generador_accion_cumple_condicion.sql +2 -2
  242. package/install/tarea_cumple_condicion.sql +1 -1
  243. package/install/xcalcular_resultado_trg.sql +1 -1
  244. package/package.json +24 -18
  245. package/dist/server/server/table-no_rea copy.js +0 -38
  246. package/dist/server/server/table-no_rea_sup copy.js +0 -36
  247. package/dist/unlogged/bypass-formulario.d.ts +0 -198
  248. package/dist/unlogged/bypass-formulario.js +0 -1226
  249. package/dist/unlogged/redux-formulario.d.ts +0 -440
  250. package/dist/unlogged/redux-formulario.js +0 -324
  251. package/dist/unlogged/render-config.d.ts +0 -52
  252. package/dist/unlogged/render-config.js +0 -161
  253. package/dist/unlogged/unlogged/bypass-formulario copy.d.ts +0 -198
  254. package/dist/unlogged/unlogged/bypass-formulario copy.js +0 -1226
  255. package/dist/unlogged/unlogged/helpers.d.ts +0 -14
  256. package/dist/unlogged/unlogged/helpers.js +0 -129
  257. /package/dist/server/{server/table-no_rea copy.d.ts → table-no_rea.d.ts} +0 -0
  258. /package/dist/server/{server/table-no_rea_sup copy.d.ts → table-no_rea_sup.d.ts} +0 -0
@@ -12,6 +12,15 @@ import {
12
12
  mesReferencia,
13
13
  obtenerTextoParentesco,
14
14
  } from "./render-general";
15
+ import {
16
+ REGEX_SPLIT_COMODINES,
17
+ IS_TEM_PATTERN,
18
+ IS_VARIABLE_HASH_PATTERN,
19
+ IS_COMODIN_REDUX_PATTERN,
20
+ extraerComodinesRedux,
21
+ extraerVariablesInteres,
22
+ getBFVarNames,
23
+ } from "./helpers-formulario";
15
24
  import {
16
25
  Bloque, BotonFormulario,
17
26
  CasilleroBase, CasoState, ConjuntoPreguntas, Consistencia,
@@ -31,6 +40,7 @@ import {
31
40
  IdComodin,
32
41
  IdSemana,
33
42
  UnidadAnalisis,
43
+ AyudaTemaParaUsuario,
34
44
  } from "./tipos";
35
45
  import {
36
46
  accion_abrir_formulario,
@@ -51,7 +61,8 @@ import {
51
61
  setEstructura,
52
62
  setCalcularComodines,
53
63
  suscribirCambioVariable,
54
- ListenerCambioVariable
64
+ ListenerCambioVariable,
65
+ getResumenEstadoForTarea
55
66
  } from "./bypass-formulario"
56
67
  import {
57
68
  comodinesIniciales,
@@ -84,8 +95,8 @@ import {
84
95
  getEstructura,
85
96
  defOperativo,
86
97
  volcadoInicialElementosRegistrados,
87
- numberOrStringIncIfArray,
88
98
  calcularElementoEnfocado,
99
+ numberOrStringIncIfArray,
89
100
  accion_registrar_respuesta,
90
101
  accion_registrar_respuestas,
91
102
  accion_id_pregunta,
@@ -165,43 +176,7 @@ export function formatearResultadoComodin(valor: string): string {
165
176
  // 1. HELPERS PUROS Y EXPRESIONES REGULARES
166
177
  // ==========================================
167
178
 
168
- // RegEx principal para dividir el texto conservando los tokens delimitados por @...@
169
- const REGEX_SPLIT_COMODINES = /(@(?:#?[\w-]+|\$[tT][eE][mM][^@]*)@)/g;
170
-
171
- // Sub-RegExs para identificar el tipo de comodín
172
- const IS_TEM_PATTERN = /^@\$(tem[^@]*)@$/i;
173
- const IS_VARIABLE_HASH_PATTERN = /^@#([\w-]+)@$/;
174
- const IS_COMODIN_REDUX_PATTERN = /^@([\w-]+)@$/;
175
-
176
- /** Extrae nombres de comodines estándar (@comodin@) */
177
- function extraerComodinesRedux(text: string): IdComodin[] {
178
- if (!text || !text.includes('@')) return [];
179
- const matches = text.match(/@([a-zA-Z0-9_-]+)@/g);
180
- if (!matches) return [];
181
-
182
- const ids: IdComodin[] = [];
183
- for (const m of matches) {
184
- if (!m.startsWith('@#') && !m.startsWith('@$')) {
185
- const id = m.slice(1, -1) as IdComodin;
186
- if (!ids.includes(id)) ids.push(id);
187
- }
188
- }
189
- return ids;
190
- }
191
-
192
- /** Extrae nombres de variables dinámicas (@#variable@) */
193
- function extraerVariablesInteres(text: string): string[] {
194
- if (!text) return [];
195
- const matches = text.match(/@#([\w-]+)@/g);
196
- if (!matches) return [];
197
-
198
- const vars: string[] = [];
199
- for (const m of matches) {
200
- const varName = m.slice(2, -1); // Remueve '@#' y '@'
201
- if (!vars.includes(varName)) vars.push(varName);
202
- }
203
- return vars;
204
- }
179
+ // (definidos en helpers-formulario.ts para poder testearlos sin React)
205
180
 
206
181
  // ==========================================
207
182
  // 2. HOOK PERSONALIZADO PARA BINDING DINÁMICO
@@ -344,14 +319,7 @@ export const BreakeableText = React.memo(function BreakeableText(props: {
344
319
  return <span className={className} style={style}>{contenido}</span>;
345
320
  });
346
321
 
347
- export function getBFVarNames(salto: string | null) {
348
- const armoNomSalto = salto?.substring(0, 2) == 'F:' ? salto.slice(2) : salto;
349
- return {
350
- listo: '$B.F:' + armoNomSalto as IdVariable,
351
- agregar: '$B.F:' + armoNomSalto + '_agregar' as IdVariable,
352
- idFormulario: 'F:' + armoNomSalto as IdFormulario
353
- };
354
- }
322
+ export { getBFVarNames };
355
323
 
356
324
  export function registrarRespuestasBotonFormulario(opts: {
357
325
  forPkPadre: ForPk,
@@ -2060,11 +2028,12 @@ function BarraDeNavegacion(props: { forPk: ForPk, soloLectura: boolean, modoDire
2060
2028
  const [confirmaCerrar, setConfirmaCerrar] = useState<boolean | null>(false);
2061
2029
  var estructura = getEstructura();
2062
2030
  var dominio = getDatosByPass().informacionHdr[forPk[estructura.pkAgregadaUaPpal]].tem.dominio;
2031
+ var tarea = getDatosByPass().informacionHdr[forPk[estructura.pkAgregadaUaPpal]].tarea.tarea;
2063
2032
  var cerrarDirecto = async function () {
2064
2033
  removeCSSById(BOOTSTRAP_5_1_3_SRC);
2065
2034
  gotoConsistir(
2066
2035
  estructura.operativo as IdOperativo,
2067
- getDatosByPass().informacionHdr[forPk[estructura.pkAgregadaUaPpal]].tarea.tarea,
2036
+ tarea,
2068
2037
  forPk[estructura.pkAgregadaUaPpal]
2069
2038
  );
2070
2039
  //var hash=new URLSearchParams(location.hash?.replace(/^\#/,'').split('&autoproced')[0]);
@@ -2086,10 +2055,11 @@ function BarraDeNavegacion(props: { forPk: ForPk, soloLectura: boolean, modoDire
2086
2055
  r: Respuestas,
2087
2056
  _feedbackForm: FormStructureState<IdVariable, Valor, IdFin>,
2088
2057
  elemento: HTMLDivElement,
2089
- feedbackAll: { [formulario in PlainForPk]: FormStructureState<IdVariable, Valor, IdFin> },
2058
+ _feedbackAll: { [formulario in PlainForPk]: FormStructureState<IdVariable, Valor, IdFin> },
2090
2059
  _estructura: Estructura
2091
2060
  ) => {
2092
- elemento.setAttribute('resumen-estado', calcularResumenVivienda(forPk, feedbackAll, r).resumenEstado);
2061
+ const resumenEstado = getResumenEstadoForTarea(r as RespuestasRaiz, tarea as IdTarea)
2062
+ elemento.setAttribute('resumen-estado', resumenEstado);
2093
2063
  }
2094
2064
  })
2095
2065
  const cambiar = (modoDespliegue: ModoDespliegue) => {
@@ -2239,6 +2209,7 @@ function FormularioDespliegue(props: { forPk: ForPk }) {
2239
2209
  = useSelectorVivienda(forPk);
2240
2210
  var soloLectura = getDatosByPass().soloLectura;
2241
2211
  var esVolver = opciones.pilaForPk.length > 0;
2212
+ const tarea = getDatosByPass().informacionHdr[forPk[getEstructura().pkAgregadaUaPpal]].tarea.tarea;
2242
2213
  useEffect(() => {
2243
2214
  var controlScroll = () => {
2244
2215
  var arriba = document.getElementById('fab-activo-arriba');
@@ -2286,10 +2257,11 @@ function FormularioDespliegue(props: { forPk: ForPk }) {
2286
2257
  r: Respuestas,
2287
2258
  feedbackForm: FormStructureState<IdVariable, Valor, IdFin>,
2288
2259
  elemento: HTMLDivElement,
2289
- feedbackAll: { [formulario in PlainForPk]: FormStructureState<IdVariable, Valor, IdFin> },
2260
+ _feedbackAll: { [formulario in PlainForPk]: FormStructureState<IdVariable, Valor, IdFin> },
2290
2261
  _estructura: Estructura
2291
2262
  ) => {
2292
- elemento.setAttribute('resumen-estado', esVolver ? feedbackForm.resumen : calcularResumenVivienda(forPk, feedbackAll, r).resumenEstado);
2263
+ const resumenEstado = getResumenEstadoForTarea(r as RespuestasRaiz, tarea as IdTarea)
2264
+ elemento.setAttribute('resumen-estado', esVolver ? feedbackForm.resumen : resumenEstado);
2293
2265
  }
2294
2266
  })
2295
2267
  })
@@ -2378,22 +2350,23 @@ setDesplegarLineaResumenUAPrincipal((props: {
2378
2350
  const dispatch = useDispatch();
2379
2351
  useEffect(() => {
2380
2352
  volcadoInicialElementosRegistrados(forPk);
2381
- intentarBackup(forPk)
2382
- })
2353
+ intentarBackup(forPk);
2354
+ }, [numVivienda, formPrincipal])
2383
2355
  registrarElemento({
2384
2356
  id, direct: true,
2385
2357
  fun: (
2386
2358
  r: Respuestas,
2387
2359
  _feedbackForm: FormStructureState<IdVariable, Valor, IdFin>,
2388
2360
  elemento: HTMLDivElement,
2389
- feedbackAll: { [formulario in PlainForPk]: FormStructureState<IdVariable, Valor, IdFin> },
2361
+ _feedbackAll: { [formulario in PlainForPk]: FormStructureState<IdVariable, Valor, IdFin> },
2390
2362
  _estructura: Estructura
2391
2363
  ) => {
2392
- //pregunto si es la misma vivienda porque la funcion se dispara
2364
+ //pregunto si es la misma vivienda porque la funcion se dispara
2393
2365
  //con todas las combinaciones de respuestas para cada forPk
2394
2366
  //@ts-ignore vivienda existe
2395
2367
  if (r[estructura.pkAgregadaUaPpal] == forPk[estructura.pkAgregadaUaPpal]) {
2396
- elemento.setAttribute('resumen-estado', calcularResumenVivienda(forPk, feedbackAll, r).resumenEstado);
2368
+ const resumenEstado = getResumenEstadoForTarea(r as RespuestasRaiz, tarea as IdTarea)
2369
+ elemento.setAttribute('resumen-estado', resumenEstado);
2397
2370
  }
2398
2371
  }
2399
2372
 
@@ -2705,6 +2678,17 @@ export function BotoneraNavegacion(props: { disabled?: boolean }): JSX.Element {
2705
2678
  >
2706
2679
  <ICON.CloudSync /> Sincronización
2707
2680
  </Button>
2681
+ {getFormRenderer().leerAyuda()?.temas.length ? (
2682
+ <Button
2683
+ onClick={() =>
2684
+ dispatch(dispatchers.SET_OPCION({ opcion: 'pantallaActual', valor: 'ayuda' }))
2685
+ }
2686
+ disabled={pantallaActual === 'ayuda' || props.disabled}
2687
+ style={pantallaActual === 'ayuda' ? { backgroundColor: 'rgba(255,255,255,0.1)' } : undefined}
2688
+ >
2689
+ <ICON.HelpOutline /> Ayuda
2690
+ </Button>
2691
+ ) : null}
2708
2692
  </ButtonGroup>
2709
2693
  );
2710
2694
  }
@@ -2993,6 +2977,63 @@ export function PantallaSincronizacion(props: PantallaSincronizacionProps): JSX.
2993
2977
  );
2994
2978
  }
2995
2979
 
2980
+ // ayuda en línea guardada en la última sincronización: funciona sin conexión (ver docs/ayuda-online.md)
2981
+ export function PantallaAyuda(): JSX.Element {
2982
+ const modoDM: ModoDM = getFormRenderer().getModoDM();
2983
+ const temas: AyudaTemaParaUsuario[] = getFormRenderer().leerAyuda()?.temas ?? [];
2984
+ const [idTema, setIdTema] = useState<string | null>(temas.length ? temas[0].id : null);
2985
+ useEffect(() => {
2986
+ scrollToTop();
2987
+ }, [idTema]);
2988
+ const tema = temas.find(tema => tema.id == idTema);
2989
+ // los enlaces "ayuda:id" llevan a otro tema; los demás se abren aparte para no salir de la aplicación
2990
+ const onClickContenido = (event: React.MouseEvent<HTMLDivElement>): void => {
2991
+ const enlace = event.target instanceof Element ? event.target.closest('a') : null;
2992
+ const destino = enlace?.getAttribute('href');
2993
+ if (destino != null) {
2994
+ event.preventDefault();
2995
+ if (destino.startsWith('ayuda:')) {
2996
+ setIdTema(destino.slice('ayuda:'.length));
2997
+ } else {
2998
+ window.open(destino, '_blank');
2999
+ }
3000
+ }
3001
+ };
3002
+ return (
3003
+ <>
3004
+ <AppBarPrincipal
3005
+ modoDM={modoDM}
3006
+ titulo="AYUDA"
3007
+ />
3008
+ <div className="hoja-de-ruta">
3009
+ <Paper style={{ padding: '20px', margin: 'auto', marginBottom: '10px' }}>
3010
+ {temas.length == 0 ? (
3011
+ <Typography>La ayuda se descarga al sincronizar el dispositivo.</Typography>
3012
+ ) : (
3013
+ <>
3014
+ <div style={{ display: 'flex', flexWrap: 'wrap', gap: '8px', marginBottom: '16px' }}>
3015
+ {temas.map(tema =>
3016
+ <Button key={tema.id} size="small"
3017
+ variant={tema.id == idTema ? 'contained' : 'outlined'}
3018
+ onClick={() => setIdTema(tema.id)}
3019
+ >{tema.titulo}</Button>
3020
+ )}
3021
+ </div>
3022
+ {tema ? (
3023
+ <>
3024
+ <Typography variant="h5">{tema.titulo}</Typography>
3025
+ {/* html generado en el servidor a partir del markdown de la ayuda (sin html crudo) */}
3026
+ <div className="ayuda-contenido" onClick={onClickContenido} dangerouslySetInnerHTML={{ __html: tema.html }} />
3027
+ </>
3028
+ ) : null}
3029
+ </>
3030
+ )}
3031
+ </Paper>
3032
+ </div>
3033
+ </>
3034
+ );
3035
+ }
3036
+
2996
3037
  export function PantallaCambioModo(): JSX.Element {
2997
3038
  const [loading, setLoading] = useState<boolean>(false);
2998
3039
  const [aviso, setAviso] = useState<{ tipo: 'info' | 'success' | 'error', mensaje: string } | null>(null);
@@ -3205,6 +3246,8 @@ export function AppDmEncu() {
3205
3246
  return <PantallaSincronizacion />
3206
3247
  } else if (pantallaActual === 'modo') {
3207
3248
  return <PantallaCambioModo />
3249
+ } else if (pantallaActual === 'ayuda') {
3250
+ return <PantallaAyuda />
3208
3251
  }
3209
3252
  return <HojaDeRutaDespliegue />
3210
3253
  } else {
@@ -27,6 +27,7 @@ export declare const materialIoIconsSvgPath: {
27
27
  FormatLineSpacing: string;
28
28
  Forward: string;
29
29
  ForwardOutlined: string;
30
+ HelpOutline: string;
30
31
  Info: string;
31
32
  KeyboardArrowUp: string;
32
33
  KeyboardArrowDown: string;
@@ -74,6 +75,7 @@ export declare const ICON: {
74
75
  FormatLineSpacing: () => React.JSX.Element;
75
76
  Forward: () => React.JSX.Element;
76
77
  ForwardOutlined: () => React.JSX.Element;
78
+ HelpOutline: () => React.JSX.Element;
77
79
  Info: () => React.JSX.Element;
78
80
  KeyboardArrowUp: () => React.JSX.Element;
79
81
  KeyboardArrowDown: () => React.JSX.Element;
@@ -53,6 +53,7 @@
53
53
  FormatLineSpacing: "M6 7h2.5L5 3.5 1.5 7H4v10H1.5L5 20.5 8.5 17H6V7zm4-2v2h12V5H10zm0 14h12v-2H10v2zm0-6h12v-2H10v2z",
54
54
  Forward: "M12 8V4l8 8-8 8v-4H4V8z",
55
55
  ForwardOutlined: "M14 8.83L17.17 12 14 15.17V14H6v-4h8V8.83M12 4v4H4v8h8v4l8-8-8-8z",
56
+ HelpOutline: "M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z",
56
57
  Info: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z",
57
58
  KeyboardArrowUp: "M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z",
58
59
  KeyboardArrowDown: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z",
@@ -278,4 +279,4 @@
278
279
  return lista[p4 - 1] || '........';
279
280
  }
280
281
  });
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWdlbmVyYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvcmVuZGVyLWdlbmVyYWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTBFQSwwREFXQztJQVdELDhCQWlCQztJQU9ELDhCQWdCQztJQTBHRCxrQ0FVQztJQThDRCwwQ0FjQztJQUVELDBDQVdDO0lBS0QsMERBR0M7SUFFRCxzQ0FHQztJQUVELDBDQUdDO0lBS0Qsd0RBS0M7SUFqV0QsK0JBQStCO0lBQy9CLGlDQUE0QztJQUM1Qyw2Q0FBb0Q7SUFDcEQsa0NBQWtDO0lBRWxDLDJDQUFzQztJQUV0Qyw0Q0FJdUI7SUFJdkIscURBQXFEO0lBQ3hDLFFBQUEsc0JBQXNCLEdBQUc7UUFDbEMsR0FBRyxFQUFFLHFDQUFxQztRQUMxQyxTQUFTLEVBQUUsOERBQThEO1FBQ3pFLFVBQVUsRUFBRSxnT0FBZ087UUFDNU8sY0FBYyxFQUFFLDBMQUEwTDtRQUMxTSxLQUFLLEVBQUUsbURBQW1EO1FBQzFELDRCQUE0QixFQUFFLDRGQUE0RjtRQUMxSCxnQkFBZ0IsRUFBRSx1SkFBdUo7UUFDekssV0FBVyxFQUFFLHdLQUF3SztRQUNyTCxZQUFZLEVBQUUsMEtBQTBLO1FBQ3hMLEtBQUssRUFBRSx1R0FBdUc7UUFDOUcsS0FBSyxFQUFFLHVHQUF1RztRQUM5RyxTQUFTLEVBQUMsNFhBQTRYO1FBQ3RZLElBQUksRUFBRSw0RkFBNEY7UUFDbEcsTUFBTSxFQUFFLHFKQUFxSjtRQUM3SixNQUFNLEVBQUUsK0VBQStFO1FBQ3ZGLGFBQWEsRUFBRSw2TUFBNk07UUFDNU4sYUFBYSxFQUFFLHlGQUF5RjtRQUN4RyxXQUFXLEVBQUUsZ0lBQWdJO1FBQzdJLFlBQVksRUFBRSxtV0FBbVc7UUFDalgsU0FBUyxFQUFFLHNLQUFzSztRQUNqTCxVQUFVLEVBQUUsZ0RBQWdEO1FBQzVELFVBQVUsRUFBRSw4Q0FBOEM7UUFDMUQsaUJBQWlCLEVB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QUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNqRixDQUFDO0lBRVksUUFBQSxlQUFlLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUNsTixRQUFBLGtCQUFrQixHQUFHLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFdk8sU0FBZ0Isc0JBQXNCLENBQUMsRUFBNkIsRUFBRSxTQUFrQjtRQUNwRixJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxHQUFHLENBQUM7WUFBRSxPQUFPLFVBQVUsQ0FBQztRQUM1QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM5RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLDBCQUFrQixDQUFDLENBQUMsQ0FBQyx1QkFBZSxDQUFDO1FBQzNELE9BQU8sS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUM7SUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFByb3ZpZGVyLCB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgKiBhcyBsaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuXHJcbmltcG9ydCB7IGV4cGVjdGVkIH0gZnJvbSBcImNhc3QtZXJyb3JcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgICBDc3NCYXNlbGluZSwgU3ZnSWNvbiwgVGhlbWVQcm92aWRlciwgVHlwb2dyYXBoeSwgWm9vbSwgdXNlU2Nyb2xsVHJpZ2dlciwgY3JlYXRlVGhlbWUsXHJcbiAgICBNZW51LFxyXG4gICAgQnV0dG9uXHJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IHsgU3RvcmUsIEFjdGlvbiB9IGZyb20gXCJyZWR1eFwiO1xyXG5pbXBvcnQgeyBUaXBvVmFyaWFibGVzIH0gZnJvbSBcIi4vdGlwb3NcIjtcclxuXHJcbi8vIGh0dHBzOi8vbWF0ZXJpYWwtdWkuY29tL2NvbXBvbmVudHMvbWF0ZXJpYWwtaWNvbnMvXHJcbmV4cG9ydCBjb25zdCBtYXRlcmlhbElvSWNvbnNTdmdQYXRoID0ge1xyXG4gICAgQWRkOiBcIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6XCIsXHJcbiAgICBBcnJvd0JhY2s6IFwiTTIwIDExSDcuODNsNS41OS01LjU5TDEyIDRsLTggOCA4IDggMS40MS0xLjQxTDcuODMgMTNIMjB2LTJ6XCIsXHJcbiAgICBBc3NpZ25tZW50OiBcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMiAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwiLFxyXG4gICAgQnVzaW5lc3NDZW50ZXI6IFwiTTEwIDE2di0xSDMuMDFMMyAxOWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMnYtNGgtN3Yxem0xMC05aC00LjAxVjVsLTItMmgtNGwtMiAydjJINGMtMS4xIDAtMiAuOS0yIDJ2M2MwIDEuMTEuODkgMiAyIDJoNnYtMmg0djJoNmMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0ybS02IDBoLTRWNWg0elwiLFxyXG4gICAgQ2hlY2s6IFwiTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxelwiLFxyXG4gICAgQ2hlY2tCb3hPdXRsaW5lQmxhbmtPdXRsaW5lZDogXCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIixcclxuICAgIENoZWNrQm94T3V0bGluZWQ6IFwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNMTcuOTkgOWwtMS40MS0xLjQyLTYuNTkgNi41OS0yLjU4LTIuNTctMS40MiAxLjQxIDQgMy45OXpcIixcclxuICAgIENoZXZyb25MZWZ0OiBcIk0xNC43MSA2LjcxYS45OTU5Ljk5NTkgMCAwMC0xLjQxIDBMOC43MSAxMS4zYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxbDQuNTkgNC41OWMuMzkuMzkgMS4wMi4zOSAxLjQxIDAgLjM5LS4zOS4zOS0xLjAyIDAtMS40MUwxMC44MyAxMmwzLjg4LTMuODhjLjM5LS4zOS4zOC0xLjAzIDAtMS40MXpcIixcclxuICAgIENoZXZyb25SaWdodDogXCJNOS4yOSA2LjcxYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxTDEzLjE3IDEybC0zLjg4IDMuODhjLS4zOS4zOS0uMzkgMS4wMiAwIDEuNDEuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFMMTAuNyA2LjdjLS4zOC0uMzgtMS4wMi0uMzgtMS40MS4wMXpcIixcclxuICAgIENsZWFyOiBcIk0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6XCIsXHJcbiAgICBDbG9zZTogXCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiLFxyXG4gICAgQ2xvdWRTeW5jOlwiTTIxLjUgMTQuOThjLS4wMiAwLS4wMyAwLS4wNS4wMUMyMS4yIDEzLjMgMTkuNzYgMTIgMTggMTJjLTEuNCAwLTIuNi44My0zLjE2IDIuMDJDMTMuMjYgMTQuMSAxMiAxNS40IDEyIDE3YzAgMS42NiAxLjM0IDMgMyAzbDYuNS0uMDJjMS4zOCAwIDIuNS0xLjEyIDIuNS0yLjVzLTEuMTItMi41LTIuNS0yLjVNMTAgNC4yNnYyLjA5QzcuNjcgNy4xOCA2IDkuMzkgNiAxMmMwIDEuNzcuNzggMy4zNCAyIDQuNDRWMTRoMnY2SDR2LTJoMi43M0M1LjA2IDE2LjU0IDQgMTQuNCA0IDEyYzAtMy43MyAyLjU1LTYuODUgNi03Ljc0TTIwIDZoLTIuNzNjMS40MyAxLjI2IDIuNDEgMy4wMSAyLjY2IDVoLTIuMDJjLS4yMy0xLjM2LS45My0yLjU1LTEuOTEtMy40NFYxMGgtMlY0aDZ6XCIsXHJcbiAgICBDb2RlOiBcIk05LjQgMTYuNkw0LjggMTJsNC42LTQuNkw4IDZsLTYgNiA2IDYgMS40LTEuNHptNS4yIDBsNC42LTQuNi00LjYtNC42TDE2IDZsNiA2LTYgNi0xLjQtMS40elwiLFxyXG4gICAgQ3JlYXRlOiBcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0YS45OTU5Ljk5NTkgMCAwMC0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwiLFxyXG4gICAgRGVsZXRlOiBcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCIsXHJcbiAgICBEZWxldGVGb3JldmVyOiBcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6bTIuNDYtNy4xMmwxLjQxLTEuNDFMMTIgMTIuNTlsMi4xMi0yLjEyIDEuNDEgMS40MUwxMy40MSAxNGwyLjEyIDIuMTItMS40MSAxLjQxTDEyIDE1LjQxbC0yLjEyIDIuMTItMS40MS0xLjQxTDEwLjU5IDE0bC0yLjEzLTIuMTJ6TTE1LjUgNGwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCIsXHJcbiAgICBEZWxldGVPdXRsaW5lOiBcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTggOWg4djEwSDhWOXptNy41LTVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiLFxyXG4gICAgRGVzY3JpcHRpb246IFwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMiAxNkg4di0yaDh2MnptMC00SDh2LTJoOHYyem0tMy01VjMuNUwxOC41IDlIMTN6XCIsXHJcbiAgICBFbW9qaU9iamVjdHM6IFwiTTEyIDNjLS40NiAwLS45My4wNC0xLjQuMTQtMi43Ni41My00Ljk2IDIuNzYtNS40OCA1LjUyLS40OCAyLjYxLjQ4IDUuMDEgMi4yMiA2LjU2LjQzLjM4LjY2LjkxLjY2IDEuNDdWMTljMCAxLjEuOSAyIDIgMmguMjhjLjM1LjYuOTggMSAxLjcyIDFzMS4zOC0uNCAxLjcyLTFIMTRjMS4xIDAgMi0uOSAyLTJ2LTIuMzFjMC0uNTUuMjItMS4wOS42NC0xLjQ2QzE4LjA5IDEzLjk1IDE5IDEyLjA4IDE5IDEwYzAtMy44Ny0zLjEzLTctNy03em0yIDE2aC00di0xaDR2MXptMC0yaC00di0xaDR2MXptLTEuNS01LjU5VjE0aC0xdi0yLjU5TDkuNjcgOS41OWwuNzEtLjcxTDEyIDEwLjVsMS42Mi0xLjYyLjcxLjcxLTEuODMgMS44MnpcIixcclxuICAgIEV4aXRUb0FwcDogXCJNMTAuMDkgMTUuNTlMMTEuNSAxN2w1LTUtNS01LTEuNDEgMS40MUwxMi42NyAxMUgzdjJoOS42N2wtMi41OCAyLjU5ek0xOSAzSDVjLTEuMTEgMC0yIC45LTIgMnY0aDJWNWgxNHYxNEg1di00SDN2NGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwiLFxyXG4gICAgRXhwYW5kTGVzczogXCJNMTIgOGwtNiA2IDEuNDEgMS40MUwxMiAxMC44M2w0LjU5IDQuNThMMTggMTR6XCIsXHJcbiAgICBFeHBhbmRNb3JlOiBcIk0xNi41OSA4LjU5TDEyIDEzLjE3IDcuNDEgOC41OSA2IDEwbDYgNiA2LTZ6XCIsXHJcbiAgICBGb3JtYXRMaW5lU3BhY2luZzogXCJNNiA3aDIuNUw1IDMuNSAxLjUgN0g0djEwSDEuNUw1IDIwLjUgOC41IDE3SDZWN3ptNC0ydjJoMTJWNUgxMHptMCAxNGgxMnYtMkgxMHYyem0wLTZoMTJ2LTJIMTB2MnpcIixcclxuICAgIEZvcndhcmQ6IFwiTTEyIDhWNGw4IDgtOCA4di00SDRWOHpcIixcclxuICAgIEZvcndhcmRPdXRsaW5lZDogXCJNMTQgOC44M0wxNy4xNyAxMiAxNCAxNS4xN1YxNEg2di00aDhWOC44M00xMiA0djRINHY4aDh2NGw4LTgtOC04elwiLFxyXG4gICAgSW5mbzogXCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnpcIixcclxuICAgIEtleWJvYXJkQXJyb3dVcDogXCJNNy40MSAxNS40MUwxMiAxMC44M2w0LjU5IDQuNThMMTggMTRsLTYtNi02IDZ6XCIsXHJcbiAgICBLZXlib2FyZEFycm93RG93bjogXCJNNy40MSA4LjU5TDEyIDEzLjE3bDQuNTktNC41OEwxOCAxMGwtNiA2LTYtNiAxLjQxLTEuNDF6XCIsXHJcbiAgICBMYWJlbDogXCJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUw1IDUuMDFDMy45IDUuMDEgMyA1LjkgMyA3djEwYzAgMS4xLjkgMS45OSAyIDEuOTlMMTYgMTljLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjIgMTJsLTQuMzctNi4xNnpcIixcclxuICAgIExvY2FsQXRtOiBcIk0xMSAxN2gydi0xaDFjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMWgtM3YtMWg0VjhoLTJWN2gtMnYxaC0xYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWgzdjFIOXYyaDJ2MXptOS0xM0g0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2YzAtMS4xMS0uODktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwiLFxyXG4gICAgTG9jYXRpb246IFwiTTEyIDJDOC4xMyAyIDUgNS4xMyA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODctMy4xMy03LTctN20wIDkuNWMtMS4zOCAwLTIuNS0xLjEyLTIuNS0yLjVzMS4xMi0yLjUgMi41LTIuNSAyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjVcIixcclxuICAgIE1lbnU6IFwiTTMgMThoMTh2LTJIM3Yyem0wLTVoMTh2LTJIM3Yyem0wLTd2MmgxOFY2SDN6XCIsXHJcbiAgICBOYXZpZ2F0aW9uOiBcIk0xMiAyTDQuNSAyMC4yOWwuNzEuNzFMMTIgMThsNi43OSAzIC43MS0uNzF6XCIsXHJcbiAgICBOYXZpZ2F0aW9uRG93bjogXCJNMTIgMjJMNC41IDMuNzFsLjcxIC0uNzFMMTIgNmw2Ljc5IC0zIC43MSAuNzF6XCIsXHJcbiAgICBSZWZyZXNoOiBcIk0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjR6XCIsXHJcbiAgICBSZW1vdmVTaG9wcGluZ0NhcnQ6IFwiTTIyLjczIDIyLjczTDIuNzcgMi43NyAyIDJsLS43My0uNzNMMCAyLjU0bDQuMzkgNC4zOSAyLjIxIDQuNjYtMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDcuNDZsMS4zOCAxLjM4Yy0uNS4zNi0uODMuOTUtLjgzIDEuNjIgMCAxLjEuODkgMiAxLjk5IDIgLjY3IDAgMS4yNi0uMzMgMS42Mi0uODRMMjEuNDYgMjRsMS4yNy0xLjI3ek03LjQyIDE1Yy0uMTQgMC0uMjUtLjExLS4yNS0uMjVsLjAzLS4xMi45LTEuNjNoMi4zNmwyIDJINy40MnptOC4xMy0yYy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDljLjA4LS4xNC4xMi0uMzEuMTItLjQ4IDAtLjU1LS40NS0xLTEtMUg2LjU0bDkuMDEgOXpNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnpcIixcclxuICAgIFNhdmU6IFwiTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0elwiLFxyXG4gICAgU2Nob29sOiBcIk01IDEzLjE4djRMMTIgMjFsNy0zLjgydi00TDEyIDE3ek0xMiAzIDEgOWwxMSA2IDktNC45MVYxN2gyVjl6XCIsXHJcbiAgICBTZWFyY2g6IFwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCIsXHJcbiAgICBTZW5kOiBcIk0yLjAxIDIxTDIzIDEyIDIuMDEgMyAyIDEwbDE1IDItMTUgMnpcIixcclxuICAgIFNldHRpbmdzOiBcIk0xNS45NSAxMC43OGMuMDMtLjI1LjA1LS41MS4wNS0uNzhzLS4wMi0uNTMtLjA2LS43OGwxLjY5LTEuMzJjLjE1LS4xMi4xOS0uMzQuMS0uNTFsLTEuNi0yLjc3Yy0uMS0uMTgtLjMxLS4yNC0uNDktLjE4bC0xLjk5LjhjLS40Mi0uMzItLjg2LS41OC0xLjM1LS43OEwxMiAyLjM0Yy0uMDMtLjItLjItLjM0LS40LS4zNEg4LjRjLS4yIDAtLjM2LjE0LS4zOS4zNGwtLjMgMi4xMmMtLjQ5LjItLjk0LjQ3LTEuMzUuNzhsLTEuOTktLjhjLS4xOC0uMDctLjM5IDAtLjQ5LjE4bC0xLjYgMi43N2MtLjEuMTgtLjA2LjM5LjEuNTFsMS42OSAxLjMyYy0uMDQuMjUtLjA3LjUyLS4wNy43OHMuMDIuNTMuMDYuNzhMMi4zNyAxMi4xYy0uMTUuMTItLjE5LjM0LS4xLjUxbDEuNiAyLjc3Yy4xLjE4LjMxLjI0LjQ5LjE4bDEuOTktLjhjLjQyLjMyLjg2LjU4IDEuMzUuNzhsLjMgMi4xMmMuMDQuMi4yLjM0LjQuMzRoMy4yYy4yIDAgLjM3LS4xNC4zOS0uMzRsLjMtMi4xMmMuNDktLjIuOTQtLjQ3IDEuMzUtLjc4bDEuOTkuOGMuMTguMDcuMzkgMCAuNDktLjE4bDEuNi0yLjc3Yy4xLS4xOC4wNi0uMzktLjEtLjUxbC0xLjY3LTEuMzJ6TTEwIDEzYy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3pcIixcclxuICAgIFN5bmNBbHQ6IFwiTTIyIDhsLTQtNHYzSDN2MmgxNXYzbDQtNHpNMiAxNmw0IDR2LTNoMTV2LTJINnYtM2wtNCA0elwiLFxyXG4gICAgU3BvcnRzRXNwb3J0czogXCJtMjEuNTggMTYuMDktMS4wOS03LjY2QzIwLjIxIDYuNDYgMTguNTIgNSAxNi41MyA1SDcuNDdDNS40OCA1IDMuNzkgNi40NiAzLjUxIDguNDNsLTEuMDkgNy42NkMyLjIgMTcuNjMgMy4zOSAxOSA0Ljk0IDE5Yy42OCAwIDEuMzItLjI3IDEuOC0uNzVMOSAxNmg2bDIuMjUgMi4yNWMuNDguNDggMS4xMy43NSAxLjguNzUgMS41NiAwIDIuNzUtMS4zNyAyLjUzLTIuOTFNMTEgMTFIOXYySDh2LTJINnYtMWgyVjhoMXYyaDJ6bTQtMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxbTIgM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxXCIsXHJcbiAgICBUcmVuZGluZ0ZsYXQ6IFwiTTIyIDEybC00LTR2M0gzdjJoMTV2M3pcIixcclxuICAgIFdhcm5pbmc6IFwiTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHpcIixcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IElDT04gPSBsaWtlQXIobWF0ZXJpYWxJb0ljb25zU3ZnUGF0aCkubWFwKHN2Z1RleHQgPT4gKCkgPT5cclxuICAgIDxTdmdJY29uPjxwYXRoIGQ9e3N2Z1RleHR9IC8+PC9TdmdJY29uPlxyXG4pLnBsYWluKCk7XHJcblxyXG5leHBvcnQgdHlwZSBTdHlsZXMgPSBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xyXG5cclxuZXhwb3J0IHR5cGUgT25VcGRhdGU8VD4gPSAoZGF0YTogVCkgPT4gdm9pZFxyXG5cclxuZXhwb3J0IHR5cGUgSW5wdXRUeXBlcyA9ICdkYXRlJyB8ICdudW1iZXInIHwgJ3RlbCcgfCAndGV4dCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRhcHRhclRpcG9WYXJDYXNpbGxlcm8oY2FzaWxsZXJvRGF0YVR5cGU6IFRpcG9WYXJpYWJsZXMgfCAnb3BjaW9uZXMnIHwgJ3NpX25vJyk6IElucHV0VHlwZXMge1xyXG4gICAgY29uc3QgYWRhcHRlcjogeyBba2V5IGluIFRpcG9WYXJpYWJsZXMgfCAnb3BjaW9uZXMnIHwgJ3NpX25vJ106IElucHV0VHlwZXMgfSA9IHtcclxuICAgICAgICAnb3BjaW9uZXMnOiAnbnVtYmVyJyxcclxuICAgICAgICAnc2lfbm8nOiAnbnVtYmVyJyxcclxuICAgICAgICAnbnVtZXJvJzogJ251bWJlcicsXHJcbiAgICAgICAgJ2hvcmEnOiAndGVsJyxcclxuICAgICAgICAnaG9yYXMnOiAnbnVtYmVyJyxcclxuICAgICAgICAndGV4dG8nOiAndGV4dCcsXHJcbiAgICAgICAgJ2ZlY2hhJzogJ3RleHQnXHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWRhcHRlcltjYXNpbGxlcm9EYXRhVHlwZV1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvVG9wID0gKCkgPT4ge1xyXG4gICAgd2luZG93LnNjcm9sbCh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiAwLCBsZWZ0OiAwIH0pXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc2Nyb2xsVG9Cb3R0b20gPSAoKSA9PiB7XHJcbiAgICB3aW5kb3cuc2Nyb2xsKHsgYmVoYXZpb3I6ICdzbW9vdGgnLCB0b3A6IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0IC0gd2luZG93LmlubmVySGVpZ2h0LCBsZWZ0OiAwIH0pXHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFNjcm9sbFRvcChwcm9wczogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3RFbGVtZW50IH0pIHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHByb3BzO1xyXG4gICAgLy9jb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzU2Nyb2xsVG9wKCk7XHJcbiAgICAvLyBOb3RlIHRoYXQgeW91IG5vcm1hbGx5IHdvbid0IG5lZWQgdG8gc2V0IHRoZSB3aW5kb3cgcmVmIGFzIHVzZVNjcm9sbFRyaWdnZXJcclxuICAgIC8vIHdpbGwgZGVmYXVsdCB0byB3aW5kb3cuXHJcbiAgICAvLyBUaGlzIGlzIG9ubHkgYmVpbmcgc2V0IGhlcmUgYmVjYXVzZSB0aGUgZGVtbyBpcyBpbiBhbiBpZnJhbWUuXHJcbiAgICBjb25zdCB0cmlnZ2VyID0gdXNlU2Nyb2xsVHJpZ2dlcih7XHJcbiAgICAgICAgZGlzYWJsZUh5c3RlcmVzaXM6IHRydWUsXHJcbiAgICAgICAgdGhyZXNob2xkOiAxMDAsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPFpvb20gaW49e3RyaWdnZXJ9PlxyXG4gICAgICAgICAgICA8ZGl2IG9uQ2xpY2s9e3Njcm9sbFRvVG9wfSByb2xlPVwicHJlc2VudGF0aW9uXCIgLypjbGFzc05hbWU9e2NsYXNzZXMucm9vdH0qLz5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9ab29tPlxyXG4gICAgKTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRm9jdXNPcHRzID0ge1xyXG4gICAgbW92ZVRvRWxlbWVudDogYm9vbGVhblxyXG4gICAgbW92ZUJlaGF2aW9yPzogJ2F1dG8nIHwgJ3Ntb290aCdcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzVG9JZChpZDogc3RyaW5nLCBvcHRzOiBGb2N1c09wdHMsIGNiPzogKGU6IEhUTUxFbGVtZW50KSA9PiB2b2lkKSB7XHJcbiAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgIHZhciBwYWRyZSA9IGVsZW1lbnQ7XHJcbiAgICB3aGlsZSAocGFkcmUgJiYgcGFkcmUuY2xhc3NOYW1lICE9ICdwcmVndW50YScgJiYgcGFkcmUgIT0gZG9jdW1lbnQuYm9keSkgcGFkcmUgPSBwYWRyZS5wYXJlbnRFbGVtZW50O1xyXG4gICAgaWYgKHBhZHJlICYmIHBhZHJlLmNsYXNzTmFtZSA9PSAncHJlZ3VudGEnKSBlbGVtZW50ID0gcGFkcmU7XHJcbiAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgIGlmIChjYikge1xyXG4gICAgICAgICAgICBjYihlbGVtZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIGlmIChvcHRzLm1vdmVUb0VsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGwoeyBiZWhhdmlvcjogb3B0cy5tb3ZlQmVoYXZpb3IgfHwgJ2F1dG8nLCB0b3A6IHdpbmRvdy5zY3JvbGxZIC0gMTAwLCBsZWZ0OiAwIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElEaXNwYXRjaGVycyA9IHsgUkVTRVRfT1BDSU9ORVM6IEZ1bmN0aW9uIH07XHJcblxyXG5mdW5jdGlvbiBnZXRCYWRnZVN0eWxlKGVzdGFkbzogc3RyaW5nKTogUmVhY3QuQ1NTUHJvcGVydGllcyB7XHJcbiAgICBjb25zdCBiYXNlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xyXG4gICAgICAgIHBhZGRpbmc6ICcycHggNnB4JyxcclxuICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxyXG4gICAgICAgIGZvbnRTaXplOiAnMTFweCcsXHJcbiAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxyXG4gICAgICAgIHRleHRUcmFuc2Zvcm06ICd1cHBlcmNhc2UnXHJcbiAgICB9O1xyXG4gICAgaWYgKGVzdGFkbyA9PT0gJ29rJykgcmV0dXJuIHsgLi4uYmFzZSwgYmFja2dyb3VuZENvbG9yOiAnI2M2ZjZkNScsIGNvbG9yOiAnIzIyNTQzZCcgfTtcclxuICAgIGlmIChlc3RhZG8gPT09ICdpbmNvbXBsZXRvJyB8fCBlc3RhZG8gPT09ICdjb24gcHJvYmxlbWFzJykgcmV0dXJuIHsgLi4uYmFzZSwgYmFja2dyb3VuZENvbG9yOiAnI2ZlZWJjOCcsIGNvbG9yOiAnIzc0NDIxMCcgfTtcclxuICAgIHJldHVybiB7IC4uLmJhc2UsIGJhY2tncm91bmRDb2xvcjogJyNlZGYyZjcnLCBjb2xvcjogJyM0YTU1NjgnIH07XHJcbn1cclxuaW50ZXJmYWNlIFJlbmRlcml6YWRvckpTT05Qcm9wcyB7XHJcbiAgICBkYXRvczogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICAgIG5pdmVsPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgUmVuZGVyaXphZG9ySlNPTjogUmVhY3QuRkM8UmVuZGVyaXphZG9ySlNPTlByb3BzPiA9ICh7IGRhdG9zLCBuaXZlbCA9IDAgfSkgPT4ge1xyXG5cclxuICAgIGNvbnN0IGNsYXZlc0ZpbHRyYWRhcyA9IE9iamVjdC5rZXlzKGRhdG9zKS5maWx0ZXIoXHJcbiAgICAgICAgY2xhdmUgPT4gIWNsYXZlLnN0YXJ0c1dpdGgoJyQnKSAmJiBjbGF2ZSAhPT0gJ3RpbWVzdGFtcEVzdHJ1Y3R1cmEnXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nTGVmdDogbml2ZWwgPiAwID8gJzE2cHgnIDogJzBweCcgfX0+XHJcbiAgICAgICAgICAgIHtjbGF2ZXNGaWx0cmFkYXMubWFwKGNsYXZlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbG9yID0gZGF0b3NbY2xhdmVdO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIERFVEVDQ0nDk04gREUgU1VCLVVOSURBREVTIERFIEFOw4FMSVNJUyAoaG9nYXJlcywgcGVyc29uYXMsIGV0Yy4pXHJcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWxvcikgJiYgdmFsb3IubGVuZ3RoID4gMCAmJiB0eXBlb2YgdmFsb3JbMF0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjbGF2ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAnMTJweCAwJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJMZWZ0OiAnNHB4IHNvbGlkICMzMTgyY2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmN2ZhZmMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzAgNnB4IDZweCAwJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnOHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogVMOtdHVsbyBkZSBsYSBVQSAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFdlaWdodDogJ2JvbGQnLCBjb2xvcjogJyMyYjZjYjAnLCBmb250U2l6ZTogJzEzcHgnLCB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJywgbWFyZ2luQm90dG9tOiAnNnB4JyB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlkYWQgZGUgQW7DoWxpc2lzOiB7Y2xhdmV9ICh7dmFsb3IubGVuZ3RofSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWxvci5tYXAoKHJlZ2lzdHJvLCBmaWxhSW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17ZmlsYUluZGV4fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBmaWxhSW5kZXggPCB2YWxvci5sZW5ndGggLSAxID8gJzEwcHgnIDogJzAnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogZmlsYUluZGV4ID4gMCA/ICc2cHgnIDogJzAnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyVG9wOiBmaWxhSW5kZXggPiAwID8gJzFweCBkYXNoZWQgI2UyZThmMCcgOiAnbm9uZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZW5kZXJpemFkb3JKU09OIGRhdG9zPXtyZWdpc3Ryb30gbml2ZWw9e25pdmVsICsgMX0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIFNpIHBvciBsYXMgZHVkYXMgZXMgdW4gb2JqZXRvIGRpcmVjdG8gcXVlIG5vIGVzIGFycmF5LCBsbyBzYWx0ZWFtb3NcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsb3IgPT09ICdvYmplY3QnICYmIHZhbG9yICE9PSBudWxsKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBWQVJJQUJMRVMgRVNUw4FOREFSIChDbGF2ZSB5IHZhbG9yIGp1bnRvcylcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NsYXZlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4V3JhcDogJ3dyYXAnLCAvLyBQb3Igc2kgZWwgdmFsb3IgZXMgbXV5IGxhcmdvLCBxdWUgYmFqZSBsaW1waW9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICc0cHggMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzEzcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAnMS40J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIENsYXZlOiBhaG9yYSBzaW4gYW5jaG8gZmlqbywgc2UgYWRhcHRhIGFsIHRleHRvICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGNvbG9yOiAnIzRhNTU2OCcsIGZvbnRXZWlnaHQ6IDUwMCwgbWFyZ2luUmlnaHQ6ICc2cHgnIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NsYXZlfTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7LyogVmFsb3I6IHBlZ2FkbyBpbm1lZGlhdGFtZW50ZSBhIGxhIGNsYXZlICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGNvbG9yOiAnIzFhMjAyYycsIGZvbnRXZWlnaHQ6IDYwMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjbGF2ZS5zdGFydHNXaXRoKCdyZXN1bWVuRXN0YWRvJykgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e2dldEJhZGdlU3R5bGUoU3RyaW5nKHZhbG9yKSl9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7U3RyaW5nKHZhbG9yKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyh2YWxvciA/PyAnJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlc2V0ZXJGb3JtKHByb3BzOiB7IG9uVHJ5QWdhaW46ICgpID0+IHZvaWQsIGRpc3BhdGNoZXJzOiBJRGlzcGF0Y2hlcnMsIG1lbnNhamU6IHN0cmluZyB9KSB7XHJcbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICByZXR1cm4gPD5cclxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHByb3BzLmRpc3BhdGNoZXJzLlJFU0VUX09QQ0lPTkVTKHt9KSk7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5vblRyeUFnYWluKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgPntwcm9wcy5tZW5zYWplfTwvQnV0dG9uPlxyXG4gICAgPC8+O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmVuZGVyQW5kQ2FwdHVyZUVycm9yIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxyXG4gICAgeyBkaXNwYXRjaGVyczogSURpc3BhdGNoZXJzLCBtZW5zYWplUmV0b3Jubzogc3RyaW5nIH0sXHJcbiAgICB7IGhhc0Vycm9yOiBib29sZWFuLCBlcnJvcjogRXJyb3IgfCB7fSwgaW5mbz86IGFueSB9XHJcbj4ge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHM6IHsgZGlzcGF0Y2hlcnM6IElEaXNwYXRjaGVycywgbWVuc2FqZVJldG9ybm86IHN0cmluZyB9KSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7IGhhc0Vycm9yOiBmYWxzZSwgZXJyb3I6IHt9IH07XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBjb21wb25lbnREaWRDYXRjaChlcnJvcjogRXJyb3IsIGluZm86IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBoYXNFcnJvcjogdHJ1ZSwgZXJyb3IsIGluZm8gfSk7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSByZW5kZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuaGFzRXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5IdWJvIHVuIHByb2JsZW1hIGVuIGxhIHByb2dyYW1hY2nDs24gZGUgbGEgcGFudGFsbGEuPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICAgICAgPFJlc2V0ZXJGb3JtIGRpc3BhdGNoZXJzPXt0aGlzLnByb3BzLmRpc3BhdGNoZXJzfSBtZW5zYWplPXt0aGlzLnByb3BzLm1lbnNhamVSZXRvcm5vfSBvblRyeUFnYWluPXsoKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBoYXNFcnJvcjogZmFsc2UsIGVycm9yOiB7fSB9KVxyXG4gICAgICAgICAgICAgICAgfSAvPlxyXG4gICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiBjb2xvcj1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2dvdG9TaW5jcm9uaXphcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+aXIgYSBsYSBwYW50YWxsYSBkZSBzaW5jcm9uaXphY2nDs248L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PkVycm9yIGRldGVjdGFkbzo8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT57ZXhwZWN0ZWQodGhpcy5zdGF0ZS5lcnJvcikubWVzc2FnZX08L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT57SlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5pbmZvKX08L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgIDwvPjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoe1xyXG4gICAgY29tcG9uZW50czoge1xyXG4gICAgICAgIE11aUNzc0Jhc2VsaW5lOiB7XHJcbiAgICAgICAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XHJcbiAgICAgICAgICAgICAgICBodG1sOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgV2Via2l0Rm9udFNtb290aGluZzogJ2F1dG8nLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgfSxcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdXNlT25saW5lU3RhdHVzKCkge1xyXG4gICAgY29uc3QgW29ubGluZSwgc2V0T25saW5lXSA9IHVzZVN0YXRlKHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lKTtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBzZXRPbmxpbmUod2luZG93Lm5hdmlnYXRvci5vbkxpbmUpO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCBoYW5kbGVyKTtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb2ZmbGluZScsIGhhbmRsZXIpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdvbmxpbmUnLCBoYW5kbGVyKTtcclxuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ29mZmxpbmUnLCBoYW5kbGVyKTtcclxuICAgICAgICB9O1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIHJldHVybiBvbmxpbmU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBSZW5kZXJQcmluY2lwYWw8VCwgVDIgZXh0ZW5kcyBBY3Rpb24+KHByb3BzOiB7IHN0b3JlOiBTdG9yZTxULCBUMj4sIGRpc3BhdGNoZXJzOiBJRGlzcGF0Y2hlcnMsIG1lbnNhamVSZXRvcm5vOiBzdHJpbmcsIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xyXG4gICAgcmV0dXJuIDxSZWFjdC5TdHJpY3RNb2RlPlxyXG4gICAgICAgIDxQcm92aWRlciBzdG9yZT17cHJvcHMuc3RvcmV9PlxyXG4gICAgICAgICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxyXG4gICAgICAgICAgICAgICAgPFJlbmRlckFuZENhcHR1cmVFcnJvciBkaXNwYXRjaGVycz17cHJvcHMuZGlzcGF0Y2hlcnN9IG1lbnNhamVSZXRvcm5vPXtwcm9wcy5tZW5zYWplUmV0b3Jub30+XHJcbiAgICAgICAgICAgICAgICAgICAgPENzc0Jhc2VsaW5lIC8+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgICAgICAgICAgICAgPC9SZW5kZXJBbmRDYXB0dXJlRXJyb3I+XHJcbiAgICAgICAgICAgIDwvVGhlbWVQcm92aWRlcj5cclxuICAgICAgICA8L1Byb3ZpZGVyPlxyXG4gICAgPC9SZWFjdC5TdHJpY3RNb2RlPlxyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgbm9tYnJlTWVzZXMgPSBbJ2VuZXJvJywgJ2ZlYnJlcm8nLCAnbWFyem8nLCAnYWJyaWwnLCAnbWF5bycsICdqdW5pbycsICdqdWxpbycsICdhZ29zdG8nLCAnc2VwdGllbWJyZScsICdvY3R1YnJlJywgJ25vdmllbWJyZScsICdkaWNpZW1icmUnXTtcclxuZXhwb3J0IGNvbnN0IG5vbWJyZURpYXMgPSBbJ2RvbWluZ28nLCAnbHVuZXMnLCAnbWFydGVzJywgJ21pw6lyY29sZXMnLCAnanVldmVzJywgJ3ZpZXJuZXMnLCAnc8OhYmFkbyddO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWFyRmVjaGFEZXNkZVRleHRvSVNPKHRleHRvOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIHZhciBwYXJ0ZXMgPSB0ZXh0by5zcGxpdCgvWy8tXS9nKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZShOdW1iZXIocGFydGVzWzBdKSwgTnVtYmVyKHBhcnRlc1sxXSkgLSAxLCBOdW1iZXIocGFydGVzWzJdKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZXNSZWZlcmVuY2lhKGZlY2hhOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgdmFyIGQgPSBjcmVhckZlY2hhRGVzZGVUZXh0b0lTTyhmZWNoYSk7XHJcbiAgICByZXR1cm4gbm9tYnJlTWVzZXNbZC5nZXRNb250aCgpXTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZlY2hhUmVmZXJlbmNpYShmZWNoYTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHZhciBkID0gY3JlYXJGZWNoYURlc2RlVGV4dG9JU08oZmVjaGEpO1xyXG4gICAgcmV0dXJuIGAke25vbWJyZURpYXNbZC5nZXREYXkoKV19ICR7ZC5nZXREYXRlKCl9IGRlICR7bWVzUmVmZXJlbmNpYShmZWNoYSl9YDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHRleHRvUGFyZW50ZXNjbyA9IFsnSmVmZS9hJywgJ0PDs255dWdlL3BhcmVqYScsICdIaWpvL2EnLCAnSGlqYXN0cm8vYScsICdZZXJubyBvIG51ZXJhJywgJ05pZXRvL2EnLCAnUGFkcmUvbWFkcmUvc3VlZ3JvL2EnLCAnSGVybWFuby9hJywgJ0N1w7FhZG8vYScsICdTb2JyaW5vL2EnLCAnQWJ1ZWxvL2EnLCAnT3RybyBmYW1pbGlhcicsICdPdHJvIG5vIGZhbWlsaWFyJ107XHJcbmV4cG9ydCBjb25zdCB0ZXh0b1BhcmVudGVzY29WY20gPSBbJ1Jlc3BvbmRlbnRlJywgJ0PDs255dWdlL3BhcmVqYScsICdIaWpvL2EnLCAnSGlqYXN0cm8vYScsICdZZXJubyBvIG51ZXJhJywgJ05pZXRvL2EnLCAnUGFkcmUvbWFkcmUvc3VlZ3JvL2EnLCAnSGVybWFuby9hJywgJ0N1w7FhZG8vYScsICdTb2JyaW5vL2EnLCAnQWJ1ZWxvL2EnLCAnT3RybyBmYW1pbGlhcicsICdPdHJvIG5vIGZhbWlsaWFyJ107XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb2J0ZW5lclRleHRvUGFyZW50ZXNjbyhwNDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgb3BlcmF0aXZvPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChwNCA9PSBudWxsIHx8IHA0IDwgMSkgcmV0dXJuICcuLi4uLi4uLic7XHJcbiAgICBjb25zdCBlc1ZjbSA9IG9wZXJhdGl2byA/IG9wZXJhdGl2by5zdGFydHNXaXRoKCd2Y20nKSA6IGZhbHNlO1xyXG4gICAgY29uc3QgbGlzdGEgPSBlc1ZjbSA/IHRleHRvUGFyZW50ZXNjb1ZjbSA6IHRleHRvUGFyZW50ZXNjbztcclxuICAgIHJldHVybiBsaXN0YVtwNCAtIDFdIHx8ICcuLi4uLi4uLic7XHJcbn1cclxuXHJcblxyXG5cclxuIl19
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWdlbmVyYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvcmVuZGVyLWdlbmVyYWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTJFQSwwREFXQztJQVdELDhCQWlCQztJQU9ELDhCQWdCQztJQTBHRCxrQ0FVQztJQThDRCwwQ0FjQztJQUVELDBDQVdDO0lBS0QsMERBR0M7SUFFRCxzQ0FHQztJQUVELDBDQUdDO0lBS0Qsd0RBS0M7SUFsV0QsK0JBQStCO0lBQy9CLGlDQUE0QztJQUM1Qyw2Q0FBb0Q7SUFDcEQsa0NBQW1DO0lBRW5DLDJDQUFzQztJQUV0Qyw0Q0FJdUI7SUFJdkIscURBQXFEO0lBQ3hDLFFBQUEsc0JBQXNCLEdBQUc7UUFDbEMsR0FBRyxFQUFFLHFDQUFxQztRQUMxQyxTQUFTLEVBQUUsOERBQThEO1FBQ3pFLFVBQVUsRUFBRSxnT0FBZ087UUFDNU8sY0FBYyxFQUFFLDBMQUEwTDtRQUMxTSxLQUFLLEVBQUUsbURBQW1EO1FBQzFELDRCQUE0QixFQUFFLDRGQUE0RjtRQUMxSCxnQkFBZ0IsRUFBRSx1SkFBdUo7UUFDekssV0FBVyxFQUFFLHdLQUF3SztRQUNyTCxZQUFZLEVBQUUsMEtBQTBLO1FBQ3hMLEtBQUssRUFBRSx1R0FBdUc7UUFDOUcsS0FBSyxFQUFFLHVHQUF1RztRQUM5RyxTQUFTLEVBQUMsNFhBQTRYO1FBQ3RZLElBQUksRUFBRSw0RkFBNEY7UUFDbEcsTUFBTSxFQUFFLHFKQUFxSjtRQUM3SixNQUFNLEVBQUUsK0VBQStFO1FBQ3ZGLGFBQWEsRUFBRSw2TUFBNk07UUFDNU4sYUFBYSxFQUFFLHlGQUF5RjtRQUN4RyxXQUFXLEVBQUUsZ0lBQWdJO1FBQzdJLFlBQVksRUFBRSxtV0FBbVc7UUFDalgsU0FBUyxFQUFFLHNLQUFzSztRQUNqTCxVQUFVLEVBQUUsZ0RBQWdEO1FBQzVELFVBQVUsRUFBRSw4Q0FBOEM7UUFDMUQsaUJBQWlCLEVB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QyxDQUFDLE9BQU8sRUFBRSxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ2pGLENBQUM7SUFFWSxRQUFBLGVBQWUsR0FBRyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xOLFFBQUEsa0JBQWtCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUV2TyxTQUFnQixzQkFBc0IsQ0FBQyxFQUE2QixFQUFFLFNBQWtCO1FBQ3BGLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQztZQUFFLE9BQU8sVUFBVSxDQUFDO1FBQzVDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzlELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsMEJBQWtCLENBQUMsQ0FBQyxDQUFDLHVCQUFlLENBQUM7UUFDM0QsT0FBTyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQztJQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgUHJvdmlkZXIsIHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCBsaWtlQXIgPSByZXF1aXJlKFwibGlrZS1hclwiKTtcclxuXHJcbmltcG9ydCB7IGV4cGVjdGVkIH0gZnJvbSBcImNhc3QtZXJyb3JcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgICBDc3NCYXNlbGluZSwgU3ZnSWNvbiwgVGhlbWVQcm92aWRlciwgVHlwb2dyYXBoeSwgWm9vbSwgdXNlU2Nyb2xsVHJpZ2dlciwgY3JlYXRlVGhlbWUsXHJcbiAgICBNZW51LFxyXG4gICAgQnV0dG9uXHJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IHsgU3RvcmUsIEFjdGlvbiB9IGZyb20gXCJyZWR1eFwiO1xyXG5pbXBvcnQgeyBUaXBvVmFyaWFibGVzIH0gZnJvbSBcIi4vdGlwb3NcIjtcclxuXHJcbi8vIGh0dHBzOi8vbWF0ZXJpYWwtdWkuY29tL2NvbXBvbmVudHMvbWF0ZXJpYWwtaWNvbnMvXHJcbmV4cG9ydCBjb25zdCBtYXRlcmlhbElvSWNvbnNTdmdQYXRoID0ge1xyXG4gICAgQWRkOiBcIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6XCIsXHJcbiAgICBBcnJvd0JhY2s6IFwiTTIwIDExSDcuODNsNS41OS01LjU5TDEyIDRsLTggOCA4IDggMS40MS0xLjQxTDcuODMgMTNIMjB2LTJ6XCIsXHJcbiAgICBBc3NpZ25tZW50OiBcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMiAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwiLFxyXG4gICAgQnVzaW5lc3NDZW50ZXI6IFwiTTEwIDE2di0xSDMuMDFMMyAxOWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMnYtNGgtN3Yxem0xMC05aC00LjAxVjVsLTItMmgtNGwtMiAydjJINGMtMS4xIDAtMiAuOS0yIDJ2M2MwIDEuMTEuODkgMiAyIDJoNnYtMmg0djJoNmMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0ybS02IDBoLTRWNWg0elwiLFxyXG4gICAgQ2hlY2s6IFwiTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxelwiLFxyXG4gICAgQ2hlY2tCb3hPdXRsaW5lQmxhbmtPdXRsaW5lZDogXCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIixcclxuICAgIENoZWNrQm94T3V0bGluZWQ6IFwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNMTcuOTkgOWwtMS40MS0xLjQyLTYuNTkgNi41OS0yLjU4LTIuNTctMS40MiAxLjQxIDQgMy45OXpcIixcclxuICAgIENoZXZyb25MZWZ0OiBcIk0xNC43MSA2LjcxYS45OTU5Ljk5NTkgMCAwMC0xLjQxIDBMOC43MSAxMS4zYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxbDQuNTkgNC41OWMuMzkuMzkgMS4wMi4zOSAxLjQxIDAgLjM5LS4zOS4zOS0xLjAyIDAtMS40MUwxMC44MyAxMmwzLjg4LTMuODhjLjM5LS4zOS4zOC0xLjAzIDAtMS40MXpcIixcclxuICAgIENoZXZyb25SaWdodDogXCJNOS4yOSA2LjcxYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxTDEzLjE3IDEybC0zLjg4IDMuODhjLS4zOS4zOS0uMzkgMS4wMiAwIDEuNDEuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFMMTAuNyA2LjdjLS4zOC0uMzgtMS4wMi0uMzgtMS40MS4wMXpcIixcclxuICAgIENsZWFyOiBcIk0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6XCIsXHJcbiAgICBDbG9zZTogXCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiLFxyXG4gICAgQ2xvdWRTeW5jOlwiTTIxLjUgMTQuOThjLS4wMiAwLS4wMyAwLS4wNS4wMUMyMS4yIDEzLjMgMTkuNzYgMTIgMTggMTJjLTEuNCAwLTIuNi44My0zLjE2IDIuMDJDMTMuMjYgMTQuMSAxMiAxNS40IDEyIDE3YzAgMS42NiAxLjM0IDMgMyAzbDYuNS0uMDJjMS4zOCAwIDIuNS0xLjEyIDIuNS0yLjVzLTEuMTItMi41LTIuNS0yLjVNMTAgNC4yNnYyLjA5QzcuNjcgNy4xOCA2IDkuMzkgNiAxMmMwIDEuNzcuNzggMy4zNCAyIDQuNDRWMTRoMnY2SDR2LTJoMi43M0M1LjA2IDE2LjU0IDQgMTQuNCA0IDEyYzAtMy43MyAyLjU1LTYuODUgNi03Ljc0TTIwIDZoLTIuNzNjMS40MyAxLjI2IDIuNDEgMy4wMSAyLjY2IDVoLTIuMDJjLS4yMy0xLjM2LS45My0yLjU1LTEuOTEtMy40NFYxMGgtMlY0aDZ6XCIsXHJcbiAgICBDb2RlOiBcIk05LjQgMTYuNkw0LjggMTJsNC42LTQuNkw4IDZsLTYgNiA2IDYgMS40LTEuNHptNS4yIDBsNC42LTQuNi00LjYtNC42TDE2IDZsNiA2LTYgNi0xLjQtMS40elwiLFxyXG4gICAgQ3JlYXRlOiBcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0YS45OTU5Ljk5NTkgMCAwMC0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwiLFxyXG4gICAgRGVsZXRlOiBcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCIsXHJcbiAgICBEZWxldGVGb3JldmVyOiBcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6bTIuNDYtNy4xMmwxLjQxLTEuNDFMMTIgMTIuNTlsMi4xMi0yLjEyIDEuNDEgMS40MUwxMy40MSAxNGwyLjEyIDIuMTItMS40MSAxLjQxTDEyIDE1LjQxbC0yLjEyIDIuMTItMS40MS0xLjQxTDEwLjU5IDE0bC0yLjEzLTIuMTJ6TTE1LjUgNGwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCIsXHJcbiAgICBEZWxldGVPdXRsaW5lOiBcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTggOWg4djEwSDhWOXptNy41LTVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiLFxyXG4gICAgRGVzY3JpcHRpb246IFwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMiAxNkg4di0yaDh2MnptMC00SDh2LTJoOHYyem0tMy01VjMuNUwxOC41IDlIMTN6XCIsXHJcbiAgICBFbW9qaU9iamVjdHM6IFwiTTEyIDNjLS40NiAwLS45My4wNC0xLjQuMTQtMi43Ni41My00Ljk2IDIuNzYtNS40OCA1LjUyLS40OCAyLjYxLjQ4IDUuMDEgMi4yMiA2LjU2LjQzLjM4LjY2LjkxLjY2IDEuNDdWMTljMCAxLjEuOSAyIDIgMmguMjhjLjM1LjYuOTggMSAxLjcyIDFzMS4zOC0uNCAxLjcyLTFIMTRjMS4xIDAgMi0uOSAyLTJ2LTIuMzFjMC0uNTUuMjItMS4wOS42NC0xLjQ2QzE4LjA5IDEzLjk1IDE5IDEyLjA4IDE5IDEwYzAtMy44Ny0zLjEzLTctNy03em0yIDE2aC00di0xaDR2MXptMC0yaC00di0xaDR2MXptLTEuNS01LjU5VjE0aC0xdi0yLjU5TDkuNjcgOS41OWwuNzEtLjcxTDEyIDEwLjVsMS42Mi0xLjYyLjcxLjcxLTEuODMgMS44MnpcIixcclxuICAgIEV4aXRUb0FwcDogXCJNMTAuMDkgMTUuNTlMMTEuNSAxN2w1LTUtNS01LTEuNDEgMS40MUwxMi42NyAxMUgzdjJoOS42N2wtMi41OCAyLjU5ek0xOSAzSDVjLTEuMTEgMC0yIC45LTIgMnY0aDJWNWgxNHYxNEg1di00SDN2NGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwiLFxyXG4gICAgRXhwYW5kTGVzczogXCJNMTIgOGwtNiA2IDEuNDEgMS40MUwxMiAxMC44M2w0LjU5IDQuNThMMTggMTR6XCIsXHJcbiAgICBFeHBhbmRNb3JlOiBcIk0xNi41OSA4LjU5TDEyIDEzLjE3IDcuNDEgOC41OSA2IDEwbDYgNiA2LTZ6XCIsXHJcbiAgICBGb3JtYXRMaW5lU3BhY2luZzogXCJNNiA3aDIuNUw1IDMuNSAxLjUgN0g0djEwSDEuNUw1IDIwLjUgOC41IDE3SDZWN3ptNC0ydjJoMTJWNUgxMHptMCAxNGgxMnYtMkgxMHYyem0wLTZoMTJ2LTJIMTB2MnpcIixcclxuICAgIEZvcndhcmQ6IFwiTTEyIDhWNGw4IDgtOCA4di00SDRWOHpcIixcclxuICAgIEZvcndhcmRPdXRsaW5lZDogXCJNMTQgOC44M0wxNy4xNyAxMiAxNCAxNS4xN1YxNEg2di00aDhWOC44M00xMiA0djRINHY4aDh2NGw4LTgtOC04elwiLFxyXG4gICAgSGVscE91dGxpbmU6IFwiTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6XCIsXHJcbiAgICBJbmZvOiBcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi02aDJ2NnptMC04aC0yVjdoMnYyelwiLFxyXG4gICAgS2V5Ym9hcmRBcnJvd1VwOiBcIk03LjQxIDE1LjQxTDEyIDEwLjgzbDQuNTkgNC41OEwxOCAxNGwtNi02LTYgNnpcIixcclxuICAgIEtleWJvYXJkQXJyb3dEb3duOiBcIk03LjQxIDguNTlMMTIgMTMuMTdsNC41OS00LjU4TDE4IDEwbC02IDYtNi02IDEuNDEtMS40MXpcIixcclxuICAgIExhYmVsOiBcIk0xNy42MyA1Ljg0QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1TDUgNS4wMUMzLjkgNS4wMSAzIDUuOSAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMiAxMmwtNC4zNy02LjE2elwiLFxyXG4gICAgTG9jYWxBdG06IFwiTTExIDE3aDJ2LTFoMWMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xaC0zdi0xaDRWOGgtMlY3aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDN2MUg5djJoMnYxem05LTEzSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCIsXHJcbiAgICBMb2NhdGlvbjogXCJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ny0zLjEzLTctNy03bTAgOS41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNVwiLFxyXG4gICAgTWVudTogXCJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3pcIixcclxuICAgIE5hdmlnYXRpb246IFwiTTEyIDJMNC41IDIwLjI5bC43MS43MUwxMiAxOGw2Ljc5IDMgLjcxLS43MXpcIixcclxuICAgIE5hdmlnYXRpb25Eb3duOiBcIk0xMiAyMkw0LjUgMy43MWwuNzEgLS43MUwxMiA2bDYuNzkgLTMgLjcxIC43MXpcIixcclxuICAgIFJlZnJlc2g6IFwiTTE3LjY1IDYuMzVDMTYuMiA0LjkgMTQuMjEgNCAxMiA0Yy00LjQyIDAtNy45OSAzLjU4LTcuOTkgOHMzLjU3IDggNy45OSA4YzMuNzMgMCA2Ljg0LTIuNTUgNy43My02aC0yLjA4Yy0uODIgMi4zMy0zLjA0IDQtNS42NSA0LTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTZjMS42NiAwIDMuMTQuNjkgNC4yMiAxLjc4TDEzIDExaDdWNHpcIixcclxuICAgIFJlbW92ZVNob3BwaW5nQ2FydDogXCJNMjIuNzMgMjIuNzNMMi43NyAyLjc3IDIgMmwtLjczLS43M0wwIDIuNTRsNC4zOSA0LjM5IDIuMjEgNC42Ni0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoNy40NmwxLjM4IDEuMzhjLS41LjM2LS44My45NS0uODMgMS42MiAwIDEuMS44OSAyIDEuOTkgMiAuNjcgMCAxLjI2LS4zMyAxLjYyLS44NEwyMS40NiAyNGwxLjI3LTEuMjd6TTcuNDIgMTVjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2gyLjM2bDIgMkg3LjQyem04LjEzLTJjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OWMuMDgtLjE0LjEyLS4zMS4xMi0uNDggMC0uNTUtLjQ1LTEtMS0xSDYuNTRsOS4wMSA5ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yelwiLFxyXG4gICAgU2F2ZTogXCJNMTcgM0g1Yy0xLjExIDAtMiAuOS0yIDJ2MTRjMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2wtNC00em0tNSAxNmMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6bTMtMTBINVY1aDEwdjR6XCIsXHJcbiAgICBTY2hvb2w6IFwiTTUgMTMuMTh2NEwxMiAyMWw3LTMuODJ2LTRMMTIgMTd6TTEyIDMgMSA5bDExIDYgOS00LjkxVjE3aDJWOXpcIixcclxuICAgIFNlYXJjaDogXCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIixcclxuICAgIFNlbmQ6IFwiTTIuMDEgMjFMMjMgMTIgMi4wMSAzIDIgMTBsMTUgMi0xNSAyelwiLFxyXG4gICAgU2V0dGluZ3M6IFwiTTE1Ljk1IDEwLjc4Yy4wMy0uMjUuMDUtLjUxLjA1LS43OHMtLjAyLS41My0uMDYtLjc4bDEuNjktMS4zMmMuMTUtLjEyLjE5LS4zNC4xLS41MWwtMS42LTIuNzdjLS4xLS4xOC0uMzEtLjI0LS40OS0uMThsLTEuOTkuOGMtLjQyLS4zMi0uODYtLjU4LTEuMzUtLjc4TDEyIDIuMzRjLS4wMy0uMi0uMi0uMzQtLjQtLjM0SDguNGMtLjIgMC0uMzYuMTQtLjM5LjM0bC0uMyAyLjEyYy0uNDkuMi0uOTQuNDctMS4zNS43OGwtMS45OS0uOGMtLjE4LS4wNy0uMzkgMC0uNDkuMThsLTEuNiAyLjc3Yy0uMS4xOC0uMDYuMzkuMS41MWwxLjY5IDEuMzJjLS4wNC4yNS0uMDcuNTItLjA3Ljc4cy4wMi41My4wNi43OEwyLjM3IDEyLjFjLS4xNS4xMi0uMTkuMzQtLjEuNTFsMS42IDIuNzdjLjEuMTguMzEuMjQuNDkuMThsMS45OS0uOGMuNDIuMzIuODYuNTggMS4zNS43OGwuMyAyLjEyYy4wNC4yLjIuMzQuNC4zNGgzLjJjLjIgMCAuMzctLjE0LjM5LS4zNGwuMy0yLjEyYy40OS0uMi45NC0uNDcgMS4zNS0uNzhsMS45OS44Yy4xOC4wNy4zOSAwIC40OS0uMThsMS42LTIuNzdjLjEtLjE4LjA2LS4zOS0uMS0uNTFsLTEuNjctMS4zMnpNMTAgMTNjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwiLFxyXG4gICAgU3luY0FsdDogXCJNMjIgOGwtNC00djNIM3YyaDE1djNsNC00ek0yIDE2bDQgNHYtM2gxNXYtMkg2di0zbC00IDR6XCIsXHJcbiAgICBTcG9ydHNFc3BvcnRzOiBcIm0yMS41OCAxNi4wOS0xLjA5LTcuNjZDMjAuMjEgNi40NiAxOC41MiA1IDE2LjUzIDVINy40N0M1LjQ4IDUgMy43OSA2LjQ2IDMuNTEgOC40M2wtMS4wOSA3LjY2QzIuMiAxNy42MyAzLjM5IDE5IDQuOTQgMTljLjY4IDAgMS4zMi0uMjcgMS44LS43NUw5IDE2aDZsMi4yNSAyLjI1Yy40OC40OCAxLjEzLjc1IDEuOC43NSAxLjU2IDAgMi43NS0xLjM3IDIuNTMtMi45MU0xMSAxMUg5djJIOHYtMkg2di0xaDJWOGgxdjJoMnptNC0xYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDFtMiAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDFcIixcclxuICAgIFRyZW5kaW5nRmxhdDogXCJNMjIgMTJsLTQtNHYzSDN2MmgxNXYzelwiLFxyXG4gICAgV2FybmluZzogXCJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0elwiLFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgSUNPTiA9IGxpa2VBcihtYXRlcmlhbElvSWNvbnNTdmdQYXRoKS5tYXAoc3ZnVGV4dCA9PiAoKSA9PlxyXG4gICAgPFN2Z0ljb24+PHBhdGggZD17c3ZnVGV4dH0gLz48L1N2Z0ljb24+XHJcbikucGxhaW4oKTtcclxuXHJcbmV4cG9ydCB0eXBlIFN0eWxlcyA9IFJlYWN0LkNTU1Byb3BlcnRpZXM7XHJcblxyXG5leHBvcnQgdHlwZSBPblVwZGF0ZTxUPiA9IChkYXRhOiBUKSA9PiB2b2lkXHJcblxyXG5leHBvcnQgdHlwZSBJbnB1dFR5cGVzID0gJ2RhdGUnIHwgJ251bWJlcicgfCAndGVsJyB8ICd0ZXh0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGFwdGFyVGlwb1ZhckNhc2lsbGVybyhjYXNpbGxlcm9EYXRhVHlwZTogVGlwb1ZhcmlhYmxlcyB8ICdvcGNpb25lcycgfCAnc2lfbm8nKTogSW5wdXRUeXBlcyB7XHJcbiAgICBjb25zdCBhZGFwdGVyOiB7IFtrZXkgaW4gVGlwb1ZhcmlhYmxlcyB8ICdvcGNpb25lcycgfCAnc2lfbm8nXTogSW5wdXRUeXBlcyB9ID0ge1xyXG4gICAgICAgICdvcGNpb25lcyc6ICdudW1iZXInLFxyXG4gICAgICAgICdzaV9ubyc6ICdudW1iZXInLFxyXG4gICAgICAgICdudW1lcm8nOiAnbnVtYmVyJyxcclxuICAgICAgICAnaG9yYSc6ICd0ZWwnLFxyXG4gICAgICAgICdob3Jhcyc6ICdudW1iZXInLFxyXG4gICAgICAgICd0ZXh0byc6ICd0ZXh0JyxcclxuICAgICAgICAnZmVjaGEnOiAndGV4dCdcclxuICAgIH1cclxuICAgIHJldHVybiBhZGFwdGVyW2Nhc2lsbGVyb0RhdGFUeXBlXVxyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgc2Nyb2xsVG9Ub3AgPSAoKSA9PiB7XHJcbiAgICB3aW5kb3cuc2Nyb2xsKHsgYmVoYXZpb3I6ICdzbW9vdGgnLCB0b3A6IDAsIGxlZnQ6IDAgfSlcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzY3JvbGxUb0JvdHRvbSA9ICgpID0+IHtcclxuICAgIHdpbmRvdy5zY3JvbGwoeyBiZWhhdmlvcjogJ3Ntb290aCcsIHRvcDogZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgLSB3aW5kb3cuaW5uZXJIZWlnaHQsIGxlZnQ6IDAgfSlcclxufTtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gU2Nyb2xsVG9wKHByb3BzOiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdEVsZW1lbnQgfSkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcHJvcHM7XHJcbiAgICAvL2NvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXNTY3JvbGxUb3AoKTtcclxuICAgIC8vIE5vdGUgdGhhdCB5b3Ugbm9ybWFsbHkgd29uJ3QgbmVlZCB0byBzZXQgdGhlIHdpbmRvdyByZWYgYXMgdXNlU2Nyb2xsVHJpZ2dlclxyXG4gICAgLy8gd2lsbCBkZWZhdWx0IHRvIHdpbmRvdy5cclxuICAgIC8vIFRoaXMgaXMgb25seSBiZWluZyBzZXQgaGVyZSBiZWNhdXNlIHRoZSBkZW1vIGlzIGluIGFuIGlmcmFtZS5cclxuICAgIGNvbnN0IHRyaWdnZXIgPSB1c2VTY3JvbGxUcmlnZ2VyKHtcclxuICAgICAgICBkaXNhYmxlSHlzdGVyZXNpczogdHJ1ZSxcclxuICAgICAgICB0aHJlc2hvbGQ6IDEwMCxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8Wm9vbSBpbj17dHJpZ2dlcn0+XHJcbiAgICAgICAgICAgIDxkaXYgb25DbGljaz17c2Nyb2xsVG9Ub3B9IHJvbGU9XCJwcmVzZW50YXRpb25cIiAvKmNsYXNzTmFtZT17Y2xhc3Nlcy5yb290fSovPlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L1pvb20+XHJcbiAgICApO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGb2N1c09wdHMgPSB7XHJcbiAgICBtb3ZlVG9FbGVtZW50OiBib29sZWFuXHJcbiAgICBtb3ZlQmVoYXZpb3I/OiAnYXV0bycgfCAnc21vb3RoJ1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNUb0lkKGlkOiBzdHJpbmcsIG9wdHM6IEZvY3VzT3B0cywgY2I/OiAoZTogSFRNTEVsZW1lbnQpID0+IHZvaWQpIHtcclxuICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgdmFyIHBhZHJlID0gZWxlbWVudDtcclxuICAgIHdoaWxlIChwYWRyZSAmJiBwYWRyZS5jbGFzc05hbWUgIT0gJ3ByZWd1bnRhJyAmJiBwYWRyZSAhPSBkb2N1bWVudC5ib2R5KSBwYWRyZSA9IHBhZHJlLnBhcmVudEVsZW1lbnQ7XHJcbiAgICBpZiAocGFkcmUgJiYgcGFkcmUuY2xhc3NOYW1lID09ICdwcmVndW50YScpIGVsZW1lbnQgPSBwYWRyZTtcclxuICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKGNiKSB7XHJcbiAgICAgICAgICAgIGNiKGVsZW1lbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgaWYgKG9wdHMubW92ZVRvRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCh7IGJlaGF2aW9yOiBvcHRzLm1vdmVCZWhhdmlvciB8fCAnYXV0bycsIHRvcDogd2luZG93LnNjcm9sbFkgLSAxMDAsIGxlZnQ6IDAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSURpc3BhdGNoZXJzID0geyBSRVNFVF9PUENJT05FUzogRnVuY3Rpb24gfTtcclxuXHJcbmZ1bmN0aW9uIGdldEJhZGdlU3R5bGUoZXN0YWRvOiBzdHJpbmcpOiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHtcclxuICAgIGNvbnN0IGJhc2U6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgcGFkZGluZzogJzJweCA2cHgnLFxyXG4gICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXHJcbiAgICAgICAgZm9udFNpemU6ICcxMXB4JyxcclxuICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsXHJcbiAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXHJcbiAgICAgICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZSdcclxuICAgIH07XHJcbiAgICBpZiAoZXN0YWRvID09PSAnb2snKSByZXR1cm4geyAuLi5iYXNlLCBiYWNrZ3JvdW5kQ29sb3I6ICcjYzZmNmQ1JywgY29sb3I6ICcjMjI1NDNkJyB9O1xyXG4gICAgaWYgKGVzdGFkbyA9PT0gJ2luY29tcGxldG8nIHx8IGVzdGFkbyA9PT0gJ2NvbiBwcm9ibGVtYXMnKSByZXR1cm4geyAuLi5iYXNlLCBiYWNrZ3JvdW5kQ29sb3I6ICcjZmVlYmM4JywgY29sb3I6ICcjNzQ0MjEwJyB9O1xyXG4gICAgcmV0dXJuIHsgLi4uYmFzZSwgYmFja2dyb3VuZENvbG9yOiAnI2VkZjJmNycsIGNvbG9yOiAnIzRhNTU2OCcgfTtcclxufVxyXG5pbnRlcmZhY2UgUmVuZGVyaXphZG9ySlNPTlByb3BzIHtcclxuICAgIGRhdG9zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgbml2ZWw/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBSZW5kZXJpemFkb3JKU09OOiBSZWFjdC5GQzxSZW5kZXJpemFkb3JKU09OUHJvcHM+ID0gKHsgZGF0b3MsIG5pdmVsID0gMCB9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgY2xhdmVzRmlsdHJhZGFzID0gT2JqZWN0LmtleXMoZGF0b3MpLmZpbHRlcihcclxuICAgICAgICBjbGF2ZSA9PiAhY2xhdmUuc3RhcnRzV2l0aCgnJCcpICYmIGNsYXZlICE9PSAndGltZXN0YW1wRXN0cnVjdHVyYSdcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmdMZWZ0OiBuaXZlbCA+IDAgPyAnMTZweCcgOiAnMHB4JyB9fT5cclxuICAgICAgICAgICAge2NsYXZlc0ZpbHRyYWRhcy5tYXAoY2xhdmUgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsb3IgPSBkYXRvc1tjbGF2ZV07XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gREVURUNDScOTTiBERSBTVUItVU5JREFERVMgREUgQU7DgUxJU0lTIChob2dhcmVzLCBwZXJzb25hcywgZXRjLilcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbG9yKSAmJiB2YWxvci5sZW5ndGggPiAwICYmIHR5cGVvZiB2YWxvclswXSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NsYXZlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICcxMnB4IDAnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckxlZnQ6ICc0cHggc29saWQgIzMxODJjZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2Y3ZmFmYycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMCA2cHggNnB4IDAnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICc4cHggMTJweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBUw610dWxvIGRlIGxhIFVBICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250V2VpZ2h0OiAnYm9sZCcsIGNvbG9yOiAnIzJiNmNiMCcsIGZvbnRTaXplOiAnMTNweCcsIHRleHRUcmFuc2Zvcm06ICd1cHBlcmNhc2UnLCBtYXJnaW5Cb3R0b206ICc2cHgnIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWRhZCBkZSBBbsOhbGlzaXM6IHtjbGF2ZX0gKHt2YWxvci5sZW5ndGh9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbG9yLm1hcCgocmVnaXN0cm8sIGZpbGFJbmRleCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtmaWxhSW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IGZpbGFJbmRleCA8IHZhbG9yLmxlbmd0aCAtIDEgPyAnMTBweCcgOiAnMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiBmaWxhSW5kZXggPiAwID8gJzZweCcgOiAnMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJUb3A6IGZpbGFJbmRleCA+IDAgPyAnMXB4IGRhc2hlZCAjZTJlOGYwJyA6ICdub25lJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlbmRlcml6YWRvckpTT04gZGF0b3M9e3JlZ2lzdHJvfSBuaXZlbD17bml2ZWwgKyAxfSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gU2kgcG9yIGxhcyBkdWRhcyBlcyB1biBvYmpldG8gZGlyZWN0byBxdWUgbm8gZXMgYXJyYXksIGxvIHNhbHRlYW1vc1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWxvciA9PT0gJ29iamVjdCcgJiYgdmFsb3IgIT09IG51bGwpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFZBUklBQkxFUyBFU1TDgU5EQVIgKENsYXZlIHkgdmFsb3IganVudG9zKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y2xhdmV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsIC8vIFBvciBzaSBlbCB2YWxvciBlcyBtdXkgbGFyZ28sIHF1ZSBiYWplIGxpbXBpb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzRweCAwJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMTNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICcxLjQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7LyogQ2xhdmU6IGFob3JhIHNpbiBhbmNobyBmaWpvLCBzZSBhZGFwdGEgYWwgdGV4dG8gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgY29sb3I6ICcjNGE1NTY4JywgZm9udFdlaWdodDogNTAwLCBtYXJnaW5SaWdodDogJzZweCcgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2xhdmV9OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBWYWxvcjogcGVnYWRvIGlubWVkaWF0YW1lbnRlIGEgbGEgY2xhdmUgKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgY29sb3I6ICcjMWEyMDJjJywgZm9udFdlaWdodDogNjAwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NsYXZlLnN0YXJ0c1dpdGgoJ3Jlc3VtZW5Fc3RhZG8nKSA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17Z2V0QmFkZ2VTdHlsZShTdHJpbmcodmFsb3IpKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtTdHJpbmcodmFsb3IpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKHZhbG9yID8/ICcnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmVzZXRlckZvcm0ocHJvcHM6IHsgb25UcnlBZ2FpbjogKCkgPT4gdm9pZCwgZGlzcGF0Y2hlcnM6IElEaXNwYXRjaGVycywgbWVuc2FqZTogc3RyaW5nIH0pIHtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIHJldHVybiA8PlxyXG4gICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCJcclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2gocHJvcHMuZGlzcGF0Y2hlcnMuUkVTRVRfT1BDSU9ORVMoe30pKTtcclxuICAgICAgICAgICAgICAgIHByb3BzLm9uVHJ5QWdhaW4oKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICA+e3Byb3BzLm1lbnNhamV9PC9CdXR0b24+XHJcbiAgICA8Lz47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZW5kZXJBbmRDYXB0dXJlRXJyb3IgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XHJcbiAgICB7IGRpc3BhdGNoZXJzOiBJRGlzcGF0Y2hlcnMsIG1lbnNhamVSZXRvcm5vOiBzdHJpbmcgfSxcclxuICAgIHsgaGFzRXJyb3I6IGJvb2xlYW4sIGVycm9yOiBFcnJvciB8IHt9LCBpbmZvPzogYW55IH1cclxuPiB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wczogeyBkaXNwYXRjaGVyczogSURpc3BhdGNoZXJzLCBtZW5zYWplUmV0b3Jubzogc3RyaW5nIH0pIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHsgaGFzRXJyb3I6IGZhbHNlLCBlcnJvcjoge30gfTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGNvbXBvbmVudERpZENhdGNoKGVycm9yOiBFcnJvciwgaW5mbzogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGhhc0Vycm9yOiB0cnVlLCBlcnJvciwgaW5mbyB9KTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIHJlbmRlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5oYXNFcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gPD5cclxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5Pkh1Ym8gdW4gcHJvYmxlbWEgZW4gbGEgcHJvZ3JhbWFjacOzbiBkZSBsYSBwYW50YWxsYS48L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8UmVzZXRlckZvcm0gZGlzcGF0Y2hlcnM9e3RoaXMucHJvcHMuZGlzcGF0Y2hlcnN9IG1lbnNhamU9e3RoaXMucHJvcHMubWVuc2FqZVJldG9ybm99IG9uVHJ5QWdhaW49eygpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGhhc0Vycm9yOiBmYWxzZSwgZXJyb3I6IHt9IH0pXHJcbiAgICAgICAgICAgICAgICB9IC8+XHJcbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZ290b1NpbmNyb25pemFyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5pciBhIGxhIHBhbnRhbGxhIGRlIHNpbmNyb25pemFjacOzbjwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+RXJyb3IgZGV0ZWN0YWRvOjwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PntleHBlY3RlZCh0aGlzLnN0YXRlLmVycm9yKS5tZXNzYWdlfTwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PntKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlLmluZm8pfTwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgPC8+O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XHJcbiAgICBjb21wb25lbnRzOiB7XHJcbiAgICAgICAgTXVpQ3NzQmFzZWxpbmU6IHtcclxuICAgICAgICAgICAgc3R5bGVPdmVycmlkZXM6IHtcclxuICAgICAgICAgICAgICAgIGh0bWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBXZWJraXRGb250U21vb3RoaW5nOiAnYXV0bycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICB9LFxyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB1c2VPbmxpbmVTdGF0dXMoKSB7XHJcbiAgICBjb25zdCBbb25saW5lLCBzZXRPbmxpbmVdID0gdXNlU3RhdGUod2luZG93Lm5hdmlnYXRvci5vbkxpbmUpO1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHNldE9ubGluZSh3aW5kb3cubmF2aWdhdG9yLm9uTGluZSk7XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsIGhhbmRsZXIpO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgaGFuZGxlcik7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ29ubGluZScsIGhhbmRsZXIpO1xyXG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignb2ZmbGluZScsIGhhbmRsZXIpO1xyXG4gICAgICAgIH07XHJcbiAgICB9LCBbXSk7XHJcblxyXG4gICAgcmV0dXJuIG9ubGluZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlbmRlclByaW5jaXBhbDxULCBUMiBleHRlbmRzIEFjdGlvbj4ocHJvcHM6IHsgc3RvcmU6IFN0b3JlPFQsIFQyPiwgZGlzcGF0Y2hlcnM6IElEaXNwYXRjaGVycywgbWVuc2FqZVJldG9ybm86IHN0cmluZywgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XHJcbiAgICByZXR1cm4gPFJlYWN0LlN0cmljdE1vZGU+XHJcbiAgICAgICAgPFByb3ZpZGVyIHN0b3JlPXtwcm9wcy5zdG9yZX0+XHJcbiAgICAgICAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XHJcbiAgICAgICAgICAgICAgICA8UmVuZGVyQW5kQ2FwdHVyZUVycm9yIGRpc3BhdGNoZXJzPXtwcm9wcy5kaXNwYXRjaGVyc30gbWVuc2FqZVJldG9ybm89e3Byb3BzLm1lbnNhamVSZXRvcm5vfT5cclxuICAgICAgICAgICAgICAgICAgICA8Q3NzQmFzZWxpbmUgLz5cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgICA8L1JlbmRlckFuZENhcHR1cmVFcnJvcj5cclxuICAgICAgICAgICAgPC9UaGVtZVByb3ZpZGVyPlxyXG4gICAgICAgIDwvUHJvdmlkZXI+XHJcbiAgICA8L1JlYWN0LlN0cmljdE1vZGU+XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBub21icmVNZXNlcyA9IFsnZW5lcm8nLCAnZmVicmVybycsICdtYXJ6bycsICdhYnJpbCcsICdtYXlvJywgJ2p1bmlvJywgJ2p1bGlvJywgJ2Fnb3N0bycsICdzZXB0aWVtYnJlJywgJ29jdHVicmUnLCAnbm92aWVtYnJlJywgJ2RpY2llbWJyZSddO1xyXG5leHBvcnQgY29uc3Qgbm9tYnJlRGlhcyA9IFsnZG9taW5nbycsICdsdW5lcycsICdtYXJ0ZXMnLCAnbWnDqXJjb2xlcycsICdqdWV2ZXMnLCAndmllcm5lcycsICdzw6FiYWRvJ107XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXJGZWNoYURlc2RlVGV4dG9JU08odGV4dG86IHN0cmluZyk6IERhdGUge1xyXG4gICAgdmFyIHBhcnRlcyA9IHRleHRvLnNwbGl0KC9bLy1dL2cpO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKE51bWJlcihwYXJ0ZXNbMF0pLCBOdW1iZXIocGFydGVzWzFdKSAtIDEsIE51bWJlcihwYXJ0ZXNbMl0pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lc1JlZmVyZW5jaWEoZmVjaGE6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICB2YXIgZCA9IGNyZWFyRmVjaGFEZXNkZVRleHRvSVNPKGZlY2hhKTtcclxuICAgIHJldHVybiBub21icmVNZXNlc1tkLmdldE1vbnRoKCldO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZmVjaGFSZWZlcmVuY2lhKGZlY2hhOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgdmFyIGQgPSBjcmVhckZlY2hhRGVzZGVUZXh0b0lTTyhmZWNoYSk7XHJcbiAgICByZXR1cm4gYCR7bm9tYnJlRGlhc1tkLmdldERheSgpXX0gJHtkLmdldERhdGUoKX0gZGUgJHttZXNSZWZlcmVuY2lhKGZlY2hhKX1gO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdGV4dG9QYXJlbnRlc2NvID0gWydKZWZlL2EnLCAnQ8Ozbnl1Z2UvcGFyZWphJywgJ0hpam8vYScsICdIaWphc3Ryby9hJywgJ1llcm5vIG8gbnVlcmEnLCAnTmlldG8vYScsICdQYWRyZS9tYWRyZS9zdWVncm8vYScsICdIZXJtYW5vL2EnLCAnQ3XDsWFkby9hJywgJ1NvYnJpbm8vYScsICdBYnVlbG8vYScsICdPdHJvIGZhbWlsaWFyJywgJ090cm8gbm8gZmFtaWxpYXInXTtcclxuZXhwb3J0IGNvbnN0IHRleHRvUGFyZW50ZXNjb1ZjbSA9IFsnUmVzcG9uZGVudGUnLCAnQ8Ozbnl1Z2UvcGFyZWphJywgJ0hpam8vYScsICdIaWphc3Ryby9hJywgJ1llcm5vIG8gbnVlcmEnLCAnTmlldG8vYScsICdQYWRyZS9tYWRyZS9zdWVncm8vYScsICdIZXJtYW5vL2EnLCAnQ3XDsWFkby9hJywgJ1NvYnJpbm8vYScsICdBYnVlbG8vYScsICdPdHJvIGZhbWlsaWFyJywgJ090cm8gbm8gZmFtaWxpYXInXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvYnRlbmVyVGV4dG9QYXJlbnRlc2NvKHA0OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBvcGVyYXRpdm8/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHA0ID09IG51bGwgfHwgcDQgPCAxKSByZXR1cm4gJy4uLi4uLi4uJztcclxuICAgIGNvbnN0IGVzVmNtID0gb3BlcmF0aXZvID8gb3BlcmF0aXZvLnN0YXJ0c1dpdGgoJ3ZjbScpIDogZmFsc2U7XHJcbiAgICBjb25zdCBsaXN0YSA9IGVzVmNtID8gdGV4dG9QYXJlbnRlc2NvVmNtIDogdGV4dG9QYXJlbnRlc2NvO1xyXG4gICAgcmV0dXJuIGxpc3RhW3A0IC0gMV0gfHwgJy4uLi4uLi4uJztcclxufVxyXG5cclxuXHJcblxyXG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { useState, useEffect } from "react";
3
3
  import { Provider, useDispatch } from "react-redux";
4
- import * as likeAr from "like-ar";
4
+ import likeAr = require("like-ar");
5
5
 
6
6
  import { expected } from "cast-error";
7
7
 
@@ -40,6 +40,7 @@ export const materialIoIconsSvgPath = {
40
40
  FormatLineSpacing: "M6 7h2.5L5 3.5 1.5 7H4v10H1.5L5 20.5 8.5 17H6V7zm4-2v2h12V5H10zm0 14h12v-2H10v2zm0-6h12v-2H10v2z",
41
41
  Forward: "M12 8V4l8 8-8 8v-4H4V8z",
42
42
  ForwardOutlined: "M14 8.83L17.17 12 14 15.17V14H6v-4h8V8.83M12 4v4H4v8h8v4l8-8-8-8z",
43
+ HelpOutline: "M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z",
43
44
  Info: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z",
44
45
  KeyboardArrowUp: "M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z",
45
46
  KeyboardArrowDown: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z",
@@ -2,6 +2,7 @@ import { createFormRenderer, FormRenderer } from "./render-config";
2
2
  export declare const GLOVAR_DATOSBYPASS = "datosbypass";
3
3
  export declare const GLOVAR_MODOBYPASS = "modobypass";
4
4
  export declare const GLOVAR_ESTRUCTURA = "estructura";
5
+ export declare const GLOVAR_AYUDA = "ayuda";
5
6
  export declare const SETUP = "setup";
6
7
  export declare const LAST_LOGGED_SETUP = "last_logged_setup";
7
8
  /**
@@ -9,7 +9,7 @@
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.LAST_LOGGED_SETUP = exports.SETUP = exports.GLOVAR_ESTRUCTURA = exports.GLOVAR_MODOBYPASS = exports.GLOVAR_DATOSBYPASS = void 0;
12
+ exports.LAST_LOGGED_SETUP = exports.SETUP = exports.GLOVAR_AYUDA = exports.GLOVAR_ESTRUCTURA = exports.GLOVAR_MODOBYPASS = exports.GLOVAR_DATOSBYPASS = void 0;
13
13
  exports.createLocalStorageFormRenderer = createLocalStorageFormRenderer;
14
14
  exports.initFormRenderer = initFormRenderer;
15
15
  const render_config_1 = require("./render-config");
@@ -20,6 +20,7 @@
20
20
  exports.GLOVAR_DATOSBYPASS = 'datosbypass';
21
21
  exports.GLOVAR_MODOBYPASS = 'modobypass';
22
22
  exports.GLOVAR_ESTRUCTURA = 'estructura';
23
+ exports.GLOVAR_AYUDA = 'ayuda';
23
24
  exports.SETUP = 'setup';
24
25
  exports.LAST_LOGGED_SETUP = 'last_logged_setup';
25
26
  // Configuración de almacenamiento local (localStorage/sessionStorage).
@@ -80,6 +81,12 @@
80
81
  myOwn.setLocalVar(exports.GLOVAR_ESTRUCTURA, estructura);
81
82
  return Promise.resolve();
82
83
  },
84
+ leerAyuda() {
85
+ return myOwn.getLocalVar(exports.GLOVAR_AYUDA);
86
+ },
87
+ persistirAyuda(ayuda) {
88
+ myOwn.setLocalVar(exports.GLOVAR_AYUDA, ayuda);
89
+ },
83
90
  leerDatos() {
84
91
  var modoAlmacenamiento = myOwn.getLocalVar(exports.GLOVAR_MODOBYPASS);
85
92
  if (modoAlmacenamiento == 'local') {
@@ -124,4 +131,4 @@
124
131
  return createLocalStorageFormRenderer({});
125
132
  }
126
133
  });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWluaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvcmVuZGVyLWluaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBNEhBLHdFQUlDO0lBTUQsNENBRUM7SUF2SUQsbURBQW1FO0lBSW5FLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUFDO0lBQzdDLE1BQU0sdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztJQUM5QyxNQUFNLHdCQUF3QixHQUFHLFNBQVMsQ0FBQztJQUM5QixRQUFBLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztJQUNuQyxRQUFBLGlCQUFpQixHQUFHLFlBQVksQ0FBQztJQUNqQyxRQUFBLGlCQUFpQixHQUFHLFlBQVksQ0FBQztJQUNqQyxRQUFBLEtBQUssR0FBRyxPQUFPLENBQUM7SUFDaEIsUUFBQSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztJQUVyRCx1RUFBdUU7SUFDdkUsd0VBQXdFO0lBQ3hFLE1BQU0sa0JBQWtCLEdBQUc7UUFDdkIsWUFBWTtZQUNSLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxZQUFZLENBQUMsS0FBVTtZQUNuQixLQUFLLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxvQkFBb0I7WUFDaEIsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELG9CQUFvQixDQUFDLEtBQWE7WUFDOUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsa0JBQWtCO1lBQ2QsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEQs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LENBQUM7aUJBQU0sQ0FBQztnQkFDSixLQUFLLENBQUMsYUFBYSxDQUFDLDBCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25ELENBQUM7WUFDRCxLQUFLLENBQUMsV0FBVyxDQUFDLHlCQUFpQixFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDekQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELFFBQVE7WUFDSixVQUFVLENBQUMsR0FBRSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsWUFBWSxDQUFDLENBQUM7Z0JBQ25GLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUE7WUFDTixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixDQUFDO0tBRUosQ0FBQztJQUVGOzs7O09BSUc7SUFDSCxTQUFnQiw4QkFBOEIsQ0FDMUMsYUFBdUQ7UUFFdkQsT0FBTyxJQUFBLGtDQUFrQixrQ0FBTSxrQkFBa0IsR0FBSyxhQUFhLEVBQUcsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBZ0IsZ0JBQWdCO1FBQzVCLE9BQU8sOEJBQThCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdvdG9Db25zaXN0aXIgfSBmcm9tIFwiLi9yZWR1eC1mb3JtdWxhcmlvXCI7XG5pbXBvcnQgeyBjcmVhdGVGb3JtUmVuZGVyZXIsIEZvcm1SZW5kZXJlciB9IGZyb20gXCIuL3JlbmRlci1jb25maWdcIjtcbmltcG9ydCB7IERhdG9zQnlQYXNzUGVyc2lzdGlibGVzLCBNb2RvRE0sIEVzdHJ1Y3R1cmEsIE1vZG9BbG1hY2VuYW1pZW50byB9IGZyb20gXCIuL3RpcG9zXCI7XG5cblxuY29uc3QgTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FID0gJ2hkci1zdGF0ZSc7XG5jb25zdCBMQVNUX0FVVE9fVkFMVUVfUEtfUkFJWiA9ICdwcm94aW1vX3ZhbG9yX3BrX3JhaXonO1xuY29uc3QgQVBQX0NBQ0hFX1ZFUlNJT04gPSAnYXBwLWNhY2hlLXZlcnNpb24nO1xuY29uc3QgTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZID0gJ21vZG9fZG0nO1xuZXhwb3J0IGNvbnN0IEdMT1ZBUl9EQVRPU0JZUEFTUyA9ICdkYXRvc2J5cGFzcyc7XG5leHBvcnQgY29uc3QgR0xPVkFSX01PRE9CWVBBU1MgPSAnbW9kb2J5cGFzcyc7XG5leHBvcnQgY29uc3QgR0xPVkFSX0VTVFJVQ1RVUkEgPSAnZXN0cnVjdHVyYSc7XG5leHBvcnQgY29uc3QgU0VUVVAgPSAnc2V0dXAnO1xuZXhwb3J0IGNvbnN0IExBU1RfTE9HR0VEX1NFVFVQID0gJ2xhc3RfbG9nZ2VkX3NldHVwJztcblxuLy8gQ29uZmlndXJhY2nDs24gZGUgYWxtYWNlbmFtaWVudG8gbG9jYWwgKGxvY2FsU3RvcmFnZS9zZXNzaW9uU3RvcmFnZSkuXG4vLyBFcyBsYSBjb25maWd1cmFjacOzbiByZWNvbWVuZGFkYSBwb3IgZGVmZWN0byBwYXJhIGVsIHJlbmRlcmVyIG9mZmxpbmUuXG5jb25zdCBsb2NhbFN0b3JhZ2VDb25maWcgPSB7XG4gICAgZ2V0Q2Fzb1N0YXRlKCkge1xuICAgICAgICByZXR1cm4gbXlPd24uZ2V0TG9jYWxWYXIoTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FKTtcbiAgICB9LFxuXG4gICAgc2V0Q2Fzb1N0YXRlKHN0YXRlOiBhbnkpIHtcbiAgICAgICAgbXlPd24uc2V0TG9jYWxWYXIoTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FLCBzdGF0ZSk7XG4gICAgfSxcblxuICAgIGdldFVsdGltb1ZhbG9yUGtSYWl6KCkge1xuICAgICAgICByZXR1cm4gbXlPd24uZ2V0TG9jYWxWYXIoTEFTVF9BVVRPX1ZBTFVFX1BLX1JBSVopO1xuICAgIH0sXG5cbiAgICBzZXRVbHRpbW9WYWxvclBrUmFpeih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIG15T3duLnNldExvY2FsVmFyKExBU1RfQVVUT19WQUxVRV9QS19SQUlaLCB2YWx1ZSk7XG4gICAgfSxcblxuICAgIGdldEFwcENhY2hlVmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIG15T3duLmdldExvY2FsVmFyKEFQUF9DQUNIRV9WRVJTSU9OKTtcbiAgICB9LFxuXG4gICAgc2V0QXBwQ2FjaGVWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgICAgICBteU93bi5zZXRMb2NhbFZhcihBUFBfQ0FDSEVfVkVSU0lPTiwgdmVyc2lvbik7XG4gICAgfSxcbiAgICBcbiAgICBnZXRNb2RvRE0oKSB7XG4gICAgICAgIHJldHVybiBteU93bi5nZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVkpO1xuICAgIH0sXG4gICAgXG4gICAgc2V0TW9kb0RNKG1vZG86IE1vZG9ETSkge1xuICAgICAgICBteU93bi5zZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVksIG1vZG8pO1xuICAgIH0sXG5cbiAgICBnZXRJZHBlckxvZ3VlYWRvKCkge1xuICAgICAgICBjb25zdCBzZXR1cCA9IG15T3duLmdldExvY2FsVmFyKFNFVFVQKSB8fCB7fTtcbiAgICAgICAgY29uc3QgYmFja3VwID0gbXlPd24uZ2V0TG9jYWxWYXIoTEFTVF9MT0dHRURfU0VUVVApIHx8IHt9O1xuXG4gICAgICAgIGlmIChzZXR1cC5pZHBlcikge1xuICAgICAgICAgICAgLy8gU2kgZWwgc2V0dXAgZXN0w6Egc2Fubywgbm9zIGFzZWd1cmFtb3MgZGUgcXVlIGVsIGJhY2t1cCBlc3TDqSBhY3R1YWxpemFkb1xuICAgICAgICAgICAgaWYgKGJhY2t1cC5pZHBlciAhPT0gc2V0dXAuaWRwZXIpIHtcbiAgICAgICAgICAgICAgICBteU93bi5zZXRMb2NhbFZhcihMQVNUX0xPR0dFRF9TRVRVUCwgeyAuLi5iYWNrdXAsIGlkcGVyOiBzZXR1cC5pZHBlciB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZXR1cC5pZHBlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIHBlcmRpbW9zIGxhIGNvb2tpZSB5IGVsIHNldHVwIHZpbm8gdmFjw61vLCB1c2Ftb3MgZWwgYmFja3VwXG4gICAgICAgIHJldHVybiBiYWNrdXAuaWRwZXIgfHwgbnVsbDtcbiAgICB9LFxuXG4gICAgZ2V0VXNlcm5hbWVMb2d1ZWFkbygpIHtcbiAgICAgICAgY29uc3Qgc2V0dXAgPSBteU93bi5nZXRMb2NhbFZhcihTRVRVUCkgfHwge307XG4gICAgICAgIGNvbnN0IGJhY2t1cCA9IG15T3duLmdldExvY2FsVmFyKExBU1RfTE9HR0VEX1NFVFVQKSB8fCB7fTtcblxuICAgICAgICBpZiAoc2V0dXAudXNlcm5hbWUpIHtcbiAgICAgICAgICAgIGlmIChiYWNrdXAudXNlcm5hbWUgIT09IHNldHVwLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgbXlPd24uc2V0TG9jYWxWYXIoTEFTVF9MT0dHRURfU0VUVVAsIHsgLi4uYmFja3VwLCB1c2VybmFtZTogc2V0dXAudXNlcm5hbWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2V0dXAudXNlcm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYmFja3VwLnVzZXJuYW1lIHx8IG51bGw7XG4gICAgfSxcblxuICAgIGxlZXJFc3RydWN0dXJhKCk6IFByb21pc2U8RXN0cnVjdHVyYSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShteU93bi5nZXRMb2NhbFZhcihHTE9WQVJfRVNUUlVDVFVSQSkpO1xuICAgIH0sXG4gICAgXG4gICAgcGVyc2lzdGlyRXN0cnVjdHVyYShlc3RydWN0dXJhOiBFc3RydWN0dXJhKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIG15T3duLnNldExvY2FsVmFyKEdMT1ZBUl9FU1RSVUNUVVJBLCBlc3RydWN0dXJhKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0sXG5cbiAgICBsZWVyRGF0b3MoKTogUHJvbWlzZTxEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyB8IG51bGw+IHtcbiAgICAgICAgdmFyIG1vZG9BbG1hY2VuYW1pZW50byA9IG15T3duLmdldExvY2FsVmFyKEdMT1ZBUl9NT0RPQllQQVNTKSBhcyBNb2RvQWxtYWNlbmFtaWVudG87XG4gICAgICAgIFxuICAgICAgICBpZiAobW9kb0FsbWFjZW5hbWllbnRvID09ICdsb2NhbCcpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobXlPd24uZ2V0TG9jYWxWYXIoR0xPVkFSX0RBVE9TQllQQVNTKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG15T3duLmdldFNlc3Npb25WYXIoR0xPVkFSX0RBVE9TQllQQVNTKSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgcGVyc2lzdGlyRGF0b3MoZGF0b3M6IERhdG9zQnlQYXNzUGVyc2lzdGlibGVzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHZhciB7IG1vZG9BbG1hY2VuYW1pZW50byB9ID0gZGF0b3M7XG4gICAgICAgIGlmIChtb2RvQWxtYWNlbmFtaWVudG8gPT0gJ2xvY2FsJykge1xuICAgICAgICAgICAgbXlPd24uc2V0TG9jYWxWYXIoR0xPVkFSX0RBVE9TQllQQVNTLCBkYXRvcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBteU93bi5zZXRTZXNzaW9uVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUywgZGF0b3MpO1xuICAgICAgICB9XG4gICAgICAgIG15T3duLnNldExvY2FsVmFyKEdMT1ZBUl9NT0RPQllQQVNTLCBtb2RvQWxtYWNlbmFtaWVudG8pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSxcbiAgICBvbkxvZ291dCgpOiBQcm9taXNlPHZvaWQ+e1xuICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luICsgbG9jYXRpb24ucGF0aG5hbWV9Ly4uL2xvZ291dGApO1xuICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgIH0sMTAwKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICAgIFxufTtcblxuLyoqXG4gKiBDcmVhIHVuIEZvcm1SZW5kZXJlciBjb24gYWxtYWNlbmFtaWVudG8gZW4gbG9jYWxTdG9yYWdlL3Nlc3Npb25TdG9yYWdlLlxuICogRXMgbGEgY29uZmlndXJhY2nDs24gcmVjb21lbmRhZGEgcG9yIGRlZmVjdG8gcGFyYSBlbCBtb2RvIG9mZmxpbmUuXG4gKiBTZSBwdWVkZSBzb2JyZWVzY3JpYmlyIGN1YWxxdWllciBtw6l0b2RvIG1lZGlhbnRlIHBhcnRpYWxDb25maWcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2NhbFN0b3JhZ2VGb3JtUmVuZGVyZXIoXG4gICAgcGFydGlhbENvbmZpZzogUGFyYW1ldGVyczx0eXBlb2YgY3JlYXRlRm9ybVJlbmRlcmVyPlswXVxuKTogRm9ybVJlbmRlcmVyIHtcbiAgICByZXR1cm4gY3JlYXRlRm9ybVJlbmRlcmVyKHsgLi4ubG9jYWxTdG9yYWdlQ29uZmlnLCAuLi5wYXJ0aWFsQ29uZmlnIH0pO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzYXIgY3JlYXRlTG9jYWxTdG9yYWdlRm9ybVJlbmRlcmVyIGVuIHN1IGx1Z2FyLlxuICogU2UgbWFudGllbmUgcG9yIGNvbXBhdGliaWxpZGFkIG1pZW50cmFzIHNlIG1pZ3JhbiBsb3MgY29uc3VtaWRvcmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdEZvcm1SZW5kZXJlcigpIHtcbiAgICByZXR1cm4gY3JlYXRlTG9jYWxTdG9yYWdlRm9ybVJlbmRlcmVyKHt9KTtcbn0iXX0=
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWluaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvcmVuZGVyLWluaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBcUlBLHdFQUlDO0lBTUQsNENBRUM7SUFoSkQsbURBQW1FO0lBSW5FLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUFDO0lBQzdDLE1BQU0sdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztJQUM5QyxNQUFNLHdCQUF3QixHQUFHLFNBQVMsQ0FBQztJQUM5QixRQUFBLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztJQUNuQyxRQUFBLGlCQUFpQixHQUFHLFlBQVksQ0FBQztJQUNqQyxRQUFBLGlCQUFpQixHQUFHLFlBQVksQ0FBQztJQUNqQyxRQUFBLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDdkIsUUFBQSxLQUFLLEdBQUcsT0FBTyxDQUFDO0lBQ2hCLFFBQUEsaUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7SUFFckQsdUVBQXVFO0lBQ3ZFLHdFQUF3RTtJQUN4RSxNQUFNLGtCQUFrQixHQUFHO1FBQ3ZCLFlBQVk7WUFDUixPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsWUFBWSxDQUFDLEtBQVU7WUFDbkIsS0FBSyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsb0JBQW9CO1lBQ2hCLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxvQkFBb0IsQ0FBQyxLQUFhO1lBQzlCLEtBQUssQ0FBQyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELGtCQUFrQjtZQUNkLE9BQU8sS0FBSyxDQUFDLFdB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WUFDcEUsQ0FBQztRQUNMLENBQUM7UUFFRCxjQUFjLENBQUMsS0FBOEI7WUFDekMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksa0JBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssQ0FBQyxXQUFXLENBQUMsMEJBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLEtBQUssQ0FBQyxhQUFhLENBQUMsMEJBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkQsQ0FBQztZQUNELEtBQUssQ0FBQyxXQUFXLENBQUMseUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUN6RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsUUFBUTtZQUNKLFVBQVUsQ0FBQyxHQUFFLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsUUFBUSxZQUFZLENBQUMsQ0FBQztnQkFDbkYsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQTtZQUNOLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLENBQUM7S0FFSixDQUFDO0lBRUY7Ozs7T0FJRztJQUNILFNBQWdCLDhCQUE4QixDQUMxQyxhQUF1RDtRQUV2RCxPQUFPLElBQUEsa0NBQWtCLGtDQUFNLGtCQUFrQixHQUFLLGFBQWEsRUFBRyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFnQixnQkFBZ0I7UUFDNUIsT0FBTyw4QkFBOEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ290b0NvbnNpc3RpciB9IGZyb20gXCIuL3JlZHV4LWZvcm11bGFyaW9cIjtcbmltcG9ydCB7IGNyZWF0ZUZvcm1SZW5kZXJlciwgRm9ybVJlbmRlcmVyIH0gZnJvbSBcIi4vcmVuZGVyLWNvbmZpZ1wiO1xuaW1wb3J0IHsgRGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMsIE1vZG9ETSwgRXN0cnVjdHVyYSwgTW9kb0FsbWFjZW5hbWllbnRvLCBBeXVkYVBhcmFVc3VhcmlvIH0gZnJvbSBcIi4vdGlwb3NcIjtcblxuXG5jb25zdCBMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUgPSAnaGRyLXN0YXRlJztcbmNvbnN0IExBU1RfQVVUT19WQUxVRV9QS19SQUlaID0gJ3Byb3hpbW9fdmFsb3JfcGtfcmFpeic7XG5jb25zdCBBUFBfQ0FDSEVfVkVSU0lPTiA9ICdhcHAtY2FjaGUtdmVyc2lvbic7XG5jb25zdCBNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVkgPSAnbW9kb19kbSc7XG5leHBvcnQgY29uc3QgR0xPVkFSX0RBVE9TQllQQVNTID0gJ2RhdG9zYnlwYXNzJztcbmV4cG9ydCBjb25zdCBHTE9WQVJfTU9ET0JZUEFTUyA9ICdtb2RvYnlwYXNzJztcbmV4cG9ydCBjb25zdCBHTE9WQVJfRVNUUlVDVFVSQSA9ICdlc3RydWN0dXJhJztcbmV4cG9ydCBjb25zdCBHTE9WQVJfQVlVREEgPSAnYXl1ZGEnO1xuZXhwb3J0IGNvbnN0IFNFVFVQID0gJ3NldHVwJztcbmV4cG9ydCBjb25zdCBMQVNUX0xPR0dFRF9TRVRVUCA9ICdsYXN0X2xvZ2dlZF9zZXR1cCc7XG5cbi8vIENvbmZpZ3VyYWNpw7NuIGRlIGFsbWFjZW5hbWllbnRvIGxvY2FsIChsb2NhbFN0b3JhZ2Uvc2Vzc2lvblN0b3JhZ2UpLlxuLy8gRXMgbGEgY29uZmlndXJhY2nDs24gcmVjb21lbmRhZGEgcG9yIGRlZmVjdG8gcGFyYSBlbCByZW5kZXJlciBvZmZsaW5lLlxuY29uc3QgbG9jYWxTdG9yYWdlQ29uZmlnID0ge1xuICAgIGdldENhc29TdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIG15T3duLmdldExvY2FsVmFyKExPQ0FMX1NUT1JBR0VfU1RBVEVfTkFNRSk7XG4gICAgfSxcblxuICAgIHNldENhc29TdGF0ZShzdGF0ZTogYW55KSB7XG4gICAgICAgIG15T3duLnNldExvY2FsVmFyKExPQ0FMX1NUT1JBR0VfU1RBVEVfTkFNRSwgc3RhdGUpO1xuICAgIH0sXG5cbiAgICBnZXRVbHRpbW9WYWxvclBrUmFpeigpIHtcbiAgICAgICAgcmV0dXJuIG15T3duLmdldExvY2FsVmFyKExBU1RfQVVUT19WQUxVRV9QS19SQUlaKTtcbiAgICB9LFxuXG4gICAgc2V0VWx0aW1vVmFsb3JQa1JhaXoodmFsdWU6IHN0cmluZykge1xuICAgICAgICBteU93bi5zZXRMb2NhbFZhcihMQVNUX0FVVE9fVkFMVUVfUEtfUkFJWiwgdmFsdWUpO1xuICAgIH0sXG5cbiAgICBnZXRBcHBDYWNoZVZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiBteU93bi5nZXRMb2NhbFZhcihBUFBfQ0FDSEVfVkVSU0lPTik7XG4gICAgfSxcblxuICAgIHNldEFwcENhY2hlVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgICAgbXlPd24uc2V0TG9jYWxWYXIoQVBQX0NBQ0hFX1ZFUlNJT04sIHZlcnNpb24pO1xuICAgIH0sXG4gICAgXG4gICAgZ2V0TW9kb0RNKCkge1xuICAgICAgICByZXR1cm4gbXlPd24uZ2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZKTtcbiAgICB9LFxuICAgIFxuICAgIHNldE1vZG9ETShtb2RvOiBNb2RvRE0pIHtcbiAgICAgICAgbXlPd24uc2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZLCBtb2RvKTtcbiAgICB9LFxuXG4gICAgZ2V0SWRwZXJMb2d1ZWFkbygpIHtcbiAgICAgICAgY29uc3Qgc2V0dXAgPSBteU93bi5nZXRMb2NhbFZhcihTRVRVUCkgfHwge307XG4gICAgICAgIGNvbnN0IGJhY2t1cCA9IG15T3duLmdldExvY2FsVmFyKExBU1RfTE9HR0VEX1NFVFVQKSB8fCB7fTtcblxuICAgICAgICBpZiAoc2V0dXAuaWRwZXIpIHtcbiAgICAgICAgICAgIC8vIFNpIGVsIHNldHVwIGVzdMOhIHNhbm8sIG5vcyBhc2VndXJhbW9zIGRlIHF1ZSBlbCBiYWNrdXAgZXN0w6kgYWN0dWFsaXphZG9cbiAgICAgICAgICAgIGlmIChiYWNrdXAuaWRwZXIgIT09IHNldHVwLmlkcGVyKSB7XG4gICAgICAgICAgICAgICAgbXlPd24uc2V0TG9jYWxWYXIoTEFTVF9MT0dHRURfU0VUVVAsIHsgLi4uYmFja3VwLCBpZHBlcjogc2V0dXAuaWRwZXIgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2V0dXAuaWRwZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBwZXJkaW1vcyBsYSBjb29raWUgeSBlbCBzZXR1cCB2aW5vIHZhY8OtbywgdXNhbW9zIGVsIGJhY2t1cFxuICAgICAgICByZXR1cm4gYmFja3VwLmlkcGVyIHx8IG51bGw7XG4gICAgfSxcblxuICAgIGdldFVzZXJuYW1lTG9ndWVhZG8oKSB7XG4gICAgICAgIGNvbnN0IHNldHVwID0gbXlPd24uZ2V0TG9jYWxWYXIoU0VUVVApIHx8IHt9O1xuICAgICAgICBjb25zdCBiYWNrdXAgPSBteU93bi5nZXRMb2NhbFZhcihMQVNUX0xPR0dFRF9TRVRVUCkgfHwge307XG5cbiAgICAgICAgaWYgKHNldHVwLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICBpZiAoYmFja3VwLnVzZXJuYW1lICE9PSBzZXR1cC51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgIG15T3duLnNldExvY2FsVmFyKExBU1RfTE9HR0VEX1NFVFVQLCB7IC4uLmJhY2t1cCwgdXNlcm5hbWU6IHNldHVwLnVzZXJuYW1lIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldHVwLnVzZXJuYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJhY2t1cC51c2VybmFtZSB8fCBudWxsO1xuICAgIH0sXG5cbiAgICBsZWVyRXN0cnVjdHVyYSgpOiBQcm9taXNlPEVzdHJ1Y3R1cmEgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobXlPd24uZ2V0TG9jYWxWYXIoR0xPVkFSX0VTVFJVQ1RVUkEpKTtcbiAgICB9LFxuICAgIFxuICAgIHBlcnNpc3RpckVzdHJ1Y3R1cmEoZXN0cnVjdHVyYTogRXN0cnVjdHVyYSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBteU93bi5zZXRMb2NhbFZhcihHTE9WQVJfRVNUUlVDVFVSQSwgZXN0cnVjdHVyYSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LFxuXG4gICAgbGVlckF5dWRhKCk6IEF5dWRhUGFyYVVzdWFyaW8gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIG15T3duLmdldExvY2FsVmFyKEdMT1ZBUl9BWVVEQSk7XG4gICAgfSxcblxuICAgIHBlcnNpc3RpckF5dWRhKGF5dWRhOiBBeXVkYVBhcmFVc3VhcmlvKTogdm9pZCB7XG4gICAgICAgIG15T3duLnNldExvY2FsVmFyKEdMT1ZBUl9BWVVEQSwgYXl1ZGEpO1xuICAgIH0sXG5cbiAgICBsZWVyRGF0b3MoKTogUHJvbWlzZTxEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyB8IG51bGw+IHtcbiAgICAgICAgdmFyIG1vZG9BbG1hY2VuYW1pZW50byA9IG15T3duLmdldExvY2FsVmFyKEdMT1ZBUl9NT0RPQllQQVNTKSBhcyBNb2RvQWxtYWNlbmFtaWVudG87XG4gICAgICAgIFxuICAgICAgICBpZiAobW9kb0FsbWFjZW5hbWllbnRvID09ICdsb2NhbCcpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobXlPd24uZ2V0TG9jYWxWYXIoR0xPVkFSX0RBVE9TQllQQVNTKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG15T3duLmdldFNlc3Npb25WYXIoR0xPVkFSX0RBVE9TQllQQVNTKSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgcGVyc2lzdGlyRGF0b3MoZGF0b3M6IERhdG9zQnlQYXNzUGVyc2lzdGlibGVzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHZhciB7IG1vZG9BbG1hY2VuYW1pZW50byB9ID0gZGF0b3M7XG4gICAgICAgIGlmIChtb2RvQWxtYWNlbmFtaWVudG8gPT0gJ2xvY2FsJykge1xuICAgICAgICAgICAgbXlPd24uc2V0TG9jYWxWYXIoR0xPVkFSX0RBVE9TQllQQVNTLCBkYXRvcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBteU93bi5zZXRTZXNzaW9uVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUywgZGF0b3MpO1xuICAgICAgICB9XG4gICAgICAgIG15T3duLnNldExvY2FsVmFyKEdMT1ZBUl9NT0RPQllQQVNTLCBtb2RvQWxtYWNlbmFtaWVudG8pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSxcbiAgICBvbkxvZ291dCgpOiBQcm9taXNlPHZvaWQ+e1xuICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luICsgbG9jYXRpb24ucGF0aG5hbWV9Ly4uL2xvZ291dGApO1xuICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgIH0sMTAwKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICAgIFxufTtcblxuLyoqXG4gKiBDcmVhIHVuIEZvcm1SZW5kZXJlciBjb24gYWxtYWNlbmFtaWVudG8gZW4gbG9jYWxTdG9yYWdlL3Nlc3Npb25TdG9yYWdlLlxuICogRXMgbGEgY29uZmlndXJhY2nDs24gcmVjb21lbmRhZGEgcG9yIGRlZmVjdG8gcGFyYSBlbCBtb2RvIG9mZmxpbmUuXG4gKiBTZSBwdWVkZSBzb2JyZWVzY3JpYmlyIGN1YWxxdWllciBtw6l0b2RvIG1lZGlhbnRlIHBhcnRpYWxDb25maWcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2NhbFN0b3JhZ2VGb3JtUmVuZGVyZXIoXG4gICAgcGFydGlhbENvbmZpZzogUGFyYW1ldGVyczx0eXBlb2YgY3JlYXRlRm9ybVJlbmRlcmVyPlswXVxuKTogRm9ybVJlbmRlcmVyIHtcbiAgICByZXR1cm4gY3JlYXRlRm9ybVJlbmRlcmVyKHsgLi4ubG9jYWxTdG9yYWdlQ29uZmlnLCAuLi5wYXJ0aWFsQ29uZmlnIH0pO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzYXIgY3JlYXRlTG9jYWxTdG9yYWdlRm9ybVJlbmRlcmVyIGVuIHN1IGx1Z2FyLlxuICogU2UgbWFudGllbmUgcG9yIGNvbXBhdGliaWxpZGFkIG1pZW50cmFzIHNlIG1pZ3JhbiBsb3MgY29uc3VtaWRvcmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdEZvcm1SZW5kZXJlcigpIHtcbiAgICByZXR1cm4gY3JlYXRlTG9jYWxTdG9yYWdlRm9ybVJlbmRlcmVyKHt9KTtcbn0iXX0=