15 de junio de 2021
Se muestra la comparacion entre todas as condiciones para los genes de interes en ketone bodies







LS0tDQp0aXRsZTogImdlbmVzIGtldG9uZSBlbiBBRFQgdHJlYXRtZW50Ig0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCjE1IGRlIGp1bmlvIGRlIDIwMjENCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0NCiNjYXJnbyBsb3MgcGFxdWV0ZXMgeSBsYSBkYXRhDQoNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZ2dwdWJyKQ0KbGlicmFyeShrbml0cikNCg0KZXhwID0gcmVhZFJEUygnZXhwcmVzaW9uX2dlbmVfbmFtZV9qdW5pb18yMDIxJykNCmNsaW4gPSByZWFkUkRTKCdjbGluX3Byb2xpamFfanVuaW9fMjAyMScpDQpgYGANCg0KDQoNCmBgYHtyIGluY2x1ZGU9RkFMU0V9DQojc2VsZWNjaW9ubyBsb3MgZ2VuZXMgeSBsb3MgZGF0YXNldHMNCiMjIyMjIyMjDQojIHBhcmEgdmVyIHZhcmlvcyBnZW5lcyBhbCBtaXNtbyB0aWVtcG8NCiMjIyMjIyMNCg0KIyBsb3MgZ2VuZXMgcXVlIHF1aWVybyBtaXJhcg0KZ2VuZXMucXVpZXJvID0gYygnQUNBVDEnLCAnQkRIMScsICJPWENUMSIsICdITUdDTCcsICdTTEMxNkExJywgJ1NMQzE2QTcnLCAnSE1HQ1MyJykNCg0KaWYoIGFsbChnZW5lcy5xdWllcm8gJWluJSBjb2xuYW1lcyhleHApKSl7DQogIHByaW50KCd0b2RvcyBsb3MgZ2VuZXMgZXN0YW4gZW4gZWwgZGF0YXNldCcpfSBlbHNlIHsNCiAgICBmYWx0YW50ZXMgPSBnZW5lcy5xdWllcm9bd2hpY2goIWdlbmVzLnF1aWVybyAlaW4lIGNvbG5hbWVzKGV4cCkpXQ0KICAgIHByaW50KHBhc3RlKCdlbCBvIGxvcyBnZW5lcyBxdWUgZmFsdGFuOicsIGZhbHRhbnRlcykpDQogIH0NCg0KIyBlbiBjYXNvIGRlIHF1ZXJlciBtb2RpZmljYXIgbyByZXZpc2FyIGxvcyBnZW5lcyBxdWUgcXVpZXJvDQojZ3JlcCgnQUNFJywgY29sbmFtZXMoZXhwKSwgdmFsdWUgPSBUKQ0KDQojZ2VuZXMucXVpZXJvID0gYygnUEdQJywgIkhNT1gxIikNCg0KIyBsb3MgZW5zYXlvcyBxdWUgcXVpZXJvIG1pcmFyDQplbnNheW9zID0gbGV2ZWxzKGNsaW4kRXhwZXJpbWVudG8pDQoNCmVuc2F5b3MucXVpZXJvID0gYygnR0VPRDMxNTI4JywNCiAgICAgICMgICAgICAgICAgICAnR1NFNTQ0NjAnLA0KICAgICAgIyAgICAgICAgICAgICdQUkpFQjI1NTQyJywNCiAgICAgICAgICAgICAgICAgICdQUkpOQTIwOTk3OCcsDQogICAgICAgICAgICAgICAgICAnUFJKTkEyMTk1MDcnLA0KICAgICAgICAgICAgICAgICAgJ1BSSk5BMjMyMDQwJw0KICAgICAgICAgICAgICAgICAgKQ0KYGBgDQoNCg0KDQpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KDQojIE5PIENPUlJFUg0KIyBncmFmaWNvcyBiYXNpY29zIA0KIyBIQUdPIExPUyBHUkFGSUNPDQpnZW5lc19pbnQgPSBnZW5lcy5xdWllcm8NCg0KDQpmb3IgKGkgaW4gMTpsZW5ndGgoZ2VuZXNfaW50KSl7DQogICMgcHJlcGFybyBsYSBkYXRhDQogIGdlbiA9IGdlbmVzX2ludFtpXQ0KICBleHAuZ2VuID0gZXhwWyxnZW5dDQogIGV4cC5nZW4ubCA9IGxvZzIoZXhwLmdlbiArIDEpDQogIGdydXBvID0gY2xpbiRncnVwbw0KICBleHBlcmltZW50byA9IGNsaW4kRXhwZXJpbWVudG8NCiAgcGFjaWVudGVzID0gY2xpbiRQYWNpZW50ZQ0KICBkYXRpdG9zID0gZGF0YS5mcmFtZShncnVwbywgZXhwZXJpbWVudG8sIGV4cC5nZW4sIGV4cC5nZW4ubCwgcGFjaWVudGVzICkNCg0KICAjIGdyYWZpY28NCiAgcGxvdGVvID0gZ2dwbG90KGRhdGEgPSBkYXRpdG9zICU+JSBmaWx0ZXIoZXhwZXJpbWVudG8gJWluJSBlbnNheW9zLnF1aWVybyApLCBhZXMoeD1ncnVwbywgeT1leHAuZ2VuLmwgKSkgKw0KICAgIGdlb21faml0dGVyKGFlcyhjb2xvcj1leHBlcmltZW50byksIHNpemU9Mywgd2lkdGggPSAwLjEpKw0KICAgIHhsYWIoTlVMTCkgKw0KICAgIHlsYWIocGFzdGUoZ2VuLCAiZXhwcmVzc2lvbiBcbiBsb2cyIChub3JtIGNvdW50cyArMSkiKSkgKw0KICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArDQogICAgdGhlbWVfYncoKSArDQogICAgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksDQogICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgICAgICAgIHBsb3QudGl0bGUgPWVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0PTEpKSArIywNCiAgICAgICAgICAjbGVnZW5kLnBvc2l0aW9uID0gJ25vbmUnKSArICAgIyBwYXJhIHNhY2FyIGxhIGxleWVuZGENCiAgICBzdGF0X3N1bW1hcnkoZnVuPW1lYW4sDQogICAgICAgICAgICAgICAgIGdlb209InBvaW50IiwNCiAgICAgICAgICAgICAgICAgc2hhcGU9ICdfJywNCiAgICAgICAgICAgICAgICAgc2l6ZT0xMCkNCiAgIyBpbXByaW1vDQogICAgcHJpbnQocGxvdGVvKQ0KICAgIA0KICAgICMgbG8gYWdyZWdvIGEgcHcNCiAgDQogICMgZ3VhcmRvIGVsIHBsb3QNCiAgYXNzaWduKHBhc3RlKGdlbiwncGxvdGVvX0RHRScsIHNlcCA9ICdfJyksIHBsb3RlbyAgKQ0KfQ0KDQpgYGANCg0KDQoNCg0KYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0NCiNjb21wb25lciB1bmEgZmlndXJhIHVuaWZpY2FkYSwgZXN0YSBwYXJ0ZSBsYSBlc3RveSBkZXNhcnJvbGxhbmRvIGFob3JhDQpsaWJyYXJ5KHBhdGNod29yaykNCiMgaHR0cHM6Ly9wYXRjaHdvcmsuZGF0YS1pbWFnaW5pc3QuY29tL2luZGV4Lmh0bWwNCmdyYWZpY29zID0gZ3JlcCgnKnBsb3Rlb19ER0UnLCBscygpLCB2YWx1ZSA9IFQpDQoNCmdldChncmFmaWNvc1sxXSkgKyBnZXQoZ3JhZmljb3NbMl0pICsgIGdldChncmFmaWNvc1szXSkgK2dldChncmFmaWNvc1s0XSkgKyBwbG90X2xheW91dChndWlkZXMgPSAnY29sbGVjdCcpDQpgYGANCg0KDQoNCmBgYHtyIGluY2x1ZGU9RkFMU0V9DQojIHBhcmEgdGVzdGVhciBsYSBub3JtYWxpZGFkIGRlIHRvZG8gZXN0bw0KZ2VuZXNfaW50ID0gZ2VuZXMucXVpZXJvDQoNCmdlbmVzPWMoKQ0KZXhwLm5vcm09YygpDQpleHAubC5ub3JtPWMoKQ0KaWd1YWwudmFyID0gYygpDQppZ3VhbC52YXIubD1jKCkNCg0KZm9yIChpIGluIDE6bGVuZ3RoKGdlbmVzX2ludCkpew0KICBnZW4gPSBnZW5lc19pbnRbaV0NCiAgZXhwLmdlbiA9IGV4cFssZ2VuXQ0KICBleHAuZ2VuLmwgPSBsb2cyKGV4cC5nZW4gKyAxKQ0KICBncnVwbyA9IGNsaW4kZ3J1cG8NCiAgZXhwZXJpbWVudG8gPSBjbGluJEV4cGVyaW1lbnRvDQogIHBhY2llbnRlcyA9IGNsaW4kUGFjaWVudGUNCg0KDQoNCiAgbm9yID0gc2hhcGlyby50ZXN0KGV4cC5nZW4pICNFbCBwIG1lIHRpZW5lIHF1ZSBkYXIgbWF5b3IgYSAwLjA1ICANCiAgbm9yLmwgPSBzaGFwaXJvLnRlc3QoZXhwLmdlbi5sKQ0KDQoNCiAgDQogICMgIyAzLiBMQVMgRE9TIFBPQkxBQ0lPTkVTIFRJRU5FTiBMQSBNSVNNQSBWQVJJQU5aQT8gVElFTkUgUVVFIFNFUiBDT04gMiBHUlVQT1MNCiAgIyByZXMuZnRlc3QgPC0gdmFyLnRlc3QoZXhwLmdlbiB+IGdydXBvKSAjIEVsIHAgbWUgdGllbmUgcXVlIGRhciBtYXlvciBhIDAuMDUgIA0KICAjIHJlcy5mdGVzdC5sIDwtIHZhci50ZXN0KGV4cC5nZW4ubCB+IGdydXBvKQ0KICBnZW5lc1tpXSA9IGdlbg0KICBleHAubm9ybVtpXT1ub3IkcC52YWx1ZT4wLjA1DQogIGV4cC5sLm5vcm1baV09bm9yLmwkcC52YWx1ZT4wLjA1DQogICMgaWd1YWwudmFyW2ldID0gcmVzLmZ0ZXN0JHAudmFsdWUgPiAwLjA1DQogICMgaWd1YWwudmFyLmxbaV09IHJlcy5mdGVzdC5sJHAudmFsdWUgPiAwLjA1DQp9DQoNCnByZXN1cCA9IGRhdGEuZnJhbWUoZ2VuZXMsIGV4cC5ub3JtLCBleHAubC5ub3JtKQ0Ka2FibGUocHJlc3VwKQ0KYGBgDQoNCg0KYGBge3IgaW5jbHVkZT1GQUxTRX0NCiMgcGFyYSBnZW5lcmFyIGxpc3RhIGRlIHRvZGFzIGxhcyBjb21iaW5hY2lvbmVzDQp2YWxvcmVzID0gYXMuY2hhcmFjdGVyKGxldmVscyhjbGluJGdydXBvKSkNCmxpc3RhID0gbGlzdCgpDQoNCiNOTyBTRSBQT1JRVUUgREUgRVNUQSBGT1JNQSBOTyBNRSBGVU5DSU9OQQ0KIyBmb3IgKGkgaW4gMToobGVuZ3RoKGxldmVscyhjbGluJGdydXBvKSktMSkpew0KIyAgIGZvciAoaiBpbiAyOmxlbmd0aCgobGV2ZWxzKGNsaW4kZ3J1cG8pKSkpew0KIyAgICAgaWYgKGo+aSl7DQojICAgIGEgPSBhcy5jaGFyYWN0ZXIodmFsb3Jlc1tpXSkNCiMgICAgYiA9IGFzLmNoYXJhY3Rlcih2YWxvcmVzW2pdKQ0KIyAgICBsaXN0aXRhID0gbGlzdChhLGIpDQojICAgIGxpc3RhID0gYXBwZW5kKGxpc3RhLCBsaXN0KGxpc3RpdGEpKQ0KIyAgICAgfQ0KIyAgIH0NCiMgDQojIH0NCg0KDQpmb3IgKGkgaW4gMToobGVuZ3RoKGxldmVscyhjbGluJGdydXBvKSktMSkpew0KICBmb3IgKGogaW4gMjpsZW5ndGgoKGxldmVscyhjbGluJGdydXBvKSkpKXsNCiAgICBpZiAoaj5pKXsNCiAgICAgIGxpc3RpdGEgPSBjKGksaikNCiAgICAgIGxpc3RhID0gYXBwZW5kKGxpc3RhLCBsaXN0KGxpc3RpdGEpKQ0KICAgIH0NCiAgfQ0KDQp9DQpgYGANCg0KDQoNCg0KYGBge3IgZXZhbD1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0NCiMgTUVUT0RPIENPTiBTVEFUX0NPTVBBUkVfTUVOQVMNCiNoYWNlciBsb3MgZ3JhZmljb3MgY29uIGxpbmVhcyBjb25lY3RvcmFzIHkgcHJ1ZWJhIGRlIHQgcGFyZWFkYSAod2lsY294KQ0KDQpnZW5lc19pbnQgPSBnZW5lcy5xdWllcm8NCg0KDQpmb3IgKGkgaW4gMTpsZW5ndGgoZ2VuZXNfaW50KSl7DQogICMgcHJlcGFybyBsYSBkYXRhDQogIGdlbiA9IGdlbmVzX2ludFtpXQ0KICBleHAuZ2VuID0gZXhwWyxnZW5dDQogIGV4cC5nZW4ubCA9IGxvZzIoZXhwLmdlbiArIDEpDQogIGdydXBvID0gY2xpbiRncnVwbw0KICBleHBlcmltZW50byA9IGNsaW4kRXhwZXJpbWVudG8NCiAgcGFjaWVudGVzID0gY2xpbiRQYWNpZW50ZQ0KICBkYXRpdG9zID0gZGF0YS5mcmFtZShncnVwbywgZXhwZXJpbWVudG8sIGV4cC5nZW4sIGV4cC5nZW4ubCwgcGFjaWVudGVzICkNCiAgDQogIGRhdGEuc3RhdC5wYWlyZWQgPSBkYXRpdG9zICU+JSBmaWx0ZXIoZXhwZXJpbWVudG8gJWluJSBjKCdQUkpOQTIwOTk3OCcsJ1BSSk5BMjE5NTA3JykpDQogIGV4cC5wcmUgPSBkYXRhLnN0YXQucGFpcmVkICU+JSBhcnJhbmdlKHBhY2llbnRlcykgJT4lIGZpbHRlcihncnVwbyA9PSAnUHJpbWFyeSBUdW1vcicpICU+JSBkcGx5cjo6c2VsZWN0KGV4cC5nZW4pDQogIGV4cC5wcmUgPSBhcy5udW1lcmljKGV4cC5wcmUkZXhwLmdlbikNCiAgZXhwLnBvc3QgPSBkYXRhLnN0YXQucGFpcmVkICU+JSBhcnJhbmdlKHBhY2llbnRlcykgJT4lIGZpbHRlcihncnVwbyA9PSAnUHJpbWFyeSBwb3N0IEFEVCcpICU+JSBkcGx5cjo6c2VsZWN0KGV4cC5nZW4pDQogIGV4cC5wb3N0ID0gYXMubnVtZXJpYyhleHAucG9zdCRleHAuZ2VuKQ0KICBnZW5zdGF0ID0gd2lsY294LnRlc3QoZXhwLnByZSwgZXhwLnBvc3QsIHBhaXJlZCA9IFQpDQoNCiAgIyBncmFmaWNvDQogIHBsb3RlbyA9IGdncGxvdChkYXRhID0gZGF0aXRvcyAlPiUgZmlsdGVyKGV4cGVyaW1lbnRvICVpbiUgZW5zYXlvcy5xdWllcm8gKSwgYWVzKHg9Z3J1cG8sIHk9ZXhwLmdlbi5sICkpICsNCiAgICBnZW9tX3BvaW50KGFlcyhjb2xvcj1leHBlcmltZW50byksIHNpemU9MikrDQogICAgZ2VvbV9saW5lKGFlcyh4ICA9IGdydXBvICwgeSA9IGV4cC5nZW4ubCwgZ3JvdXAgPSBwYWNpZW50ZXMpLCBhbHBoYSA9IDAuNSkgKw0KICAgIHhsYWIoTlVMTCkgKw0KICAgIHlsYWIocGFzdGUoZ2VuLCAiZXhwcmVzc2lvbiBcbiBsb2cyIChub3JtIGNvdW50cyArMSkiKSkgKw0KICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArDQogICAgdGhlbWVfYncoKSArDQogICAgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksDQogICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgICAgICAgIHBsb3QudGl0bGUgPWVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0PTEpKSArIywNCiAgICAgICAgICAjbGVnZW5kLnBvc2l0aW9uID0gJ25vbmUnKSArICAgIyBwYXJhIHNhY2FyIGxhIGxleWVuZGENCiAgICBzdGF0X3N1bW1hcnkoZnVuPW1lYW4sDQogICAgICAgICAgICAgICAgIGdlb209InBvaW50IiwNCiAgICAgICAgICAgICAgICAgc2hhcGU9ICdfJywNCiAgICAgICAgICAgICAgICAgc2l6ZT0xMCkNCiAgIyBpbXByaW1vDQogICAgcHJpbnQocGxvdGVvICsgDQogICAgICAgICAgICBsYWJzKHRpdGxlID0gZ2VuLCBzdWJ0aXRsZSA9ICIgbG9zIGFzdGVyaXNjb3Mgc29uIGxhIGVzdGFkaXN0aWNhIGNvbnRyYSBQcmltYXJ5IHR1bW9yIFxuIGVsIHZhbG9yIG51bWVyaWNvIGVzIGxhIHBydWViYSBhcGFyZWFkYSBlbnRyZSBwcmUgeSBwb3N0IEFEVCIpICsgIA0KICAgICAgICAgICAgZ2dwbG90Mjo6YW5ub3RhdGUoInRleHQiLCB4ID0gMi41LCB5ID0gbWluKGV4cC5nZW4ubCktMSwgbGFiZWwgPSBwYXN0ZShyb3VuZChnZW5zdGF0JHAudmFsdWUsIGRpZ2l0cyA9IDQpKSwgc2l6ZSA9IDQpICsgDQogICAgICAgICAgICANCiAgICAgICAgICAgIyBzdGF0X2NvbXBhcmVfbWVhbnMobGFiZWwgPSAicC5zaWduaWYiLCBtZXRob2QgPSAnd2lsY294LnRlc3QnICwgcmVmLmdyb3VwID0gIlByaW1hcnkgVHVtb3IiICkgICAgDQogICAgICAgICAgICBzdGF0X2NvbXBhcmVfbWVhbnMoY29tcGFyaXNvbnMgPSBsaXN0YSwgbGFiZWwgPSAicC5mb3JtYXQiICkgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgKSAgDQogICAgDQogICAgIyBsbyBhZ3JlZ28gYSBwdw0KICANCiAgIyBndWFyZG8gZWwgcGxvdA0KICBhc3NpZ24ocGFzdGUoZ2VuLCdwbG90ZW9fREdFJywgc2VwID0gJ18nKSwgcGxvdGVvICApDQoNCn0NCg0KICAjICMgZ3JhZmljbyBwYXJhIHVubyBzb2xvDQogICMgcGxvdGVvID0gZ2dwbG90KGRhdGEgPSBkYXRpdG9zICU+JSBmaWx0ZXIoZXhwZXJpbWVudG8gJWluJSBlbnNheW9zLnF1aWVybyApLCBhZXMoeD1ncnVwbywgeT1leHAuZ2VuLmwgKSkgKw0KICAjICAgZ2VvbV9wb2ludChhZXMoY29sb3I9ZXhwZXJpbWVudG8pLCBzaXplPTIpKw0KICAjICAgZ2VvbV9saW5lKGFlcyh4ICA9IGdydXBvICwgeSA9IGV4cC5nZW4ubCwgZ3JvdXAgPSBwYWNpZW50ZXMpKSArDQogICMgICB4bGFiKE5VTEwpICsNCiAgIyAgIHlsYWIocGFzdGUoZ2VuLCAiZXhwcmVzc2lvbiBcbiBsb2cyIChub3JtIGNvdW50cyArMSkiKSkgKw0KICAjICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsNCiAgIyAgIHRoZW1lX2J3KCkgKw0KICAjICAgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksDQogICMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksDQogICMgICAgICAgICBwbG90LnRpdGxlID1lbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwNCiAgIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0PTEpKSArIywNCiAgIyAgICAgICAgICNsZWdlbmQucG9zaXRpb24gPSAnbm9uZScpICsgICAjIHBhcmEgc2FjYXIgbGEgbGV5ZW5kYQ0KICAjICAgc3RhdF9zdW1tYXJ5KGZ1bj1tZWFuLA0KICAjICAgICAgICAgICAgICAgIGdlb209InBvaW50IiwNCiAgIyAgICAgICAgICAgICAgICBzaGFwZT0gJ18nLA0KICAjICAgICAgICAgICAgICAgIHNpemU9MTApDQogICMgIyBpbXByaW1vDQogICMgICBwcmludChwbG90ZW8pDQogICMgICANCiAgICANCiAgICANCg0KDQpgYGANCg0KDQoNCg0KDQoNClNlIG11ZXN0cmEgbGEgY29tcGFyYWNpb24gZW50cmUgdG9kYXMgYXMgY29uZGljaW9uZXMgcGFyYSBsb3MgZ2VuZXMgZGUgaW50ZXJlcyBlbiBrZXRvbmUgYm9kaWVzDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KICAjIGxpYnJhcnkNCmxpYnJhcnkocnN0YXRpeCkNCmxpYnJhcnkoZHBseXIpDQoNCmdlbmVzX2ludCA9IGdlbmVzLnF1aWVybw0KDQoNCmZvciAoaSBpbiAxOmxlbmd0aChnZW5lc19pbnQpKXsNCiAgIyBwcmVwYXJvIGxhIGRhdGENCiAgZ2VuID0gZ2VuZXNfaW50W2ldDQogIGV4cC5nZW4gPSBleHBbLGdlbl0NCiAgZXhwLmdlbi5sID0gbG9nMihleHAuZ2VuICsgMSkNCiAgZ3J1cG8gPSBjbGluJGdydXBvDQogIGV4cGVyaW1lbnRvID0gY2xpbiRFeHBlcmltZW50bw0KICBwYWNpZW50ZXMgPSBjbGluJFBhY2llbnRlDQogIGRhdGl0b3MgPSBkYXRhLmZyYW1lKGdydXBvLCBleHBlcmltZW50bywgZXhwLmdlbiwgZXhwLmdlbi5sLCBwYWNpZW50ZXMgKQ0KDQogIA0KICBteWRmID0gZGF0aXRvc1tkYXRpdG9zJGV4cGVyaW1lbnRvICVpbiUgZW5zYXlvcy5xdWllcm8sXQ0KDQogICAgc3RhdF9wdmFsdWUgPC0gbXlkZiAlPiUgDQogICAgICByc3RhdGl4Ojp3aWxjb3hfdGVzdChleHAuZ2VuLmwgfiBncnVwbykgJT4lDQogICAgICBkcGx5cjo6ZmlsdGVyKHAgPCAwLjA1KSAlPiUgDQogICAgICByc3RhdGl4OjphZGRfc2lnbmlmaWNhbmNlKCJwIikgJT4lICANCiAgICAgIHJzdGF0aXg6OmFkZF95X3Bvc2l0aW9uKCkgIA0KICAgICAgI2RwbHlyOjptdXRhdGUoeS5wb3NpdGlvbiA9IHNlcShtaW4oeS5wb3NpdGlvbiksIG1heCh5LnBvc2l0aW9uKSxsZW5ndGgub3V0ID0gbigpKSkNCiAgICAgIGlmKG5yb3coc3RhdF9wdmFsdWUpPjApeyBzdGF0X3B2YWx1ZSA9IHN0YXRfcHZhbHVlICU+JSANCiAgICAgIGRwbHlyOjptdXRhdGUoeS5wb3NpdGlvbiA9IHNlcShtaW4oeS5wb3NpdGlvbiksIG1heCh5LnBvc2l0aW9uKSxsZW5ndGgub3V0ID0gbigpKSkgfQ0KICAgICAgDQogDQogICAgDQojICAgICAgICAgIGdncGxvdChteWRmLCBhZXMoeD1ncnVwbywgeT1leHAuZ2VuKSkgKyBnZW9tX2JveHBsb3QoKSArDQojICAgICAgICAgICAgZ2dwdWJyOjpzdGF0X3B2YWx1ZV9tYW51YWwoc3RhdF9wdmFsdWUsIGxhYmVsID0gInAuc2lnbmlmIikgKw0KIyAgICAgICAgICAgIHRoZW1lX2J3KGJhc2Vfc2l6ZSA9IDE2KQ0KIyAgIA0KIyAgICAgICAgICANCiMgcCArIGdncHVicjo6c3RhdF9wdmFsdWVfbWFudWFsKHN0YXRfcHZhbHVlLCBsYWJlbCA9ICJwLnNpZ25pZiIpICANCiAgDQogIA0KICANCiAgZGF0YS5zdGF0LnBhaXJlZCA9IGRhdGl0b3MgJT4lIGZpbHRlcihleHBlcmltZW50byAlaW4lIGMoJ1BSSk5BMjA5OTc4JywnUFJKTkEyMTk1MDcnKSkNCiAgZXhwLnByZSA9IGRhdGEuc3RhdC5wYWlyZWQgJT4lIGFycmFuZ2UocGFjaWVudGVzKSAlPiUgZmlsdGVyKGdydXBvID09ICdQcmltYXJ5IFR1bW9yJykgJT4lIGRwbHlyOjpzZWxlY3QoZXhwLmdlbikNCiAgZXhwLnByZSA9IGFzLm51bWVyaWMoZXhwLnByZSRleHAuZ2VuKQ0KICBleHAucG9zdCA9IGRhdGEuc3RhdC5wYWlyZWQgJT4lIGFycmFuZ2UocGFjaWVudGVzKSAlPiUgZmlsdGVyKGdydXBvID09ICdQcmltYXJ5IHBvc3QgQURUJykgJT4lIGRwbHlyOjpzZWxlY3QoZXhwLmdlbikNCiAgZXhwLnBvc3QgPSBhcy5udW1lcmljKGV4cC5wb3N0JGV4cC5nZW4pDQogIGdlbnN0YXQgPSB3aWxjb3gudGVzdChleHAucHJlLCBleHAucG9zdCwgcGFpcmVkID0gVCkNCg0KICAjIGdyYWZpY28NCiAgcGxvdGVvID0gZ2dwbG90KGRhdGEgPSBkYXRpdG9zICU+JSBmaWx0ZXIoZXhwZXJpbWVudG8gJWluJSBlbnNheW9zLnF1aWVybyApLCBhZXMoeD1ncnVwbywgeT1leHAuZ2VuLmwgKSkgKw0KICAgIGdlb21fcG9pbnQoYWVzKGNvbG9yPWV4cGVyaW1lbnRvKSwgc2l6ZT0yKSsNCiAgICBnZW9tX2xpbmUoYWVzKHggID0gZ3J1cG8gLCB5ID0gZXhwLmdlbi5sLCBncm91cCA9IHBhY2llbnRlcyksIGFscGhhID0gMC41KSArDQogICAgeGxhYihOVUxMKSArDQogICAgeWxhYihwYXN0ZShnZW4sICJleHByZXNzaW9uIFxuIGxvZzIgKG5vcm0gY291bnRzICsxKSIpKSArDQogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsNCiAgICB0aGVtZV9idygpICsNCiAgICB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksDQogICAgICAgICAgcGxvdC50aXRsZSA9ZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3Q9MSkpICsjLA0KICAgICAgICAgICNsZWdlbmQucG9zaXRpb24gPSAnbm9uZScpICsgICAjIHBhcmEgc2FjYXIgbGEgbGV5ZW5kYQ0KICAgIHN0YXRfc3VtbWFyeShmdW49bWVhbiwNCiAgICAgICAgICAgICAgICAgZ2VvbT0icG9pbnQiLA0KICAgICAgICAgICAgICAgICBzaGFwZT0gJ18nLA0KICAgICAgICAgICAgICAgICBzaXplPTEwKQ0KICAjIGltcHJpbW8NCiAgICBwcmludChwbG90ZW8gKyANCiAgICAgICAgICAgIGxhYnModGl0bGUgPSBnZW4sIHN1YnRpdGxlID0gIiBzZSBtdWVzdHJhIGVuIGxhIHBhcnRlIHN1cGVyaW9yIGRlbCBncmFmaWNvIGxhIGVzdGFkaXN0aWNhIHBhcmEgY2FkYSBjb21wYXJhY2lvbiBcbiBlbCB2YWxvciBudW1lcmljbyBpbmZlcmlvciBlcyBsYSBwcnVlYmEgYXBhcmVhZGEgZW50cmUgcHJlIHkgcG9zdCBBRFQiKSArICANCiAgICAgICAgICAgIGdncGxvdDI6OmFubm90YXRlKCJ0ZXh0IiwgeCA9IDIuNSwgeSA9IG1pbihleHAuZ2VuLmwpLTEsIGxhYmVsID0gcGFzdGUocm91bmQoZ2Vuc3RhdCRwLnZhbHVlLCBkaWdpdHMgPSA0KSksIHNpemUgPSA0KSArDQogICAgICAgICAgICAjZ2dwdWJyOjpzdGF0X3B2YWx1ZV9tYW51YWwoc3RhdF9wdmFsdWUsIGxhYmVsID0gInAuc2lnbmlmIikgDQogICAgICAgICAgICBnZ3B1YnI6OnN0YXRfcHZhbHVlX21hbnVhbChzdGF0X3B2YWx1ZSwgbGFiZWwgPSAicCIpIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICkgIA0KICAgIA0KICAgICMgbG8gYWdyZWdvIGEgcHcNCiAgDQogICMgZ3VhcmRvIGVsIHBsb3QNCiAgYXNzaWduKHBhc3RlKGdlbiwncGxvdGVvX0RHRScsIHNlcCA9ICdfJyksIHBsb3RlbyAgKQ0KDQp9DQoNCiAgIyAjIGdyYWZpY28gcGFyYSB1bm8gc29sbw0KICAjIHBsb3RlbyA9IGdncGxvdChkYXRhID0gZGF0aXRvcyAlPiUgZmlsdGVyKGV4cGVyaW1lbnRvICVpbiUgZW5zYXlvcy5xdWllcm8gKSwgYWVzKHg9Z3J1cG8sIHk9ZXhwLmdlbi5sICkpICsNCiAgIyAgIGdlb21fcG9pbnQoYWVzKGNvbG9yPWV4cGVyaW1lbnRvKSwgc2l6ZT0yKSsNCiAgIyAgIGdlb21fbGluZShhZXMoeCAgPSBncnVwbyAsIHkgPSBleHAuZ2VuLmwsIGdyb3VwID0gcGFjaWVudGVzKSkgKw0KICAjICAgeGxhYihOVUxMKSArDQogICMgICB5bGFiKHBhc3RlKGdlbiwgImV4cHJlc3Npb24gXG4gbG9nMiAobm9ybSBjb3VudHMgKzEpIikpICsNCiAgIyAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArDQogICMgICB0aGVtZV9idygpICsNCiAgIyAgIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAjICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAjICAgICAgICAgcGxvdC50aXRsZSA9ZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogICMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdD0xKSkgKyMsDQogICMgICAgICAgICAjbGVnZW5kLnBvc2l0aW9uID0gJ25vbmUnKSArICAgIyBwYXJhIHNhY2FyIGxhIGxleWVuZGENCiAgIyAgIHN0YXRfc3VtbWFyeShmdW49bWVhbiwNCiAgIyAgICAgICAgICAgICAgICBnZW9tPSJwb2ludCIsDQogICMgICAgICAgICAgICAgICAgc2hhcGU9ICdfJywNCiAgIyAgICAgICAgICAgICAgICBzaXplPTEwKQ0KICAjICMgaW1wcmltbw0KICAjICAgcHJpbnQocGxvdGVvKQ0KICAjICAgDQogICAgDQogICAgDQoNCg0KYGBgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg==