Para el cƔlculo de los consumos de agua de las Habitaciones 2 y 3 se
tendrĆ”n en cuenta 10 dĆas (dado el trabajo que implicarĆa hacer el
seguimiento, no estoy llevando cuenta de los dĆas en que las personas se
encuentran o no en la casa, es simplemente un estimado).
Datos de la factura del gas:
La factura de la casa grande (contrato No.1020307), por un valor
total de $77.284 correspondiente al perĆodo 02/2026, estĆ” para pagar
antes del 18 de marzo de 2026.
NOTA: Del valor total de este mes me corresponde pagar: $34.400.
Los siguientes son los datos tomados de la factura de este mes:
La factura del agua (póliza No.121497), por un valor total de
$264.804, correspondiente al perĆodo: Marzo-2026, estĆ” para pagar antes
del 16 de marzo de 2026.
SegĆŗn la factura, la fecha de la lectura anterior fue el 29 de enero
de 2026 y la fecha de la lectura actual el 28 de febrero de 2026.
2.2. Total pago por habitación
3.1. Datos de la factura:
Para el perĆodo Mar.Ā - 2026, el valor total a pagar por la factura de
energĆa elĆ©ctrica del NIC: 2345873 es de $183.820. Este valor
corresponde a un consumo de 235 Kws en 28 dĆas desde el 19 de febrero
hasta el 18 de marzo de 2026.
La factura tiene fecha de vencimiento para pagar hasta el 25 de marzo
de 2026.
3.2. Datos para tener en cuenta
3.2.1. Diferencias sobre datos de consumo
Entre los datos que reporta air-e en sus lecturas y los recolectados
de la información que suministran los contadores aparecen diferencias
tanto en el consumo, como en las fechas de los reportes. La diferencia
en el consumo no debe ser muy alta y se debe principalmente a la sección
de la casa en la cual no se recolectan los datos, por esta razón los
datos de air-e van a estar mas altos que los reportados en el consumo
interno.
La suma total de los consumos internos para este perĆodo es de 189.61
Kw. Quedando un consumo a repartir de 45.39 Kw respecto al consumo
reportado por air-e.
La diferencia entre las fechas (u horas) en que se realizan las
lecturas de los contadores internos y la del contador externo por parte
de air-e, afecta este total a repartir de manera directa: mientras mayor
sea la diferencia entre el tiempo de las lecturas, mayor serĆ” la
diferencia en el consumo a repartir.
La última lectura de los contadores internos se realizó el 19 de
marzo de 2026 y la lectura anterior se hizo el 19 de febrero de 2026. En
cuanto a Air-e, la lectura actual la realizó el 18 de marzo de 2026 y la
lectura anterior el 18 de febrero de 2026.
La diferencia de los consumos (columna āDiferenciaā) se repartirĆ”
proporcionalmente al consumo de cada habitación. La siguiente tabla
muestra estas diferencias para este mes:
El valor de corte para control se estableció en 10 Kw por dĆa. Este
valor se estableció basado en el primer reporte de consumo (septiembre)
despuƩs del cambio del cableado realizado en agosto de 2025. Este valor
permite observar las tendencias generales en el consumo mes a mes:
aumentos o disminuciones en el promedio de consumo diario.
Este mes hemos disminuido el promedio de consumo diario en 1.607 Kw
con respecto al corte.
3.2.3. Lectura de contadores internos
El area comĆŗn, desde la cocina hasta la lavanderĆa, no ha quedado
cobijada bajo ningĆŗn contador por lo que la sumatoria de los valores de
consumo de los contadores internos normalmente serĆ” menor al consumo
total reportado por air-e, haciéndose necesaria la repartición de esta
diferencia. Esta repartición se harÔ de manera proporcional al consumo
obtenido a travƩs de los contadores.
3.2.4. Consumo area comĆŗn
Este consumo serĆ” repartido de manera proporcional al consumo
reportado por los contadores internos de acuerdo a la siguiente tabla
(todos los valores en Kw):
3.3. Total a pagar por habitación
Los siguientes son los datos de la factura de Movistar por concepto
del internet:
El valor total de la factura del Internet por $94.990, con referencia
de pago 60512751061, estĆ” para pagar antes del 10 de abril de 2026.
Equivalente a $21.100 por persona (4.5).
El total de los servicios por habitación para este mes se discrimina
en la siguiente tabla:
mar. 2026
La siguiente tabla corresponde a los valores del mes pasado:
LS0tDQp0aXRsZTogIjxoMT5EaXN0cmlidWNpw7NuIGRlbCBwYWdvIGRlIGxvcyBzZXJ2aWNpb3M8L2gxPiINCm91dHB1dDogDQogIGh0bWxfbm90ZWJvb2s6DQogICAgY3NzOiAiLi4vc2NyaXB0cy9zdHlsZUVFLmNzcyINCi0tLQ0KDQo8IS0tIA0KUHJlbGltaW5hcmVzIChSRUFETUUpOiANCkNvbnZlcnTDrSBhIHByb3llY3RvIGVzdGUgZG9jdW1lbnRvIGVsIDIwMjUtMDctMDQsIGVuIGVsIGRpcmVjdG9yaW86DQogICAgIkM6L1VzZXJzL01vbm8vRG9jdW1lbnRzL0hhY2llbmRhICsvRGlzdF9TUy8iDQpFbiBlc3RlIGRpcmVjdG9yaW8gY3Jlw6kgMyBjYXJwZXRhczogaW5wdXQsIG91dHB1dCB5IHNjcmlwdHMuDQpFc3RlIGRvY3VtZW50byBlc3TDoSBlbiBsYSBjYXJwZXRhOiAib3V0cHV0Ig0KMjAyNi0wMS0xNSANCiAgTWlncsOpIGVsIHByb3llY3RvIGEgVWJ1bnR1LCANCiAgRXN0b3kgdXRpbGl6YW5kbyBHaXQgcGFyYSBlbCBjb250cm9sIGRlIHZlcnNpb25lcyB5IFBvc2l0cm9uIGNvbW8gSURFLg0KDQpTSUVNUFJFIFJFQ1VFUkRFOg0KLSBTQUxWQVIgRUwgRE9DVU1FTlRPIEhUTUwgZW4gZWwgZm9sZGVyIGRlIG91dHB1dC9IaXN0w7NyaWNvIGFudGVzIGRlIGNhbWJpYXJsby4NCi0gVG9tYXIgbGEgaW1hZ2VuIGRlIGxhIHRhYmxhIGNvbiBsYSBkaXN0cmlidWNpw7NuIGEgZmluIGRlIG1lcyBkZSB0b2RvcyBsb3Mgc2VydmljaW9zLg0KLSBBY3R1YWxpemFyIGxhIGluZm8gZGUgbG9zIHNlcnZpY2lvcyBlbiBlbCBhcmNoaXZvICJpbnB1dC9DYXNhX1NTLlIiDQotIFVuYSB2ZXogYWN0dWFsaXphZG8gZXNlIGFyY2hpdm8sIGNvcnJlciBUT0RPUyBsb3MgY2h1bmtzIGRlc3B1w6lzIGRlIGVzdGUgY29tZW50YXJpbyBwYXJhIGV2aXRhciBlcnJvcmVzLg0KLS0+DQoNCmBgYHtyIGluaWNpb19kb2MsIGluY2x1ZGU9RkFMU0V9DQpsaWJyYXJ5KGtuaXRyKQ0KDQojIE9wY2lvbmVzIGdlbmVyYWxlcyBkZSBsb3MgY2h1bmtzOg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSkNCmtuaXRyOjpvcHRzX2NodW5rJHNldChjb21tZW50ID0gIiAiKQ0KDQojIEZ1bmNpw7NuIHBhcmEgY2FyZ2FyIGxhcyBsaWJyZXLDrWFzOg0KIyBSZXZpc2UgZWwgZGlyZWN0b3JpbyBkZSB0cmFiYWpvOg0KY3VycmVudF93ZCA8LSBnZXR3ZCgpDQoNCiMgRGVmaW5hIGVsIGNhbWlubyBoYWNpYSBsb2FkX2xpYnMgYmFzYWRvIGVuIGVsIGRpcmVjdG9yaW8gZGUgdHJhYmFqbyBhY3R1YWwNCmlmIChjdXJyZW50X3dkID09ICIvaG9tZS9tb25vL0RvY3VtZW50cy9EaXN0X1NTIikgew0KICBzb3VyY2UoIi4vc2NyaXB0cy9sb2FkX2xpYnMuUiIpDQp9IGVsc2Ugew0KICBzb3VyY2UoIi4uL3NjcmlwdHMvbG9hZF9saWJzLlIiKQ0KfQ0KYGBgDQoNCmBgYHtyIHZlY3RvcmVzLCBpbmNsdWRlPUZBTFNFfQ0KIyBsaXN0YXMgQ2FzYSB5IFNTOg0KaWYgKGN1cnJlbnRfd2QgPT0gIi9ob21lL21vbm8vRG9jdW1lbnRzL0Rpc3RfU1MiKSB7DQpzb3VyY2UoIi4vaW5wdXQvQ2FzYV9TUy5SIikNCn0gZWxzZSB7DQogIHNvdXJjZSgiLi4vaW5wdXQvQ2FzYV9TUy5SIikNCn0NCmBgYA0KDQo8ZGl2IGlkPSJUYWJsYSI+DQojIyMjIFRhYmxhIGRlIGNvbnRlbmlkb3M6DQo8L2Rpdj4NCiMjIyMjIyAmZW1zcDsmZW1zcDvigKImZW5zcDsgW05vdGFzIFByZWxpbWluYXJlc10oI05vdGFzKQ0KDQo8b2w+DQogIDxsaT4gW0dhc2VzIGRlbCBDYXJpYmVdKCNHYXMpIDwvbGk+DQogIDxsaT4gW0FBQV0oI0FBQSkgDQogICAgPG9sPg0KICAgICAgPGxpPiBbRGF0b3MgZGUgbGEgZmFjdHVyYV0oI2ZhY3RBZ3VhKSA8L2xpPg0KICAgICAgPGxpPiBbVG90YWwgcGFnbyBwb3IgaGFiaXRhY2nDs25dKCN0b3RIYWJBKSA8L2xpPg0KICAgIDwvb2w+IDwvbGk+DQogIDxsaT4gW0Fpci1lXSgjRUUpDQogICAgPG9sPg0KICAgICAgPGxpPiBbRGF0b3MgZGUgbGEgZmFjdHVyYV0oI0ZhY3RFRSkgPC9saT4NCiAgICAgIDxsaT4gW0RhdG9zIHBhcmEgdGVuZXIgZW4gY3VlbnRhXSgjRUVuQ3VlbnRhKSANCiAgICAgICAgPG9sPg0KICAgICAgICAgIDxsaT4gW0RpZmVyZW5jaWFzIHNvYnJlIGRhdG9zIGRlIGNvbnN1bW9dKCNFRW5DdWVudGEpIDwvbGk+DQogICAgICAgICAgPGxpPiBbVmFsb3IgZGUgY29ydGVdKCNWYWxFRSkgPC9saT4NCiAgICAgICAgICA8bGk+IFtMZWN0dXJhIGRlIGNvbnRhZG9yZXMgaW50ZXJub3NdKCNMZWN0Q29udHMpIDwvbGk+DQogICAgICAgICAgPGxpPiBbQ29uc3VtbyBhcmVhIGNvbcO6bl0oI0NvbnNBckNvbSkNCiAgICAgICAgPC9vbD4gPC9saT4NCiAgICAgIDxsaT4gW1RvdGFsIGEgcGFnYXIgcG9yIGhhYml0YWNpw7NuXSgjVG90YWxFRSkgPC9saT4NCiAgICA8L29sPiA8L2xpPg0KICA8bGk+IFtNb3Zpc3Rhcl0oI01vdmlzKSA8L2xpPg0KICA8bGk+IFtUb3RhbCBzZXJ2aWNpb3NdKCNsYXRvVG90YWwpDQo8L29sPg0KDQoqKioNCg0KPGRpdiBpZD0iTm90YXMiPg0KIyMgTm90YXMgUHJlbGltaW5hcmVzDQo8L2Rpdj4NCg0KPHA+UGFyYSBlbCBjw6FsY3VsbyBkZSBsb3MgY29uc3Vtb3MgZGUgYWd1YSBkZSBsYXMgSGFiaXRhY2lvbmVzIDIgeSAzIHNlIHRlbmRyw6FuIGVuIGN1ZW50YSAxMCBkw61hcyAoZGFkbyBlbCB0cmFiYWpvIHF1ZSBpbXBsaWNhcsOtYSBoYWNlciBlbCBzZWd1aW1pZW50bywgbm8gZXN0b3kgbGxldmFuZG8gY3VlbnRhIGRlIGxvcyBkw61hcyBlbiBxdWUgbGFzIHBlcnNvbmFzIHNlIGVuY3VlbnRyYW4gbyBubyBlbiBsYSBjYXNhLCBlcyBzaW1wbGVtZW50ZSB1biBlc3RpbWFkbykuPC9wPg0KDQoqKioNCg0KPGRpdiBpZD0iR2FzIj4NCiMjIDEuIEdhc2VzIGRlbCBDYXJpYmUNCjwvZGl2Pg0KDQpEYXRvcyBkZSBsYSBmYWN0dXJhIGRlbCBnYXM6DQoNCmBgYHtyIGZhY3RHYXMsIHJlc3VsdHM9J2FzaXMnfQ0KaWYgKCJHYXMiICVpbiUgU1MkQWN0dWFsKXsNCiAgd3JpdGVMaW5lcyhwYXN0ZTAoIkxhIGZhY3R1cmEgZGUgbGEgY2FzYSBncmFuZGUgKGNvbnRyYXRvIE5vLiIsDQogICAgICAgICAgICAgICAgICBTUyRHYXMkTm9fY29udHJhdG8sDQogICAgICAgICAgICAgICAgICAiKSwgcG9yIHVuIHZhbG9yIHRvdGFsIGRlICQiLA0KICAgICAgICAgICAgICAgICAgZm9ybWF0KFNTJEdhcyR0b3RhbF9hX3BhZ2FyLCBiaWcubWFyaz0iLiIsIGRlY2ltYWwubWFyaz0iLCIpLA0KICAgICAgICAgICAgICAgICAgaWYgKFNTJEdhcyRzYWxkb19hbnRlcmlvciAhPSAwKXsNCiAgICAgICAgICAgICAgICAgICAgcGFzdGUwKCIgY29ycmVzcG9uZGllbnRlIGEgbG9zIHBlcsOtb2RvcyAiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChteShTUyRHYXMkcGVyaW9kbykgLSBkYXlzKDMwKSwgIiViIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAiIHkgIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChteShTUyRHYXMkcGVyaW9kbyksICIlYiBkZSAlWSIpKQ0KICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgcGFzdGUwKCIgY29ycmVzcG9uZGllbnRlIGFsIHBlcsOtb2RvICIsIFNTJEdhcyRwZXJpb2RvKQ0KICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICIsIGVzdMOhIHBhcmEgcGFnYXIgYW50ZXMgZGVsICIsDQogICAgICAgICAgICAgICAgICBmb3JtYXQoU1MkR2FzJGZlY2hhLCAiJWQgZGUgJUIgZGUgJVkiKSwNCiAgICAgICAgICAgICAgICAgICIuXG4iLCAiXG4iLA0KICAgICAgICAgICAiTk9UQTogRGVsIHZhbG9yIHRvdGFsIGRlIGVzdGUgbWVzIG1lIGNvcnJlc3BvbmRlIHBhZ2FyOiAkIiwNCiAgICAgICAgICAgICAgICAgIGZvcm1hdCgxMDAgKiByb3VuZCgoU1MkR2FzJGNhcmdvX2FuZHJlcykgLyAxMDApLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGJpZy5tYXJrPSIuIixkZWNpbWFsLm1hcms9IiwiKSwgIi5cbiIpKQ0KfSBlbHNlIHsNCiAgd3JpdGVMaW5lcygiRmFjdHVyYSBubyBkaXNwb25pYmxlIHRvZGF2w61hLiIpDQp9DQpgYGANCg0KIyMjIyMjIFtUYWJsYSBkZSBjb250ZW5pZG9zXSgjVGFibGEpDQoqKioNCiANCjxkaXYgaWQ9IkFBQSI+DQojIyAyLiBBQUENCjwvZGl2Pg0KPGRpdiBpZD0iZmFjdEFndWEiPg0KIyMjIDIuMS4gRGF0b3MgZGUgbGEgZmFjdHVyYQ0KPC9kaXY+DQoNCkxvcyBzaWd1aWVudGVzIHNvbiBsb3MgZGF0b3MgdG9tYWRvcyBkZSBsYSBmYWN0dXJhIGRlIGVzdGUgbWVzOg0KDQpgYGB7ciBmYWN0QWd1YSwgcmVzdWx0cz0nYXNpcyd9DQp3cml0ZUxpbmVzKGlmICgiQUFBIiAlaW4lIFNTJEFjdHVhbCkgew0KICAgIHBhc3RlMCgiTGEgZmFjdHVyYSBkZWwgYWd1YSAocMOzbGl6YSBOby4iLCBTUyRBQUEkTm9fcG9saXphLA0KICAgICAgICAgICAiKSwgcG9yIHVuIHZhbG9yIHRvdGFsIGRlICQiLA0KICAgICAgICAgICBmb3JtYXQoU1MkQUFBJHRvdGFsX3BhZ29fYWFhLCBiaWcubWFyayA9ICIuIiwNCiAgICAgICAgICAgICAgICAgIGRlY2ltYWwubWFyayA9ICIsIiksDQogICAgICAgICAgICIsIGNvcnJlc3BvbmRpZW50ZSBhbCBwZXLDrW9kbzogIiwgU1MkQUFBJHBlcmlvZG8sDQogICAgICAgICAgICIsIGVzdMOhIHBhcmEgcGFnYXIgYW50ZXMgZGVsICIsDQogICAgICAgICAgIGZvcm1hdCh5bWQoU1MkQUFBJGZlY2hhKSwgIiVkIGRlICVCIGRlICVZIiksDQogICAgICAgICAgICIuXG5cblNlZ8O6biBsYSBmYWN0dXJhLCBsYSBmZWNoYSBkZSBsYSBsZWN0dXJhIGFudGVyaW9yIGZ1ZSBlbCAiLA0KICAgICAgICAgICBmb3JtYXQoU1MkQUFBJGZlY2hhX2xlY3RfYW50LCAiJWQgZGUgJUIgZGUgJVkiKSwNCiAgICAgICAgICAgIiB5IGxhIGZlY2hhIGRlIGxhIGxlY3R1cmEgYWN0dWFsIGVsICIsDQogICAgICAgICAgIGZvcm1hdChTUyRBQUEkZmVjaGFfbGVjdF9hY3QsICIlZCBkZSAlQiBkZSAlWSIpLCAiLlxuIikNCiAgfSBlbHNlIHsNCiAgICAiVG9kYXbDrWEgbm8gaGF5IGZhY3R1cmEgZGlzcG9uaWJsZSBwYXJhIGVzdGUgcGVyw61vZG8uIg0KfSkNCmBgYA0KDQo8ZGl2IGlkPSJ0b3RIYWJBIj4NCiMjIyAyLjIuIFRvdGFsIHBhZ28gcG9yIGhhYml0YWNpw7NuDQo8L2Rpdj4NCg0KYGBge3IgcGFnb0FhYX0NCmlmICgiQUFBIiAlaW4lIFNTJEFjdHVhbCkgew0KICBkYXRhLnRhYmxlKEhhYml0YWNpw7NuID0gQ2FzYSRIYWJpdGFjacOzbiwgYEludGVncmFudGUocylgID0gQ2FzYSRgSW50ZWdyYW50ZShzKWAsDQogICAgICAgICAgICAgT2N1cGFjacOzbiA9IGxhYmVsX3BlcmNlbnQoYWNjdXJhY3kgPSAwLjAxKShDYXNhJE9jdXBhKSwNCiAgICAgICAgICAgICBgVG90YWwgQUFBYCA9IGxhYmVsX2N1cnJlbmN5KHByZWZpeCA9ICIkIiwgYmlnLm1hcmsgPSAiLiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsLm1hcmsgPSAiLCIpKFNTJEFBQSR0b3RhbF9BQUEpKQ0KfSBlbHNlIHsNCiAgICB3cml0ZUxpbmVzKCJMYSBmYWN0dXJhIGRlIGVzdGUgcGVyw61vZG8gbm8gZXN0w6EgZGlzcG9uaWJsZSB0b2RhdsOtYS4iKQ0KfQ0KYGBgDQoNCiMjIyMjIyBbVGFibGEgZGUgY29udGVuaWRvc10oI1RhYmxhKQ0KKioqDQoNCjxkaXYgaWQ9IkVFIj4NCiMjIDMuIEFpci1lDQo8L2Rpdj4NCg0KDQo8ZGl2IGlkPSJGYWN0RUUiPg0KIyMjIDMuMS4gRGF0b3MgZGUgbGEgZmFjdHVyYToNCjwvZGl2Pg0KDQpgYGB7ciByZXBvcnRlRmFjdHVyYSwgcmVzdWx0cz0nYXNpcyd9DQp3cml0ZUxpbmVzKGlmICgiRUUiICVpbiUgU1MkQWN0dWFsKSB7cGFzdGUwKCJQYXJhIGVsIHBlcsOtb2RvICIsIFNTJEVFJHBlcmlvZG9FRSwgDQogICAgICAgICAgICAgICAgICAiLCBlbCB2YWxvciB0b3RhbCBhIHBhZ2FyIHBvciBsYSBmYWN0dXJhIGRlIGVuZXJnw61hIGVsw6ljdHJpY2EgZGVsIE5JQzogIiwNCiAgICAgICAgICAgICAgICAgIFNTJEVFJE5JQywgIiBlcyBkZSAkIiwNCiAgICAgICAgICAgICAgICAgIGZvcm1hdChTUyRFRSR2cl9mYWN0LCBiaWcubWFyayA9ICIuIiwgZGVjaW1hbC5tYXJrID0gIiwiKSwNCiAgICAgICAgICAgICAgICAgICIuXG5Fc3RlIHZhbG9yIGNvcnJlc3BvbmRlIGEgdW4gY29uc3VtbyBkZSAiLCBTUyRFRSRrd2hfZiwgIiBLd3MgZW4gIiwNCiAgICAgICAgICAgICAgICAgIFNTJEVFJGZfbGVjdCAtIFNTJEVFJGZfYW50LCAiIGTDrWFzICIsDQogICAgICAgICAgICAgICAgICBpZiAoU1MkRUUkZl9hbnQpIHsgcGFzdGUwKCJkZXNkZSBlbCAiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoU1MkRUUkZl9hbnQrMSwgZm9ybWF0ID0gIiVkIGRlICVCIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIikgfSwNCiAgICAgICAgICAgICAgICAgIGlmIChTUyRFRSRmX2xlY3QpIHsgcGFzdGUwKCJoYXN0YSBlbCAiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KFNTJEVFJGZfbGVjdCwgZm9ybWF0ID0gIiVkIGRlICVCIGRlICVZIikpDQogICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAiLCBwZXJvIHNpbiBsZWN0dXJhIGFjdHVhbCAoY29uc3VtbyBlc3RpbWFkbykiIA0KICAgICAgICAgICAgICAgICAgfSwgIi5cblxuTGEgZmFjdHVyYSB0aWVuZSBmZWNoYSBkZSB2ZW5jaW1pZW50byBwYXJhIHBhZ2FyIGhhc3RhIGVsICIsIA0KICAgICAgICAgICAgICAgICAgZm9ybWF0KFNTJEVFJGZfdmVuYywgZm9ybWF0ID0gIiVkIGRlICVCIGRlICVZIiksIi5cbiIpDQogIH0gZWxzZSB7DQogICAgIkxhIGZhY3R1cmEgZGVsIHBlcsOtb2RvIGFjdHVhbCB0b2RhdsOtYSBubyBlc3TDoSBkaXNwb25pYmxlLlxuIg0KICB9KQ0KYGBgDQoNCjxkaXYgaWQ9IkVFbkN1ZW50YSI+DQojIyMgMy4yLiBEYXRvcyBwYXJhIHRlbmVyIGVuIGN1ZW50YQ0KPC9kaXY+DQoNCiMjIyMgMy4yLjEuIERpZmVyZW5jaWFzIHNvYnJlIGRhdG9zIGRlIGNvbnN1bW8NCg0KRW50cmUgbG9zIGRhdG9zIHF1ZSByZXBvcnRhIGFpci1lIGVuIHN1cyBsZWN0dXJhcyB5IGxvcyByZWNvbGVjdGFkb3MgZGUgbGEgaW5mb3JtYWNpw7NuIHF1ZSBzdW1pbmlzdHJhbiBsb3MgY29udGFkb3JlcyBhcGFyZWNlbiBkaWZlcmVuY2lhcyB0YW50byBlbiBlbCBjb25zdW1vLCBjb21vIGVuIGxhcyBmZWNoYXMgZGUgbG9zIHJlcG9ydGVzLiBMYSBkaWZlcmVuY2lhIGVuIGVsIGNvbnN1bW8gbm8gZGViZSBzZXIgbXV5IGFsdGEgeSBzZSBkZWJlIHByaW5jaXBhbG1lbnRlIGEgbGEgc2VjY2nDs24gZGUgbGEgY2FzYSBlbiBsYSBjdWFsIG5vIHNlIHJlY29sZWN0YW4gbG9zIGRhdG9zLCBwb3IgZXN0YSByYXrDs24gbG9zIGRhdG9zIGRlIGFpci1lIHZhbiBhIGVzdGFyIG1hcyBhbHRvcyBxdWUgbG9zIHJlcG9ydGFkb3MgZW4gZWwgY29uc3VtbyBpbnRlcm5vLiANCg0KYGBge3IgY29uc0ludCwgcmVzdWx0cz0nYXNpcyd9DQp3cml0ZUxpbmVzKGlmICgiQ0kiICVpbiUgU1MkQWN0dWFsKSB7DQogIHBhc3RlMCgiTGEgc3VtYSB0b3RhbCBkZSBsb3MgY29uc3Vtb3MgaW50ZXJub3MgcGFyYSBlc3RlIHBlcsOtb2RvIGVzIGRlICIsDQogICAgICAgICBzdW0oU1MkRUUkQ29uc0ludCRjb25zdW1vKSwgaWYgKCJFRSIgJWluJSBTUyRBY3R1YWwpIHsNCiAgICAgICAgICAgICAgICAgICAgcGFzdGUwKCIgS3cuIFF1ZWRhbmRvIHVuIGNvbnN1bW8gYSByZXBhcnRpciBkZSAiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgU1MkRUUka3doX2YgLSBzdW0oU1MkRUUkQ29uc0ludCRjb25zdW1vKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgS3cgcmVzcGVjdG8gYWwgY29uc3VtbyByZXBvcnRhZG8gcG9yIGFpci1lLiIpDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IiBLdy5cbiJ9KQ0KICB9IGVsc2UgeyJDb25zdW1vIG5vIGRpc3BvbmlibGUgdG9kYXbDrWEuIn0pDQpgYGANCg0KDQpMYSBkaWZlcmVuY2lhIGVudHJlIGxhcyBmZWNoYXMgKHUgaG9yYXMpIGVuIHF1ZSBzZSByZWFsaXphbiBsYXMgbGVjdHVyYXMgZGUgbG9zIGNvbnRhZG9yZXMgaW50ZXJub3MgeSBsYSBkZWwgY29udGFkb3IgZXh0ZXJubyBwb3IgcGFydGUgZGUgYWlyLWUsIGFmZWN0YSBlc3RlIHRvdGFsIGEgcmVwYXJ0aXIgZGUgbWFuZXJhIGRpcmVjdGE6IG1pZW50cmFzIG1heW9yIHNlYSBsYSBkaWZlcmVuY2lhIGVudHJlIGVsIHRpZW1wbyBkZSBsYXMgbGVjdHVyYXMsIG1heW9yIHNlcsOhIGxhIGRpZmVyZW5jaWEgZW4gZWwgY29uc3VtbyBhIHJlcGFydGlyLg0KDQpgYGB7ciBsZWN0dXJhX2NvbnRfaW50LCByZXN1bHRzPSdhc2lzJ30NCndyaXRlTGluZXMoaWYgKCJDSSIgJWluJSBTUyRBY3R1YWwpIHsNCiAgcGFzdGUwKCJMYSDDumx0aW1hIGxlY3R1cmEgZGUgbG9zIGNvbnRhZG9yZXMgaW50ZXJub3Mgc2UgcmVhbGl6w7MgZWwgIiwNCiAgICAgICAgIGZvcm1hdChTUyRFRSRDb25zSW50JGZlY2hhX2xlY3RfYWN0dWFsLCAiJWQgZGUgJUIgZGUgJVkiKSwNCiAgICAgICAgICIgeSBsYSBsZWN0dXJhIGFudGVyaW9yIHNlIGhpem8gZWwgIiwNCiAgICAgICAgIGZvcm1hdChTUyRFRSRDb25zSW50JGZlY2hhX2xlY3RfYW50ZXIsICIlZCBkZSAlQiBkZSAlWSIpLA0KICAgICAgICAgIi5cbkVuIGN1YW50byBhIEFpci1lLCAiLCBpZiAoIkVFIiAlaW4lIFNTJEFjdHVhbCkgew0KICAgICAgICAgICBwYXN0ZTAoImxhIGxlY3R1cmEgYWN0dWFsIGxhIHJlYWxpesOzIGVsICIsIGZvcm1hdChTUyRFRSRmX2xlY3QsICIlZCBkZSAlQiBkZSAlWSIpLA0KICAgICAgICAgICAiIHkgbGEgbGVjdHVyYSBhbnRlcmlvciBlbCAiLCBmb3JtYXQoU1MkRUUkZl9hbnQsICIlZCBkZSAlQiBkZSAlWSIpLCAiLlxuIikNCiAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICJsYSBmYWN0dXJhIG5vIGVzdMOhIGRpc3BvbmlibGUgdG9kYXbDrWEuXG4iDQogICAgICAgICB9KQ0KICB9IGVsc2Ugew0KICAgICJObyBoYXkgZGF0b3MgZGlzcG9uaWJsZXMgdG9kYXbDrWEuXG4iDQogIH0pDQpgYGANCg0KTGEgZGlmZXJlbmNpYSBkZSBsb3MgY29uc3Vtb3MgKGNvbHVtbmEgIkRpZmVyZW5jaWEiKSBzZSByZXBhcnRpcsOhIHByb3BvcmNpb25hbG1lbnRlIGFsIGNvbnN1bW8gZGUgY2FkYSBoYWJpdGFjacOzbi4gTGEgc2lndWllbnRlIHRhYmxhIG11ZXN0cmEgZXN0YXMgZGlmZXJlbmNpYXMgcGFyYSBlc3RlIG1lczoNCg0KYGBge3IgRGlmZXJlbmNpYUxlY3R1cmFzfQ0KaWYgKCJFRSIgJWluJSBTUyRBY3R1YWwpIHsNCiAgdGliYmxlKGBGYWN0dXJhIGFpci1lYCA9IHBhc3RlKFNTJEVFJGt3aF9mLCJLdyIpLA0KICAgICAgIGBMZWN0dXJhIGNvbnRhZG9yZXNgID0gcGFzdGUocm91bmQoc3VtKFNTJEVFJENvbnNJbnQkbGVjdF9maW4pIC0gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0oU1MkRUUkQ29uc0ludCRsZWN0X2luaSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdpdHM9MiksIkt3IiksDQogICAgICAgRGlmZXJlbmNpYSA9IHBhc3RlMChhYnMocm91bmQoU1MkRUUka3doX2YgLSAoc3VtKFNTJEVFJENvbnNJbnQkbGVjdF9maW4pIC0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bShTUyRFRSRDb25zSW50JGxlY3RfaW5pKSksIGRpZ2l0cyA9IDIpKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgS3ciKSwNCiAgICAgICBgTsO6bWVybyBkZSBkw61hcyBmYWN0dXJhYCA9IHBhc3RlMChTUyRFRSRmX2xlY3QgLSBTUyRFRSRmX2FudCwiIGTDrWFzIiksDQogICAgICAgYE7Dum1lcm8gZGUgZMOtYXMgaW50ZXJub2AgPSBwYXN0ZTAoU1MkRUUkQ29uc0ludCRmZWNoYV9sZWN0X2FjdHVhbCAtIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTJEVFJENvbnNJbnQkZmVjaGFfbGVjdF9hbnRlciwiIGTDrWFzIiksDQogICAgICAgKQ0KfSBlbHNlIHt3cml0ZUxpbmVzKCJGYWN0dXJhIG5vIGRpc3BvbmlibGUgdG9kYXbDrWEuXG4iKX0NCmBgYA0KDQo8ZGl2IGlkPSJWYWxFRSI+DQojIyMjIDMuMi4yLiBWYWxvciBkZSBjb3J0ZQ0KPC9kaXY+DQpFbCB2YWxvciBkZSBjb3J0ZSBwYXJhIGNvbnRyb2wgc2UgZXN0YWJsZWNpw7MgZW4gMTAgS3cgcG9yIGTDrWEuIEVzdGUgdmFsb3Igc2UgZXN0YWJsZWNpw7MgYmFzYWRvIGVuIGVsIHByaW1lciByZXBvcnRlIGRlIGNvbnN1bW8gKHNlcHRpZW1icmUpIGRlc3B1w6lzIGRlbCBjYW1iaW8gZGVsIGNhYmxlYWRvIHJlYWxpemFkbyBlbiBhZ29zdG8gZGUgMjAyNS4gRXN0ZSB2YWxvciBwZXJtaXRlIG9ic2VydmFyIGxhcyB0ZW5kZW5jaWFzIGdlbmVyYWxlcyBlbiBlbCBjb25zdW1vIG1lcyBhIG1lczogYXVtZW50b3MgbyBkaXNtaW51Y2lvbmVzIGVuIGVsIHByb21lZGlvIGRlIGNvbnN1bW8gZGlhcmlvLiANCg0KYGBge3IgQ2FtYmlvUGF0cm9uQ29uc3VtbywgcmVzdWx0cz0nYXNpcyd9DQppZiAoIkVFIiAlaW4lIFNTJEFjdHVhbCkgew0KICB3cml0ZUxpbmVzKHBhc3RlMCgiRXN0ZSBtZXMgaGVtb3MgIixpZiAocm91bmQoMTAgLSBTUyRFRSRrd2hfZi9hcy5udW1lcmljKFNTJEVFJGZfbGVjdCAtIFNTJEVFJGZfYW50KSwgZGlnaXRzPTMpIDwwKSB7ImF1bWVudGFkbyAifSBlbHNlIHsiZGlzbWludWlkbyAifSwiZWwgcHJvbWVkaW8gZGUgY29uc3VtbyBkaWFyaW8gZW4gIixhYnMocm91bmQoMTAgLSBTUyRFRSRrd2hfZi9hcy5udW1lcmljKFNTJEVFJGZfbGVjdCAtIFNTJEVFJGZfYW50KSwgZGlnaXRzPTMpKSwiIEt3IGNvbiByZXNwZWN0byBhbCBjb3J0ZS5cbiIpKQ0KfSBlbHNlIHt3cml0ZUxpbmVzKCJGYWN0dXJhIG5vIGRpc3BvbmlibGUgdG9kYXbDrWEuXG4iKX0NCmBgYA0KDQo8ZGl2IGlkPSJMZWN0Q29udHMiPg0KIyMjIyAzLjIuMy4gTGVjdHVyYSBkZSBjb250YWRvcmVzIGludGVybm9zDQo8L2Rpdj4NCkVsIGFyZWEgY29tw7puLCBkZXNkZSBsYSBjb2NpbmEgaGFzdGEgbGEgbGF2YW5kZXLDrWEsIG5vIGhhIHF1ZWRhZG8gY29iaWphZGEgYmFqbyBuaW5nw7puIGNvbnRhZG9yIHBvciBsbyBxdWUgbGEgc3VtYXRvcmlhIGRlIGxvcyB2YWxvcmVzIGRlIGNvbnN1bW8gZGUgbG9zIGNvbnRhZG9yZXMgaW50ZXJub3Mgbm9ybWFsbWVudGUgc2Vyw6EgbWVub3IgYWwgY29uc3VtbyB0b3RhbCByZXBvcnRhZG8gcG9yIGFpci1lLCBoYWNpw6luZG9zZSBuZWNlc2FyaWEgbGEgcmVwYXJ0aWNpw7NuIGRlIGVzdGEgZGlmZXJlbmNpYS4gRXN0YSByZXBhcnRpY2nDs24gc2UgaGFyw6EgZGUgbWFuZXJhIHByb3BvcmNpb25hbCBhbCBjb25zdW1vIG9idGVuaWRvIGEgdHJhdsOpcyBkZSBsb3MgY29udGFkb3Jlcy4NCg0KYGBge3IgY29uc3Vtb19pbnRlcm5vfQ0KaWYgKCJDSSIgJWluJSBTUyRBY3R1YWwpIHsNCiAgZGF0YS50YWJsZShIYWJpdGFjacOzbiA9IENhc2EkSGFiaXRhY2nDs24sDQogICAgICAgICAgIGBDb250YWRvciAjYCA9IFNTJEVFJENvbnNJbnQkY29udGFkb3IsDQogICAgICAgICAgIGBMZWN0dXJhIGZpbmFsYCA9IFNTJEVFJENvbnNJbnQkbGVjdF9maW4sDQogICAgICAgICAgIGBMZWN0dXJhIGluaWNpYWxgID0gU1MkRUUkQ29uc0ludCRsZWN0X2luaSwNCiAgICAgICAgICAgYENvbnN1bW8gS3dgID0gU1MkRUUkQ29uc0ludCRjb25zdW1vKQ0KfSBlbHNlIHt3cml0ZUxpbmVzKCJDb25zdW1vIG5vIGRpc3BvbmlibGUgdG9kYXbDrWEuXG4iKX0NCmBgYA0KDQo8ZGl2IGlkPSJDb25zQXJDb20iPg0KIyMjIyAzLjIuNC4gQ29uc3VtbyBhcmVhIGNvbcO6bg0KPC9kaXY+DQoNCkVzdGUgY29uc3VtbyBzZXLDoSByZXBhcnRpZG8gZGUgbWFuZXJhIHByb3BvcmNpb25hbCBhbCBjb25zdW1vIHJlcG9ydGFkbyBwb3IgbG9zIGNvbnRhZG9yZXMgaW50ZXJub3MgZGUgYWN1ZXJkbyBhIGxhIHNpZ3VpZW50ZSB0YWJsYSAodG9kb3MgbG9zIHZhbG9yZXMgZW4gS3cpOg0KDQpgYGB7cn0NCmlmICgiRUUiICVpbiUgU1MkQWN0dWFsKSB7DQogIGRhdGEudGFibGUoYEhhYml0YWNpw7NuYCA9IENhc2EkSGFiaXRhY2nDs24sDQogICAgICAgICAgIGBDb25zdW1vIENvbnRhZG9yYCA9IFNTJEVFJENvbnNJbnQkY29uc3VtbywNCiAgICAgICAgICAgYENvbnN1bW8gQXJlYSBDb23Dum5gID0gcm91bmQoU1MkRUUkQ29uc0ludCRjb25zX3Blcl9oYWIsMikpICU+JQ0KICBtdXRhdGUoYENvbnN1bW8gVG90YWwgcG9yIEhhYi5gID0gYENvbnN1bW8gQ29udGFkb3JgICsgYENvbnN1bW8gQXJlYSBDb23Dum5gKQ0KfSBlbHNlIHsNCiAgd3JpdGVMaW5lcygiTm8gaGF5IGRhdG9zIGRlIGxhIGZhY3R1cmEgdG9kYXbDrWEuXG4iKQ0KfQ0KYGBgDQoNCjxkaXYgaWQ9IlRvdGFsRUUiPg0KIyMjIDMuMy4gVG90YWwgYSBwYWdhciBwb3IgaGFiaXRhY2nDs24NCjwvZGl2Pg0KDQpgYGB7ciB0b3RhbEhhYkVlfQ0KaWYgKCJFRSIgJWluJSBTUyRBY3R1YWwpIHsNCiAgZGF0YS50YWJsZShIYWJpdGFjacOzbiA9IENhc2EkSGFiaXRhY2nDs24sDQogICAgICAgICAgIGBJbnRlZ3JhbnRlKHMpYCA9IENhc2EkYEludGVncmFudGUocylgLA0KICAgICAgICAgICBgQ29zdG8gRW5lcmfDrWFgID0gbGFiZWxfY3VycmVuY3kocHJlZml4ID0gIiQiLCBiaWcubWFyayA9ICIuIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbC5tYXJrID0gIiwiKShTUyRFRSR0b3RhbF9FRSkpDQp9IGVsc2Ugew0KICB3cml0ZUxpbmVzKCJGYWN0dXJhIG5vIGRpc3BvbmlibGUgdG9kYXbDrWEuXG4iKQ0KfQ0KYGBgDQoNCiMjIyMjIyBbVGFibGEgZGUgY29udGVuaWRvc10oI1RhYmxhKQ0KKioqDQoNCjxkaXYgaWQ9Ik1vdmlzIj4NCiMjIDQuIE1vdmlzdGFyDQo8L2Rpdj4NCg0KTG9zIHNpZ3VpZW50ZXMgc29uIGxvcyBkYXRvcyBkZSBsYSBmYWN0dXJhIGRlIE1vdmlzdGFyIHBvciBjb25jZXB0byBkZWwgaW50ZXJuZXQ6DQoNCmBgYHtyIHBhZ29JbnRlcm5ldCwgcmVzdWx0cz0nYXNpcyd9DQp3cml0ZUxpbmVzKHBhc3RlMCgiRWwgdmFsb3IgdG90YWwgZGUgbGEgZmFjdHVyYSBkZWwgSW50ZXJuZXQgcG9yICQiLA0KICAgICAgICAgICAgICAgICAgZm9ybWF0KFNTJFdlYiR2YWxvcl9wYWdvLCBiaWcubWFyaz0iLiIsIGRlY2ltYWwubWFyaz0iLCIpLA0KICAgICAgICAgICAgICAgICAgIiwgY29uIHJlZmVyZW5jaWEgZGUgcGFnbyAiLCBTUyRXZWIkcmVmX3BhZ28sICIsIGVzdMOhIHBhcmEgcGFnYXIgYW50ZXMgZGVsICIsDQogICAgICAgICAgICAgICAgICBmb3JtYXQoU1MkV2ViJGZlY2hhX2xpbSwgIiVkIGRlICVCIGRlICVZIiksICIuXG5FcXVpdmFsZW50ZSBhICQiLA0KICAgICAgICAgICAgICAgICAgZm9ybWF0KFNTJFdlYiRwZXJfUGVyLCBiaWcubWFyaz0iLiIsIGRlY2ltYWwubWFyaz0iLCIpLA0KICAgICAgICAgICAgICAgICAgIiBwb3IgcGVyc29uYSAoIiwgc3VtKFNTJFdlYiR3ZWJDb24pLCIpLlxuIikpDQpgYGANCg0KIyMjIyMjIFtUYWJsYSBkZSBjb250ZW5pZG9zXSgjVGFibGEpDQoqKioNCg0KPGRpdiBpZD0ibGF0b1RvdGFsIj4NCiMjIDUuIFRvdGFsIFNlcnZpY2lvcyANCjwvZGl2Pg0KRWwgdG90YWwgZGUgbG9zIHNlcnZpY2lvcyBwb3IgaGFiaXRhY2nDs24gcGFyYSBlc3RlIG1lcyBzZSBkaXNjcmltaW5hIGVuIGxhIHNpZ3VpZW50ZSB0YWJsYToNCg0KYHIgZm9ybWF0KFN5cy5EYXRlKCksICIlYiAlWSIpYA0KDQpgYGB7ciBsYXRvVG90YWx9DQpkYXRhLnRhYmxlKEhhYml0YWNpw7NuID0gQ2FzYSRIYWJpdGFjacOzbiwNCiAgICAgICAgICAgQUFBID0gaWYgKCJBQUEiICVpbiUgU1MkQWN0dWFsKSB7DQogICAgICAgICAgICAgbGFiZWxfY3VycmVuY3kocHJlZml4PSIkIixiaWcubWFyaz0iLiIsZGVjaW1hbC5tYXJrPSIsIikoU1MkQUFBJHRvdGFsX0FBQSkNCiAgICAgICAgICAgfSwNCiAgICAgICAgICAgYEFpci1lYD0gaWYgKCJFRSIgJWluJSBTUyRBY3R1YWwpIHsNCiAgICAgICAgICAgICBsYWJlbF9jdXJyZW5jeShwcmVmaXg9IiQiLGJpZy5tYXJrPSIuIixkZWNpbWFsLm1hcms9IiwiKShTUyRFRSR0b3RhbF9FRSkNCiAgICAgICAgICAgfSwNCiAgICAgICAgICAgTW92aXN0YXIgPSBpZiAoIldlYiIgJWluJSBTUyRBY3R1YWwpIHsNCiAgICAgICAgICAgICBsYWJlbF9jdXJyZW5jeShwcmVmaXg9IiQiLGJpZy5tYXJrPSIuIixkZWNpbWFsLm1hcms9IiwiKShTUyRXZWIkdG90YWxfV2ViKQ0KICAgICAgICAgICB9LA0KICAgICAgICAgICBgVG90YWwgU2VydmljaW9zYCA9IGxhYmVsX2N1cnJlbmN5KHByZWZpeCA9ICIkIiwgYmlnLm1hcms9Ii4iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWwubWFyaz0iLCIpKChpZigiQUFBIiAlaW4lIFNTJEFjdHVhbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1MkQUFBJHRvdGFsX0FBQSB9IGVsc2UgeyAwIH0pICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmICgiRUUiICVpbiUgU1MkQWN0dWFsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1MkRUUkdG90YWxfRUUgfSBlbHNlIHsgMCB9KSArIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKCJXZWIiICVpbiUgU1MkQWN0dWFsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1MkV2ViJHRvdGFsX1dlYiB9IGVsc2UgeyAwIH0pKQ0KKQ0KYGBgDQoNCg0KKioqDQpMYSBzaWd1aWVudGUgdGFibGEgY29ycmVzcG9uZGUgYSBsb3MgdmFsb3JlcyBkZWwgbWVzIHBhc2FkbzoNCg0KYGBge3J9DQojIGdldHdkKCkNCnRhYmxhX2FudGVyaW9yIDwtIHBhc3RlMChpZiAoY3VycmVudF93ZCA9PSAiL2hvbWUvbW9uby9Eb2N1bWVudHMvRGlzdF9TUyIpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuL2lucHV0L0NvbnNfYW50LyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLi4vaW5wdXQvQ29uc19hbnQvIg0KICAgICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgIGx1YnJpZGF0ZTo6eWVhcihob3kpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9udGgoaG95KTwxMCl7Il8wIn0gZWxzZSB7Il8ifSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgbW9udGgoaG95IC0gMzApLCAiX0Rpc3RfU1MucG5nIikNCnRleHRvX2FsdCA8LSBwYXN0ZTAoIkxhIGltYWdlbiAiLCB0YWJsYV9hbnRlcmlvciwgIiBubyBjYXJnYSIpDQppbWFnZW5fYWN0dWFsIDwtIGh0bWx0b29sczo6aW1nKHNyYyA9IHRhYmxhX2FudGVyaW9yLCBhbHQgPSBhcy5jaGFyYWN0ZXIodGV4dG9fYWx0KSkNCmltYWdlbl9hY3R1YWwNCmBgYA0KDQoNCiMjIyMjIyBbVGFibGEgZGUgY29udGVuaWRvc10oI1RhYmxhKQ0KKioqDQoNCg==