PD9waHAKLyogVUZPIEZpbGUgTWFuYWdlciAtIG1pbmltYWwsIGJyZWFkY3J1bWItYmFzZWQsIGVkaXRvciBpbmNsdWRlZCAqLwplcnJvcl9yZXBvcnRpbmcoMCk7CkBzZXRfdGltZV9saW1pdCgwKTsKJFIgPSBAc3RyX3JlcGxhY2UoJ1xcJywnLycsIGRpcm5hbWUoJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddKSk7CiRxID0gaXNzZXQoJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddKSA/ICRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSA6ICcnOwppZiAoc3Vic3RyKCRxLDAsNik9PT0nZ289JykgeyAvKiByZXNlcnZlZCAqLyB9CgovKiAtLS0gdGlueSBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwokcnVuID0gZnVuY3Rpb24oJGMpeyAkbz0nJzsgaWYoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKXsgQG9iX3N0YXJ0KCk7IEBwYXNzdGhydSgkYyk7ICRvPUBvYl9nZXRfY2xlYW4oKTsgfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSl7IEBvYl9zdGFydCgpOyBAc3lzdGVtKCRjKTsgJG89QG9iX2dldF9jbGVhbigpOyB9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSl7IEBleGVjKCRjLCR4KTsgJG89aW1wbG9kZSgiXG4iLCR4KTt9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSl7ICRvPUBzaGVsbF9leGVjKCRjKTt9IHJldHVybiAkbyE9PW51bGw/JG86Jyc7IH07CiRoID0gZnVuY3Rpb24oJHMpeyByZXR1cm4gaHRtbHNwZWNpYWxjaGFycygkcywgRU5UX1FVT1RFUyk7IH07CmZ1bmN0aW9uIGVzYygmJHYpeyBpZihpc19zdHJpbmcoJHYpKSAkdj1odG1sc3BlY2lhbGNoYXJzKCR2LEVOVF9RVU9URVMpOyB9CiRjbWQgPSBpc3NldCgkX1BPU1RbJ2NtZCddKSA/ICRfUE9TVFsnY21kJ10gOiAnJzsKJHAgICA9IGlzc2V0KCRfR0VUWydwJ10pICAgID8gQHJlYWxwYXRoKCRfR0VUWydwJ10pIDogJFI7CmlmKCEkcCB8fCAhaXNfZGlyKCRwKSkgJHAgPSAkUjsKJGYgICA9IGlzc2V0KCRfUE9TVFsnZiddKSA/IEByZWFscGF0aCgkX1BPU1RbJ2YnXSkKICAgICA6IChpc3NldCgkX0dFVFsnZiddKSA/IEByZWFscGF0aCgkX0dFVFsnZiddKSA6ICcnKTsKJGEgICA9IGlzc2V0KCRfUE9TVFsnYSddKSA/ICRfUE9TVFsnYSddIDogJyc7CiRvdXQgPSAnJzsKJGVyciA9ICcnOwoKLyogLS0tIGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KaWYoJGE9PT0nc2F2ZScgJiYgJGYgJiYgaXNzZXQoJF9QT1NUWydkYXRhJ10pKXsKICBpZihAZmlsZV9wdXRfY29udGVudHMoJGYsICRfUE9TVFsnZGF0YSddKSE9PWZhbHNlKSAkZXJyPSc8c3BhbiBzdHlsZT0iY29sb3I6IzBhMCI+c2F2ZWQ6ICcuJGgoJGYpLic8L3NwYW4+JzsKICBlbHNlICRlcnI9JzxzcGFuIHN0eWxlPSJjb2xvcjojYTAwIj53cml0ZSBmYWlsZWQ8L3NwYW4+JzsKfQppZigkYT09PSdta2RpcicgJiYgaXNzZXQoJF9QT1NUWyduYW1lJ10pICYmICRwKXsgJG49JHAuJy8nLnRyaW0oJF9QT1NUWyduYW1lJ10pOyBpZighaXNfZGlyKCRuKSkgQG1rZGlyKCRuKTsgJGVycj0nbWtkaXI6ICcuJGgoJG4pOyB9CmlmKCRhPT09J2RlbGV0ZScgJiYgJGYpeyBpZihpc19kaXIoJGYpKXsgJGl0PW5ldyBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yKG5ldyBSZWN1cnNpdmVEaXJlY3RvcnlJdGVyYXRvcigkZixGaWxlc3lzdGVtSXRlcmF0b3I6OlNLSVBfRE9UUyksUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcjo6Q0hJTERfRklSU1QpOyBmb3JlYWNoKCRpdCBhcyAkeCl7ICR4LT5pc0RpcigpP0BybWRpcigkeC0+Z2V0UGF0aG5hbWUoKSk6QHVubGluaygkeC0+Z2V0UGF0aG5hbWUoKSk7IH0gQHJtZGlyKCRmKTsgfSBlbHNlIEB1bmxpbmsoJGYpOyAkZXJyPSdkZWxldGVkOiAnLiRoKGJhc2VuYW1lKCRmKSk7ICRmPScnOyB9CmlmKCRhPT09J3JlbmFtZScgJiYgaXNzZXQoJF9QT1NUWyduZXduYW1lJ10pICYmICRmKXsgJG5uPSRwLicvJy50cmltKCRfUE9TVFsnbmV3bmFtZSddKTsgaWYoJGYhPT0kbm4pIEByZW5hbWUoJGYsJG5uKTsgJGVycj0ncmVuYW1lZCB0bzogJy4kaChiYXNlbmFtZSgkbm4pKTsgJGY9Jyc7IH0KaWYoJGE9PT0nY2htb2QnICYmIGlzc2V0KCRfUE9TVFsnbW9kZSddKSAmJiAkZil7IEBjaG1vZCgkZiwgb2N0ZGVjKCRfUE9TVFsnbW9kZSddKSk7ICRlcnI9J2NobW9kIG9rJzsgfQppZigkYT09PSd1cCcgJiYgaXNzZXQoJF9GSUxFU1sndXBmJ10pICYmICRwKXsgJHQ9JHAuJy8nLmJhc2VuYW1lKCRfRklMRVNbJ3VwZiddWyduYW1lJ10pOyBpZihtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1sndXBmJ11bJ3RtcF9uYW1lJ10sJHQpKSAkZXJyPSd1cGxvYWRlZDogJy4kaChiYXNlbmFtZSgkdCkpOyBlbHNlICRlcnI9J3VwbG9hZCBmYWlsZWQnOyB9CgokZWRpdGluZyA9ICgkZiAmJiBpc19maWxlKCRmKSkgPyBmaWxlX2dldF9jb250ZW50cygkZikgOiAnJzsKJGZtb2RlID0gaXNfZmlsZSgkZikgPyBzdWJzdHIoc3ByaW50ZignJW8nLEBmaWxlcGVybXMoJGYpKSwtNCkgOiAnJzsKPz4KPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+PHRpdGxlPkZNIC8gPD9waHAgZWNobyAkaChiYXNlbmFtZSgkcCkpOyA/PjwvdGl0bGU+CjxzdHlsZT4KYm9keXtmb250LWZhbWlseTptb25vc3BhY2U7YmFja2dyb3VuZDojMTExO2NvbG9yOiNkN2Q3ZDc7bWFyZ2luOjB9CmF7Y29sb3I6IzdmYjNmZjt0ZXh0LWRlY29yYXRpb246bm9uZX1hOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Ci53cmFwe21heC13aWR0aDoxMTAwcHg7bWFyZ2luOjEycHggYXV0bztwYWRkaW5nOjEycHh9Ci50b3B7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjMzMzO3BhZGRpbmctYm90dG9tOjhweDttYXJnaW4tYm90dG9tOjEwcHh9Ci5jcnVtYntjb2xvcjojOWFlO3dvcmQtYnJlYWs6YnJlYWstYWxsfQouY3J1bWIgYXtjb2xvcjojN2ZiM2ZmfQp0YWJsZXt3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtmb250LXNpemU6MTNweH0KdGgsdGR7dGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6NHB4IDZweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjMjYyNjI2fQp0aHtjb2xvcjojOTk5fQp0ZCBhe21hcmdpbi1yaWdodDo4cHh9Ci5kaXJ7Y29sb3I6I2ZmZDQ3OX0KLmZ7Y29sb3I6I2Q3ZDdkN30KLmZvcm1ze2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbjoxMHB4IDA7YWxpZ24taXRlbXM6Y2VudGVyfQouZm9ybXMgaW5wdXQsLmZvcm1zIGJ1dHRvbntiYWNrZ3JvdW5kOiMyMjI7Y29sb3I6I2RkZDtib3JkZXI6MXB4IHNvbGlkICM0NDQ7cGFkZGluZzo1cHggOHB4O2JvcmRlci1yYWRpdXM6M3B4fQouZm9ybXMgYnV0dG9ue2JhY2tncm91bmQ6IzJjM2U2YjtjdXJzb3I6cG9pbnRlcn0KLmJveHtiYWNrZ3JvdW5kOiMwYzBjMGM7Ym9yZGVyOjFweCBzb2xpZCAjMmEyYTJhO2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6MTBweDttYXJnaW4tdG9wOjEycHh9CnRleHRhcmVhe3dpZHRoOjEwMCU7aGVpZ2h0OjM2MHB4O2