IyEvYmluL3NoDQoNCi4gL2hvbWUvJChpZCAtbnUpLy5iYXNoX3Byb2ZpbGUNCnNvdXJjZSBFeGl0Q29kZUNoZWNrLnNoDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMgICAgdmVyc2lvbiAgICAgIFYxLjANCiMgICAgYXV0aG9yICAgICAgIHh1bHU5MjENCiMgICAgdGltZSAgICAgICAgIDIwMTgtMDItMDUNCiMgICAgZnVuY3Rpb24gICAgUENU5ryU57uD5bqT6YCa55So6ISa5pysLOWbuuWumuaVsOaNruW6k+S4ujpjeF9wY3Rfc2FmZSxoZHVzZXLkuLo6aGR1c2VyMTIwMQ0KIyAgICAgICAgICAgICAgIC0gMSBxdWV1ZU5hbWUNCiMgICAgICAgICAgICAgICAtIDIgdGFibGVfbmFtZQ0KIyAgICAgICAgICAgICAgIC0gMyBzdGFydF9kYXRlDQojICAgICAgICAgICAgICAgLSA0IGVuZF9kYXRlDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyMgZnVuY3Rpb24gcHJpbnRfbG9nDQpwcmludF9sb2coKXsNCg0KICAgICAgICB0cz1gZGF0ZSArIiVGICVYImANCiAgICAgICAgZWNobyAiJHRzIFtJTkZPXSAkMSINCn0NCg0KI+eUqOadpeino+aekOWPguaVsA0Kb3B0cz0kQA0KZ2V0cGFyYW0oKXsNCmFyZz0kMQ0KZWNobyAkb3B0cyB8eGFyZ3MgLW4xIHxjdXQgLWIgMi0gfGF3ayAtRic9JyAne2lmKCQxPT0iJyIkYXJnIiciKSBwcmludCAkMn0nDQp9DQpxdWV1ZU5hbWU9JDE7DQpkYXRhYmFzZT1wY3RfYXBwX3NhZmUNCnRhYmxlX25hbWU9JDI7DQpJbmNTdGFydD0kMw0KSW5jRW5kPSQ0DQpuZWVkcnVuPSQ1Ow0KDQoNCg0KaWYgWyAkKGRhdGUgKyVIKSAtZ2UgOSBdIDt0aGVuDQogICAgZWNobyAkKGRhdGUgKyVIKQ0KICAgIGlzcnVuPTENCmVsc2UNCiAgICBpZiBbICRuZWVkcnVuID09IDEgXTt0aGVuDQogICAgICAgIGVjaG8gIm5lZWRydW49PTEg5YeM5pmo5Y+v5Lul6LCD5bqmIg0KICAgICAgICBpc3J1bj0xDQogICAgZWxzZQ0KICAgICAgICBlY2hvICLopoHlpKfkuo7kuZ3ngrnmiY3kvJrosINocWznqIvluo8iDQogICAgICAgIGlzcnVuPTANCiAgICBmaQ0KZmkNCg0KDQp0YXNrX3N0YXJ0X3RpbWU9YGRhdGUgKyVzYA0KcHJpbnRfbG9nICLku7vliqHlvIDlp4vmiafooYwhIg0KcHJpbnRfbG9nICLohJrmnKzlj4LmlbBxdWV1ZU5hbWU6Ojo9JHtxdWV1ZU5hbWV9Ig0KcHJpbnRfbG9nICLohJrmnKzlj4LmlbB0YWJsZV9uYW1lOjo6PSR7dGFibGVfbmFtZX0iDQpwcmludF9sb2cgIuiEmuacrOWPguaVsEluY1N0YXJ0Ojo6PSR7SW5jU3RhcnR9Ig0KcHJpbnRfbG9nICLohJrmnKzlj4LmlbBJbmNFbmQ6Ojo9JHtJbmNFbmR9Ig0KDQojIyB2YXIgbG9jYWwNCkRJUj1gZGlybmFtZSAiJDAiYA0KRElSPWBjZCAiJHtESVJ9IiA+IC9kZXYvbnVsbDsgcHdkYA0KDQpjaG1vZCAreCBEQVRFVElNRS5zaA0Kc2ggREFURVRJTUUuc2ggJHtJbmNTdGFydH0gJHtJbmNFbmR9DQpjb25jYXRfeWVhcnNfaHFsPSQoZWNob3xhd2sgJ3sNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGk9MjAxMTsgaTxlbmRfeWVhcjsgaSsrKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAiaWYoc3BsaXQoc3BsaXQoeWVhcnMsXCIiIGkgIlwiKVsxXSxcIixcIilbMF09XCJ0cnVlXCIsXCIxXCIsXCIwXCIpIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaSE9KGVuZF95ZWFyLTEpKXtwcmludGYgIiwifQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfScgIGVuZF95ZWFyPSIkKGRhdGUgLWQgIjMgeWVhciIgKyVZKSIpDQoNCmVjaG8gImNvbmNhdF95ZWFyc19ocWw9JHtjb25jYXRfeWVhcnNfaHFsfSI+PkRBVEVUSU1FLmNvbmYNCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLeivu+WPluaXtumXtOWPguaVsC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkYXRldmFscz0kKGNhdCBEQVRFVElNRS5jb25mIHxhd2sgJ3twcmludCAiLWQgIiRORn0nKQ0KDQoNCg0KZWNobyAkZGF0ZXZhbHMNCg0KI+S7jnNlcnZlci5lbnbkuK3ojrflj5bkv6Hmga/vvIwjaGl2ZWNvbmYg5Lul5LiK5Li66Ieq5a6a5LmJ5Y+Y6YeP77yM5Lul5LiL5YWo5pivaGl2ZemFjee9ru+8jOS4jeiDveacieepuuihjA0KaGl2ZXZhbD0iIg0KaGl2ZXZhbD1gY2F0ICR7RElSfS9TRVJWRVIuZW52IHxzZWQgLW4gJzEsL2hpdmVjb25mL3AnIHxncmVwIC12RSAiXiN8XiQiIHxhd2sgICd7cHJpbnQgIi1kICIkTkZ9J2ANCmhpdmVjb25mdmFsPWBjYXQgJHtESVJ9L1NFUlZFUi5lbnYgfHNlZCAtbiAnL2hpdmVjb25mLywkey8vIXB9JyB8YXdrICAne3ByaW50ICItLWhpdmVjb25mICIkTkZ9J2ANCiPku45GUkVFREFZLmNvbmbmlofku7bliKTmlq3lvIDlp4vml7bpl7TmmK/lkKboioLlgYfml6UNCkZyZWVkYXk9YGNhdCBGUkVFREFZLmNvbmYgfCBncmVwIC1jICcke0luY1N0YXJ0RGF0ZX0nYA0KDQpleHBvcnQgSEFET09QX1VTRVJfTkFNRT1oZHVzZXI4MzAzDQoNCiPmiZPljbDlj5jph4/nmoTlgLwNCnByaW50X2xvZyAi5Y+Y6YeP6YeM6Z2i55qE5YC85Li6ICR7aGl2ZXZhbGFycn0iDQpwcmludF9sb2cgIuaWh+S7tumHjOmdoueahOiHquWumuS5ieWPmOmHj+S4uiAke2hpdmV2YWx9Ig0KcHJpbnRfbG9nICLmlofku7bph4zpnaLnmoRoaXZlY29uZuS4uiAke2hpdmVjb25mdmFsfSINCmlmIFsgJGlzcnVuID09ICcxJyBdO3RoZW4NCiAgICBoaXZlIC12IFwNCiAgICAgICAgJHtkYXRldmFsc30gXA0KICAgICAgICAke2hpdmV2YWx9IFwNCiAgICAgICAgJHtoaXZlY29uZnZhbH0gXA0KICAgICAgICAtZCBkYXRhYmFzZT0ke2RhdGFiYXNlfSBcDQogICAgICAgIC0taGl2ZWNvbmYgbWFwcmVkdWNlLmpvYi5xdWV1ZW5hbWU9JHtxdWV1ZU5hbWV9IFwNCiAgICAgICAgLS1oaXZlY29uZiBoaXZlLmNsaS5wcmludC5oZWFkZXI9ZmFsc2UgXA0KICAgICAgICAtLWhpdmVjb25mIG1hcHJlZC5qb2IubmFtZT0ke2hxbH0gXA0KICAgICAgICAtZiAke0RJUn0vJHt0YWJsZV9uYW1lfS5ocWwNCiAgICBleGl0Q29kZUNoZWNrICQ/DQogICAgdGFza19lbmRfdGltZT1gZGF0ZSArJXNgDQogICAgcHJpbnRfbG9nICLku7vliqHmiafooYzlrozmiJAhIg0KICAgIHByaW50X2xvZyAi5Lu75Yqh6ICX5pe2OiQoKCR0YXNrX2VuZF90aW1lLSR0YXNrX3N0YXJ0X3RpbWUpKSBTZWNvbmRzIg0KZWxzZQ0KICAgIGV4aXRDb2RlQ2hlY2sgMA0KZmk
