Advertisement
Synchronizer

Untitled

Nov 2nd, 2014
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 286.36 KB | None | 0 0
  1. JHNoX2lkID0gIlUwRk9TbFZPUjBGT0lFcEpWMEVnVkVWQlRRPT0iOw0KJHNoX3ZlciA9ICIiOw0KJHNoX25hbWUgPSBiYXNlNjRfZGVjb2RlKCRzaF9pZCkuJHNoX3ZlcjsNCiRzaF9tYWludXJsID0gIiI7DQokaHRtbF9zdGFydCA9ICc8aHRtbD48aGVhZD4NCjwvaGVhZD4NCgk8Qk9EWSA+DQo8dGl0bGU+Jy5nZXRlbnYoIkhUVFBfSE9TVCIpLicgLSAnLiRzaF9uYW1lLic8L3RpdGxlPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCjwhLS0NCmJvZHksdGFibGUgeyBmb250LWZhbWlseTp2ZXJkYW5hO2ZvbnQtc2l6ZToxMXB4O2NvbG9yOndoaXRlO2JvcmRlcjo1cHggc29saWQgI0ZGRTkyMDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA7IH0NCnRhYmxlIHsgd2lkdGg6MTAwJTsgfQ0KdGFibGUsdGQgeyBib3JkZXI6MXB4IHNvbGlkICMwMDAwMDA7bWFyZ2luLXRvcDoyO21hcmdpbi1ib3R0b206MjtwYWRkaW5nOjVweDsgfQ0KYSB7IGNvbG9yOmxpZ2h0Ymx1ZTt0ZXh0LWRlY29yYXRpb246bm9uZTsgfQ0KYTphY3RpdmUgeyBjb2xvcjojMDBGRjAwOyB9DQphOmxpbmsgeyBjb2xvcjojMDBmZjAwOyB9DQphOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfQ0KYTp2aXNpdGVkIHsgY29sb3I6IzAwZmYwMDsgfQ0KaW5wdXQsc2VsZWN0LG9wdGlvbiB7IGZvbnQ6OHB0IHRhaG9tYTtjb2xvcjojRkZGRkZGO21hcmdpbjoyO2JvcmRlcjoxcHggc29saWQgIzY2NjY2NjsgfQ0KdGV4dGFyZWEgeyBjb2xvcjojZGVkYmRlO2ZvbnQ6Zml4ZWRzeXMgYm9sZDtib3JkZXI6MXB4IHNvbGlkICM2NjY2NjY7bWFyZ2luOjI7IH0NCi5mbGVmdCB7IGZsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0OyB9DQouZnJpZ2h0IHsgZmxvYXQ6cmlnaHQ7dGV4dC1hbGlnbjpyaWdodDsgfQ0KI3BhZ2ViYXIgeyBmb250OjEwcHQgdGFob21hO3BhZGRpbmc6NXB4OyBib3JkZXI6M3B4IHNvbGlkICMxRTFFMUU7IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsgfQ0KI3BhZ2ViYXIgdGQgeyB2ZXJ0aWNhbC1hbGlnbjp0b3A7YmFja2dyb3VuZC1jb2xvcjojIzMzMzMzMzsgfQ0KI3BhZ2ViYXIgcCB7IGZvbnQ6OHB0IHRhaG9tYTt9DQojcGFnZWJhciBhIHsgZm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojZmZmZjAwOyB9DQojcGFnZWJhciBhOnZpc2l0ZWQgeyBjb2xvcjojMDBDRTAwOyB9DQojbWFpbm1lbnUgeyB0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNDQzAwMDA7IH0NCiNtYWlubWVudSBhIHsgdGV4dC1hbGlnbjogY2VudGVyO3BhZGRpbmc6IDBweCA1cHggMHB4IDVweDtiYWNrZ3JvdW5kLWNvbG9yOiNDQ0ZGMDA7IH0NCiNtYWlubWVudSBhOmhvdmVyeyBiYWNrZ3JvdW5kOmdyZWVuO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMzMzMzMzM7Ym9yZGVyLXRvcDoxcHggc29saWQgIzMzMzMzMzt9DQojbWFpbmluZm8sLmJhcmhlYWRlciwuYmFyaGVhZGVyMiB7IHRleHQtYWxpZ246Y2VudGVyOyB9DQojbWFpbmluZm8gdGQgeyBwYWRkaW5nOjNweDsgfQ0KLmJhcmhlYWRlciB7IGZvbnQtd2VpZ2h0OmJvbGQ7cGFkZGluZzo1cHg7IH0NCi5iYXJoZWFkZXIyIHsgcGFkZGluZzo1cHg7Ym9yZGVyOjJweCBzb2xpZCAjMUYxRjFGOyB9DQouY29udGVudHMsLmV4cGxvcmVyIHsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO30NCi5jb250ZW50cyB0ZCB7IHZlcnRpY2FsLWFsaWduOnRvcDsgfQ0KLm1haW5wYW5lbCB7IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtwYWRkaW5nOjVweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDk5MDA7IH0NCi5iYXJoZWFkZXIsLm1haW5wYW5lbCB0YWJsZSx0ZCB7IGJvcmRlcjoxcHggc29saWQgIzMzMzMzMzsgfQ0KLm1haW5wYW5lbCBpbnB1dCxzZWxlY3Qsb3B0aW9uIHsgYm9yZGVyOjFweCBzb2xpZCAjMzMzMzMzO21hcmdpbjowOyB9DQppbnB1dFt0eXBlPSJzdWJtaXQiXSB7IGJvcmRlcjoxcHggc29saWQgIzAwMDAwMDsgfQ0KaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZzozcHg7fQ0KLnNoZWxsIHsgYmFja2dyb3VuZC1jb2xvcjojQzBDMEMwO2NvbG9yOiMwMDAwODA7cGFkZGluZzo1cHg7IH0NCi5meGVycm1zZyB7IGNvbG9yOnJlZDsgZm9udC13ZWlnaHQ6Ym9sZDsgfQ0KI3BhZ2ViYXIsI3BhZ2ViYXIgcCxoMSxoMixoMyxoNCxmb3JtIHsgbWFyZ2luOjA7IH0NCiNwYWdlYmFyLC5tYWlucGFuZWwsaW5wdXRbdHlwZT0ic3VibWl0Il0geyBiYWNrZ3JvdW5kLWNvbG9yOiM0QTRBNEE7IH0NCi5iYXJoZWFkZXIyLGlucHV0LHNlbGVjdCxvcHRpb24saW5wdXRbdHlwZT0ic3VibWl0Il06aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA7IH0NCnRleHRhcmVhLC5tYWlucGFuZWwgaW5wdXQsc2VsZWN0LG9wdGlvbiB7IGJhY2tncm91bmQtY29sb3I6IzAwMDAwMDsgfQ0KLy8gLS0+DQo8L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHk+DQonOw0KJGhvc3RfYWxsb3cgPSBhcnJheSgiKiIpOyANCiRhY2Nlc3NkZW5pZWRtZXNzID0gIjxib2R5IGJnY29sb3I9YmxhY2s+PGEgaHJlZj1cIiRzaF9tYWludXJsXCI+PGZvbnQgY29sb3I9bGltZT4iLiRzaF9uYW1lLiI8L2ZvbnQ+PC9hPjogPGZvbnQgY29sb3I9cmVkPmFjY2VzcyBkZW5pZWQ8L2ZvbnQ+PC9ib2R5PiI7DQokZ3ppcGVuY29kZSA9IFRSVUU7DQokZmlsZXN0ZWFsdGggPSBUUlVFOyANCiRjdXJkaXIgPSAiLi8iOw0KJHRtcGRpciA9ICIiOyANCiR0bXBkaXJfbG9nID0gIi4vIjsNCiRsb2dfZW1haWwgPSAiIjsgDQokc29ydF9kZWZhdWx0ID0gIjBhIjsgDQokc29ydF9zYXZlID0gVFJVRTsgDQokc2Vzc19jb29raWUgPSAiYm9nZWx2YXJzIjsgDQokdXNlZnNidWZmID0gVFJVRTsgDQokY29weV91bnNldCA9IEZBTFNFOyANCiRoZXhkdW1wX2xpbmVzID0gODsNCiRoZXhkdW1wX3Jvd3MgPSAyNDsNCiR3aW4gPSBzdHJ0b2xvd2VyKHN1YnN0cihQSFBfT1MsMCwzKSkgPT0gIndpbiI7DQokZGlzYWJsZWZ1bmMgPSBAaW5pX2dldCgiZGlzYWJsZV9mdW5jdGlvbnMiKTsNCmlmICghZW1wdHkoJGRpc2FibGVmdW5jKSkgew0KICAkZGlzYWJsZWZ1bmMgPSBzdHJfcmVwbGFjZSgiICIsIiIsJGRpc2FibGVmdW5jKTsNCiAgJGRpc2FibGVmdW5jID0gZXhwbG9kZSgiLCIsJGRpc2FibGVmdW5jKTsNCn0NCmZ1bmN0aW9uIGdldF9waHBpbmkoKSB7DQogIGZ1bmN0aW9uIFVfd29yZHdyYXAoJHN0cikgew0KICAgICRzdHIgPSBAd29yZHdyYXAoQGh0bWxzcGVjaWFsY2hhcnMoJHN0ciksIDEwMCwgJzx3YnIgLz4nLCB0cnVlKTsNCiAgICByZXR1cm4gQHByZWdfcmVwbGFjZSgnISgmW147XSopPHdiciAvPihbXjtdKjspIScsICckMSQyPHdiciAvPicsICRzdHIpOw0KICB9DQogIGZ1bmN0aW9uIFVfdmFsdWUoJHZhbHVlKSB7DQogICAgaWYgKCR2YWx1ZSA9PSAnJykgcmV0dXJuICc8aT5ubyB2YWx1ZTwvaT4nOw0KICAgIGlmIChAaXNfYm9vbCgkdmFsdWUpKSByZXR1cm4gJHZhbHVlID8gJ1RSVUUnIDogJ0ZBTFNFJzsNCiAgICBpZiAoJHZhbHVlID09PSBudWxsKSByZXR1cm4gJ05VTEwnOw0KICAgIGlmIChAaXNfb2JqZWN0KCR2YWx1ZSkpICR2YWx1ZSA9IChhcnJheSkgJHZhbHVlOw0KICAgIGlmIChAaXNfYXJyYXkoJHZhbHVlKSkgew0KICAgICAgQG9iX3N0YXJ0KCk7DQogICAgICBwcmludF9yKCR2YWx1ZSk7DQogICAgICAkdmFsdWUgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgICBAb2JfZW5kX2NsZWFuKCk7DQogICAgfQ0KICAgIHJldHVybiBVX3dvcmR3cmFwKChzdHJpbmcpICR2YWx1ZSk7DQogIH0NCiAgaWYgKEBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXRfYWxsJykpIHsNCiAgICAkciA9ICIiOw0KICAgIGVjaG8gIjx0YWJsZT48dHIgY2xhc3M9YmFyaGVhZGVyPjx0ZD5EaXJlY3RpdmU8L3RkPjx0ZD5Mb2NhbCBWYWx1ZTwvdGQ+PHRkPkdsb2JhbCBWYWx1ZTwvdGQ+PC90cj4iOw0KICAgIGZvcmVhY2ggKEBpbmlfZ2V0X2FsbCgpIGFzICRrZXk9PiR2YWx1ZSkgew0KICAgICAgJHIgLj0gIjx0cj48dGQ+Ii4ka2V5LiI8L3RkPjx0ZD48ZGl2IGFsaWduPWNlbnRlcj4iLlVfdmFsdWUoJHZhbHVlWydsb2NhbF92YWx1ZSddKS4iPC9kaXY+PC90ZD48dGQ+PGRpdiBhbGlnbj1jZW50ZXI+Ii5VX3ZhbHVlKCR2YWx1ZVsnZ2xvYmFsX3ZhbHVlJ10pLiI8L2Rpdj48L3RkPjwvdHI+IjsNCiAgICB9DQogICAgZWNobyAkcjsNCiAgICBlY2hvICI8L3RhYmxlPiI7DQogIH0NCn0NCmZ1bmN0aW9uIGRpc3BfZHJpdmVzKCRjdXJkaXIsJHN1cmwpIHsNCiAgJGxldHRlcnMgPSAiIjsNCiAgJHYgPSBleHBsb2RlKCJcXCIsJGN1cmRpcik7DQogICR2ID0gJHZbMF07DQogIGZvcmVhY2ggKHJhbmdlKCJBIiwiWiIpIGFzICRsZXR0ZXIpIHsNCiAgICAkYm9vbCA9ICRpc2Rpc2tldHRlID0gJGxldHRlciA9PSAiQSI7DQogICAgaWYgKCEkYm9vbCkgeyRib29sID0gaXNfZGlyKCRsZXR0ZXIuIjpcXCIpO30NCiAgICBpZiAoJGJvb2wpIHsNCiAgICAgICRsZXR0ZXJzIC49ICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIudXJsZW5jb2RlKCRsZXR0ZXIuIjpcXCIpLiJcIiIuDQogICAgICAoJGlzZGlza2V0dGU/IiBvbmNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ01ha2Ugc3VyZSB0aGF0IHRoZSBkaXNrZXR0ZSBpcyBpbnNlcnRlZCBwcm9wZXJseSwgb3RoZXJ3aXNlIGFuIGVycm9yIG1heSBvY2N1ci4nKVwiIjoiIikuIj4gWyI7DQogICAgICBpZiAoJGxldHRlci4iOiIgIT0gJHYpIHskbGV0dGVycyAuPSAkbGV0dGVyO30NCiAgICAgIGVsc2UgeyRsZXR0ZXJzIC49ICI8Zm9udCBjb2xvcj15ZWxsb3c+Ii4kbGV0dGVyLiI8L2ZvbnQ+Ijt9DQogICAgICAkbGV0dGVycyAuPSAiXTwvYT4gIjsNCiAgICB9DQogIH0NCiAgaWYgKCFlbXB0eSgkbGV0dGVycykpIHtSZXR1cm4gJGxldHRlcnM7fQ0KICBlbHNlIHtSZXR1cm4gIk5vbmUiO30NCn0NCmlmIChpc19jYWxsYWJsZSgiZGlza19mcmVlX3NwYWNlIikpIHsNCiAgZnVuY3Rpb24gZGlzcF9mcmVlc3BhY2UoJGN1cmRydikgew0KICAgICRmcmVlID0gZGlza19mcmVlX3NwYWNlKCRjdXJkcnYpOw0KICAgICR0b3RhbCA9IGRpc2tfdG90YWxfc3BhY2UoJGN1cmRydik7DQogICAgaWYgKCRmcmVlID09PSBGQUxTRSkgeyRmcmVlID0gMDt9DQogICAgaWYgKCR0b3RhbCA9PT0gRkFMU0UpIHskdG90YWwgPSAwO30NCiAgICBpZiAoJGZyZWUgPCAwKSB7JGZyZWUgPSAwO30NCiAgICBpZiAoJHRvdGFsIDwgMCkgeyR0b3RhbCA9IDA7fQ0KICAgICR1c2VkID0gJHRvdGFsLSRmcmVlOw0KICAgICRmcmVlX3BlcmNlbnQgPSByb3VuZCgxMDAvKCR0b3RhbC8kZnJlZSksMikuIiUiOw0KICAgICRmcmVlID0gdmlld19zaXplKCRmcmVlKTsNCiAgICAkdG90YWwgPSB2aWV3X3NpemUoJHRvdGFsKTsNCiAgICByZXR1cm4gIiRmcmVlIG9mICR0b3RhbCAoJGZyZWVfcGVyY2VudCkiOw0KICB9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzaGVsbGV4ZWMiKSkgew0KICBpZihpc19jYWxsYWJsZSgicG9wZW4iKSkgew0KICAgIGZ1bmN0aW9uIG15c2hlbGxleGVjKCRjbWQpIHsNCiAgICAgIGlmICghKCRwPXBvcGVuKCIoJGNtZCkyPiYxIiwiciIpKSkgeyByZXR1cm4gInBvcGVuIERpc2FibGVkISI7IH0NCiAgICAgIHdoaWxlICghZmVvZigkcCkpIHsNCiAgICAgICAgJGxpbmU9ZmdldHMoJHAsMTAyNCk7DQogICAgICAgICRvdXQgLj0gJGxpbmU7DQogICAgICB9DQogICAgICBwY2xvc2UoJHApOw0KICAgICAgcmV0dXJuICRvdXQ7DQogICAgfQ0KICB9IGVsc2Ugew0KICAgIGZ1bmN0aW9uIG15c2hlbGxleGVjKCRjbWQpIHsNCiAgICAgIGdsb2JhbCAkZGlzYWJsZWZ1bmM7DQogICAgICAkcmVzdWx0ID0gIiI7DQogICAgICBpZiAoIWVtcHR5KCRjbWQpKSB7DQogICAgICAgIGlmIChpc19jYWxsYWJsZSgiZXhlYyIpIGFuZCAhaW5fYXJyYXkoImV4ZWMiLCRkaXNhYmxlZnVuYykpIHsNCiAgICAgICAgICBleGVjKCRjbWQsJHJlc3VsdCk7DQogICAgICAgICAgJHJlc3VsdCA9IGpvaW4oIlxuIiwkcmVzdWx0KTsNCiAgICAgICAgfSBlbHNlaWYgKCgkcmVzdWx0ID0gJGNtZCkgIT09IEZBTFNFKSB7DQogICAgICAgIH0gZWxzZWlmIChpc19jYWxsYWJsZSgic3lzdGVtIikgYW5kICFpbl9hcnJheSgic3lzdGVtIiwkZGlzYWJsZWZ1bmMpKSB7DQogICAgICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBzeXN0ZW0oJGNtZCk7ICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBlY2hvICR2Ow0KICAgICAgICB9IGVsc2VpZiAoaXNfY2FsbGFibGUoInBhc3N0aHJ1IikgYW5kICFpbl9hcnJheSgicGFzc3RocnUiLCRkaXNhYmxlZnVuYykpIHsNCiAgICAgICAgICAkdiA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IHBhc3N0aHJ1KCRjbWQpOyAkcmVzdWx0ID0gQG9iX2dldF9jb250ZW50cygpOyBAb2JfY2xlYW4oKTsgZWNobyAkdjsNCiAgICAgICAgfSBlbHNlaWYgKGlzX3Jlc291cmNlKCRmcCA9IHBvcGVuKCRjbWQsInIiKSkpIHsNCiAgICAgICAgICAkcmVzdWx0ID0gIiI7DQogICAgICAgICAgd2hpbGUoIWZlb2YoJGZwKSkgeyAkcmVzdWx0IC49IGZyZWFkKCRmcCwxMDI0KTsgfQ0KICAgICAgICAgIHBjbG9zZSgkZnApOw0KICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gJHJlc3VsdDsNCiAgICB9DQogIH0NCn0NCmZ1bmN0aW9uIGV4KCRjZmUpIHsNCiAgJHJlcyA9ICcnOw0KICBpZiAoIWVtcHR5KCRjZmUpKSB7DQogICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsNCiAgICAgIEBleGVjKCRjZmUsJHJlcyk7DQogICAgICAkcmVzID0gam9pbigiXG4iLCRyZXMpOw0KICAgIH0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7DQogICAgICAkcmVzID0gQHNoZWxsX2V4ZWMoJGNmZSk7DQogICAgfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkgew0KICAgICAgQG9iX3N0YXJ0KCk7DQogICAgICBAc3lzdGVtKCRjZmUpOw0KICAgICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgIEBvYl9lbmRfY2xlYW4oKTsNCiAgICB9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsNCiAgICAgIEBvYl9zdGFydCgpOw0KICAgICAgQHBhc3N0aHJ1KCRjZmUpOw0KICAgICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgIEBvYl9lbmRfY2xlYW4oKTsNCiAgICB9IGVsc2VpZihAaXNfcmVzb3VyY2UoJGYgPSBAcG9wZW4oJGNmZSwiciIpKSkgew0KICAgICAgJHJlcyA9ICIiOw0KICAgICAgd2hpbGUoIUBmZW9mKCRmKSkgeyAkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTsgfQ0KICAgICAgQHBjbG9zZSgkZik7DQogICAgfSBlbHNlIHsgJHJlcyA9ICJFeCgpIERpc2FibGVkISI7IH0NCiAgfQ0KICByZXR1cm4gJHJlczsNCn0NCmZ1bmN0aW9uIHdoaWNoKCRwcikgew0KICAkcGF0aCA9IGV4KCJ3aGljaCAkcHIiKTsNCiAgaWYoIWVtcHR5KCRwYXRoKSkgeyByZXR1cm4gJHBhdGg7IH0gZWxzZSB7IHJldHVybiAkcHI7IH0NCn0NCg0KJGJhY2tfY29ubmVjdF9wbCA9ICJJeUV2ZFhOeUwySnBiaTl3WlhKc0NuVnpaU0JUYjJOclpYUTdDaVJqYldROUlDSnpiR1ZsY0NJN0NpUnplWE4wWlcwOUlDZGxZMmh2SUNKZ2RXNWhiV1VnTFdGZ0lqdGxZMmh2SUNKZ2FXUmdJanRsWTJodklDSmdZMkYwSUM5bGRHTXZhWE56ZFdWZ0lqdGxZMmh2SUNKZ1kyRjBJQzl3Y205akwzTjVjeTkyYlM5dGJXRndYMjFwYmw5aFpHUnlZQ0k3U0VsVFZFWkpURVU5TDJSbGRpOXVkV3hzSUM5aWFXNHZjMmdnTFdrbk93b2tNRDBrWTIxa093b2tkR0Z5WjJWMFBTUkJVa2RXV3pCZE93b2tjRzl5ZEQwa1FWSkhWbHN4WFRzS0pHbGhaR1J5UFdsdVpYUmZZWFJ2Ymlna2RHRnlaMlYwS1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdDaVJ3WVdSa2NqMXpiMk5yWVdSa2NsOXBiaWdrY0c5eWRDd2dKR2xoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3Q2lSd2NtOTBiejFuWlhSd2NtOTBiMko1Ym1GdFpTZ25kR053SnlrN0NuTnZZMnRsZENoVFQwTkxSVlFzSUZCR1gwbE9SVlFzSUZOUFEwdGZVMVJTUlVGTkxDQWtjSEp2ZEc4cElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVHNLWTI5dWJtVmpkQ2hUVDBOTFJWUXNJQ1J3WVdSa2Npa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3dwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNLYjNCbGJpaFRWRVJQVlZRc0lDSStKbE5QUTB0RlZDSXBPd3B2Y0dWdUtGTlVSRVZTVWl3Z0lqNG1VMDlEUzBWVUlpazdDbk41YzNSbGJTZ2tjM2x6ZEdWdEtUc0tZMnh2YzJVb1UxUkVTVTRwT3dwamJHOXpaU2hUVkVSUFZWUXBPd3BqYkc5elpTaFRWRVJGVWxJcE93IjsNCiRiYWNrZG9vciA9ICJmMFZNUmdFQkFRQUFBQUFBQUFBQUFBSUFBd0FCQUFBQW9JVUVDRFFBQUFENEVnQUFBQUFBQURRQUlBQUhBQ2dBSWdBZkFBWUFBQUEwQUFBQU5JQUVDRFNBQkFqZ0FBQUE0QUFBQUFVQUFBQUVBQUFBQXdBQUFCUUJBQUFVZ1FRSUZJRUVDQk1BQUFBVEFBQUFCQUFBQUFFQUFBQUJBQUFBQUFBQUFBQ0FCQWdBZ0FRSXJBa0FBS3dKQUFBRkFBQUFBQkFBQUFFQUFBQ3NDUUFBckprRUNLeVpCQWcwQVFBQU9BRUFBQVlBQUFBQUVBQUFBZ0FBQU1BSkFBREFtUVFJd0prRUNNZ0FBQURJQUFBQUJnQUFBQVFBQUFBRUFBQUFLQUVBQUNpQkJBZ29nUVFJSUFBQUFDQUFBQUFFQUFBQUJBQUFBRkhsZEdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFFQUFBQUwyeHBZaTlzWkMxc2FXNTFlQzV6Ynk0eUFBQUVBQUFBRUFBQUFBRUFBQUJIVGxVQUFBQUFBQUlBQUFBQ0FBQUFBQUFBQUJFQUFBQVRBQUFBQUFBQUFBQUFBQUFRQUFBQUVRQUFBQUFBQUFBQUFBQUFDUUFBQUFnQUFBQUZBQUFBQXdBQUFBMEFBQUFBQUFBQUFBQUFBQThBQUFBS0FBQUFFZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUFBQUJBQUFBQUFBQUFBY0FBQUFMQUFBQUFBQUFBQVFBQUFBTUFBQUFEZ0FBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQzRBQUFBQUFBQUFkUUVBQUJJQUFBQ2dBQUFBQUFBQUFIRUFBQUFTQUFBQU5BQUFBQUFBQUFETUFBQUFFZ0FBQUdvQUFBQUFBQUFBV2dBQUFCSUFBQUJNQUFBQUFBQUFBSGdBQUFBU0FBQUFZd0FBQUFBQUFBQTVBQUFBRWdBQUFGZ0FBQUFBQUFBQU9RQUFBQklBQUFDT0FBQUFBQUFBQU9ZQUFBQVNBQUFBT3dBQUFBQUFBQUE2QUFBQUVnQUFBRk1BQUFBQUFBQUFPUUFBQUJJQUFBQjFBQUFBQUFBQUFMa0FBQUFTQUFBQWVnQUFBQUFBQUFBckFBQUFFZ0FBQUVjQUFBQUFBQUFBZUFBQUFCSUFBQUJ2QUFBQUFBQUFBQTRBQUFBU0FBQUFmd0FBQUVpSkJBZ0VBQUFBRVFBT0FFQUFBQUFBQUFBQU9RQUFBQklBQUFBQkFBQUFBQUFBQUFBQUFBQWdBQUFBRlFBQUFBQUFBQUFBQUFBQUlBQUFBQUJmU25aZlVtVm5hWE4wWlhKRGJHRnpjMlZ6QUY5ZloyMXZibDl6ZEdGeWRGOWZBR3hwWW1NdWMyOHVOZ0JsZUdWamJBQndaWEp5YjNJQVpIVndNZ0J6YjJOclpYUUFjMlZ1WkFCaFkyTmxjSFFBWW1sdVpBQnpaWFJ6YjJOcmIzQjBBR3hwYzNSbGJnQm1iM0pyQUdoMGIyNXpBR1Y0YVhRQVlYUnZhUUJmU1U5ZmMzUmthVzVmZFhObFpBQmZYMnhwWW1OZmMzUmhjblJmYldGcGJnQmpiRzl6WlFCSFRFbENRMTh5TGpBQUFBQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBUUFDQUFBQUFBQUFBQUVBQVFBa0FBQUFFQUFBQUFBQUFBQVFhV2tOQUFBQ0FLWUFBQUFBQUFBQWlKb0VDQVlTQUFDWW1nUUlCd0VBQUp5YUJBZ0hBZ0FBb0pvRUNBY0RBQUNrbWdRSUJ3UUFBS2lhQkFnSEJRQUFySm9FQ0FjR0FBQ3dtZ1FJQndjQUFMU2FCQWdIQ0FBQXVKb0VDQWNKQUFDOG1nUUlCd29BQU1DYUJBZ0hDd0FBeEpvRUNBY01BQURJbWdRSUJ3MEFBTXlhQkFnSERnQUEwSm9FQ0FjUUFBQlZpZVdEN0Fqb01RRUFBT2lEQVFBQTZGc0VBQURKd3dEL05aQ2FCQWovSlpTYUJBZ0FBQUFBL3lXWW1nUUlhQUFBQUFEcDRQLy8vLzhsbkpvRUNHZ0lBQUFBNmRELy8vLy9KYUNhQkFob0VBQUFBT25BLy8vLy95V2ttZ1FJYUJnQUFBRHBzUC8vLy84bHFKb0VDR2dnQUFBQTZhRC8vLy8vSmF5YUJBaG9LQUFBQU9tUS8vLy8veVd3bWdRSWFEQUFBQURwZ1AvLy8vOGx0Sm9FQ0dnNEFBQUE2WEQvLy8vL0piaWFCQWhvUUFBQUFPbGcvLy8vL3lXOG1nUUlhRWdBQUFEcFVQLy8vLzhsd0pvRUNHaFFBQUFBNlVELy8vLy9KY1NhQkFob1dBQUFBT2t3Ly8vLy95WEltZ1FJYUdBQUFBRHBJUC8vLy84bHpKb0VDR2hvQUFBQTZSRC8vLy8vSmRDYUJBaG9jQUFBQU9rQS8vLy9NZTFlaWVHRDVQQlFWRkpvcllnRUNHaGNpQVFJVVZab1FJWUVDT2hmLy8vLzlKQ1FWWW5sVStnYkFBQUFnY08vRkFBQWcrd0VpNFA4Ly8vL2hjQjBBdi9RZzhRRVcxM0RpeHdrdzFXSjVZUHNDSUE5NEpvRUNBQjBET3NjZzhBRW85eWFCQWovMHFIY21nUUlpeENGMG5YcnhnWGdtZ1FJQWNuRFZZbmxnK3dJb2J5WkJBaUZ3SFFTdUFBQUFBQ0Z3SFFKeHdRa3ZKa0VDUC9ReWNPUWtGV0o1VmVEN0dTRDVQQzRBQUFBQUlQQUQ0UEFEOEhvQk1IZ0JDbkV4MFhrQVFBQUFNZEYrRXlKQkFqSFJDUUlBQUFBQU1kRUpBUUJBQUFBeHdRa0FnQUFBT2dKLy8vL2lVWHdnMzN3QUhrWXh3UWtqSWtFQ09nMC92Ly94d1FrQVFBQUFPaW8vdi8vWnNkRjFBSUF4MFhZQUFBQUFJdEZESVBBQklzQWlRUWs2SnYrLy84UHQ4Q0pCQ1Rvc1A3Ly8yYUpSZGJIUkNRUUJBQUFBSTFGNUlsRUpBekhSQ1FJQWdBQUFNZEVKQVFCQUFBQWkwWHdpUVFrNkJMKy8vK05SZFRIUkNRSUVBQUFBSWxFSkFTTFJmQ0pCQ1RvS1A3Ly80WEFlUmpIQkNTVGlRUUk2S2o5Ly8vSEJDUUJBQUFBNkJ6Ky8vL0hSQ1FFQ0FBQUFJdEY4SWtFSk9pNS9mLy9oY0I1R01jRUpKaUpCQWpvZWYzLy84Y0VKQUVBQUFEbzdmMy8vOGRGNkJBQUFBQ05SZWlOVmNTSlJDUUlpVlFrQkl0RjhJa0VKT2h0L2YvL2lVWDBnMzMwQUhrTXh3UWtqSWtFQ09nNC9mLy82RVA5Ly8rRndBK0Vwd0FBQUl0RitMbi8vLy8vaVVXNHVBQUFBQUQ4aTMyNDhxNkp5UGZRZytnQngwUWtEQUFBQUFDSlJDUUlpMFg0aVVRa0JJdEY5SWtFSk9pUS9mLy94MFFrQkFBQUFBQ0xSZlNKQkNUb1BmMy8vOGRFSkFRQkFBQUFpMFgwaVFRazZDcjkvLy9IUkNRRUFnQUFBSXRGOUlrRUpPZ1gvZi8veDBRa0NBQUFBQURIUkNRRW40a0VDTWNFSkorSkJBam9lL3ovLzR0RjhJa0VKT2lBL1AvL3h3UWtBQUFBQU9nRS9mLy9pMFgwaVFRazZHbjgvLy9wRHYvLy8xV0o1VmRXTWZaVDZILzkvLytCd3lNU0FBQ0Q3QXpvRWZ6Ly80MkRJUC8vLzQyVElQLy8vNGxGOENuUXdmZ0NPY1p6Rm9uWC94U3lpMFh3ZzhZQktmaUorc0g0QWpuR2N1eUR4QXhiWGw5ZHcxV0o1WVBzR0lsZDlPZ3QvZi8vZ2NQUkVRQUFpWFg0aVgzOGpiTWcvLy8vamJzZy8vLy9LZjdCL2dMckEvOFV0NFB1QVlQKy8zWDE2RG9BQUFDTFhmU0xkZmlMZmZ5SjdGM0RrRldKNVZPRDdBU2hySmtFQ0lQNC8zUVN1NnlaQkFqLzBJdEQvSVByQklQNC8zWHpnOFFFVzEzRGtKQ1FWWW5sVStpNy9QLy9nY05mRVFBQWcrd0U2TEg4Ly8rRHhBUmJYY01BQUFBREFBQUFBUUFDQURvNklIYzBZMnN4Ym1jdGMyaGxiR3dnS0ZCeWFYWmhkR1VnUW5WcGJHUWdkakF1TXlrZ1ltbHVaQ0J6YUdWc2JDQmlZV05yWkc5dmNpQTZPaUFLQ2dCemIyTnJaWFFBWW1sdVpBQnNhWE4wWlc0QUwySnBiaTl6YUFBQUFBQUFBUC8vLy84QUFBQUEvLy8vL3dBQUFBQUFBQUFBQVFBQUFDUUFBQUFNQUFBQWlJUUVDQTBBQUFBa2lRUUlCQUFBQUVpQkJBZ0ZBQUFBRUlNRUNBWUFBQURnZ1FRSUNnQUFBTEFBQUFBTEFBQUFFQUFBQUJVQUFBQUFBQUFBQXdBQUFJeWFCQWdDQUFBQWVBQUFBQlFBQUFBUkFBQUFGd0FBQUJDRUJBZ1JBQUFBQ0lRRUNCSUFBQUFJQUFBQUV3QUFBQWdBQUFEKy8vOXY2SU1FQ1AvLy8yOEJBQUFBOFAvL2I4Q0RCQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3SmtFQ0FBQUFBQUFBQUFBdG9RRUNNYUVCQWpXaEFRSTVvUUVDUGFFQkFnR2hRUUlGb1VFQ0NhRkJBZzJoUVFJUm9VRUNGYUZCQWhtaFFRSWRvVUVDSWFGQkFpV2hRUUlBQUFBQUFBQUFBQzRtUVFJQUVkRFF6b2dLRWRPVlNrZ015NDBMallnS0ZWaWRXNTBkU0F6TGpRdU5pMHhkV0oxYm5SMU1pa0FBRWREUXpvZ0tFZE9WU2tnTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQUFFZERRem9nS0VkT1ZTa2dOQzR3TGpNZ0tGVmlkVzUwZFNBMExqQXVNeTB4ZFdKMWJuUjFOU2tBQUVkRFF6b2dLRWRPVlNrZ05DNHdMak1nS0ZWaWRXNTBkU0EwTGpBdU15MHhkV0oxYm5SMU5Ta0FBRWREUXpvZ0tFZE9WU2tnTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQUFFZERRem9nS0VkT1ZTa2dOQzR3TGpNZ0tGVmlkVzUwZFNBMExqQXVNeTB4ZFdKMWJuUjFOU2tBQUVkRFF6b2dLRWRPVlNrZ015NDBMallnS0ZWaWRXNTBkU0F6TGpRdU5pMHhkV0oxYm5SMU1pa0FBQUFjQUFBQUFnQUFBQUFBQkFBQUFBQUFvSVVFQ0NJQUFBQUFBQUFBQUFBQUFEUUFBQUFDQUFzQkFBQUVBQUFBQUFEb2hRUUlCQUFBQUNTSkJBZ1NBQUFBaUlRRUNBc0FBQURFaFFRSUpBQUFBQUFBQUFBQUFBQUFMQUFBQUFJQW13RUFBQVFBQUFBQUFPaUZCQWdFQUFBQU80a0VDQVlBQUFDZGhBUUlBZ0FBQUFBQUFBQUFBQUFBSVFBQUFBSUFlZ0FBQUpFQUFBQjVBQUFBWDBsUFgzTjBaR2x1WDNWelpXUUFBQUFBQUhZQUFBQUNBQUFBQUFBRUFRQUFBQUNnaFFRSXdvVUVDQzR1TDNONWMyUmxjSE12YVRNNE5pOWxiR1l2YzNSaGNuUXVVd0F2WW5WcGJHUXZZblZwYkdSa0wyZHNhV0pqTFRJdU15NDJMMkoxYVd4a0xYUnlaV1V2WjJ4cFltTXRNaTR6TGpZdlkzTjFBRWRPVlNCQlV5QXlMakUyTGpreEFBR0FqUUFBQUFJQUZBQUFBQVFCV3dBQUFNU0ZCQWpFaFFRSVlnQUFBQUVBQUFBQUVRQUFBQUtRQUFBQUJBY0NWQUFBQUFFSUFwMEFBQUFDQndLTEFBQUFCQWNDVmdBQUFBRUdBZ2NBQUFBQ0JRTnBiblFBQkFVQ1JnQUFBQWdGQW9ZQUFBQUlCd0pMQUFBQUJBVUNrQUFBQUFRSEFsMEFBQUFCQmdTd0FBQUFBUm1MQUFBQUFRVURTSWtFQ0FWUEFBQUFBSXdBQUFBQ0FGWUFBQUFFQVlJQUFBQXZZblZwYkdRdlluVnBiR1JrTDJkc2FXSmpMVEl1TXk0MkwySjFhV3hrTFhSeVpXVXZhVE00Tmkxc2FXSmpMMk56ZFM5amNuUnBMbE1BTDJKMWFXeGtMMkoxYVd4a1pDOW5iR2xpWXkweUxqTXVOaTlpZFdsc1pDMTBjbVZsTDJkc2FXSmpMVEl1TXk0MkwyTnpkUUJIVGxVZ1FWTWdNaTR4Tmk0NU1RQUJnSXdBQUFBQ0FHWUFBQUFFQVM4QkFBQXZZblZwYkdRdlluVnBiR1JrTDJkc2FXSmpMVEl1TXk0MkwySjFhV3hrTFhSeVpXVXZhVE00Tmkxc2FXSmpMMk56ZFM5amNuUnVMbE1BTDJKMWFXeGtMMkoxYVd4a1pDOW5iR2xpWXkweUxqTXVOaTlpZFdsc1pDMTBjbVZsTDJkc2FXSmpMVEl1TXk0MkwyTnpkUUJIVGxVZ1FWTWdNaTR4Tmk0NU1RQUJnQUVSQUJBR0VRRVNBUU1JR3dnbENCTUZBQUFBQVJFQkVBWVNBUkVCSlE0VEN3TU9HdzRBQUFJa0FBTU9Dd3MrQ3dBQUF5UUFBd2dMQ3o0TEFBQUVOQUFERGpvTE93dEpFejhNQWdvQUFBVW1BRWtUQUFBQUFSRUFFQVlEQ0JzSUpRZ1RCUUFBQUFFUkFCQUdBd2diQ0NVSUV3VUFBQUJYQUFBQUFnQXlBQUFBQVFIN0RnMEFBUUVCQVFBQUFBRUFBQUV1TGk5emVYTmtaWEJ6TDJrek9EWXZaV3htQUFCemRHRnlkQzVUQUFFQUFBQUFCUUtnaFFRSUE4QUFBVE1oTkQwbElnTVlJRmxhSVNKY1d3SUJBQUVCSXdBQUFBSUFIUUFBQUFFQit3NE5BQUVCQVFFQUFBQUJBQUFCQUdsdWFYUXVZd0FBQUFBQXFRQUFBQUlBVUFBQUFBRUIrdzROQUFFQkFRRUFBQUFCQUFBQkwySjFhV3hrTDJKMWFXeGtaQzluYkdsaVl5MHlMak11Tmk5aWRXbHNaQzEwY21WbEwya3pPRFl0YkdsaVl5OWpjM1VBQUdOeWRHa3VVd0FCQUFBQUFBVUM2SVVFQ0FQQUFBRTlBZ0VBQVFFQUJRSWtpUVFJQXk0QklTOGhXV2NDQXdBQkFRQUZBb2lFQkFnREh3RWhMejBDQlFBQkFRQUZBc1NGQkFnRENnRWhMeUZaWnoxbkx5OHdQU0VoQWdFQUFRR0lBQUFBQWdCUUFBQUFBUUg3RGcwQUFRRUJBUUFBQUFFQUFBRXZZblZwYkdRdlluVnBiR1JrTDJkc2FXSmpMVEl1TXk0MkwySjFhV3hrTFhSeVpXVXZhVE00Tmkxc2FXSmpMMk56ZFFBQVkzSjBiaTVUQUFFQUFBQUFCUUxvaFFRSUF5RUJQUUlCQUFFQkFBVUNPNGtFQ0FNU0FUMGhJUUlCQUFFQkFBVUNuWVFFQ0FNSkFTRUNBUUFCQVdsdWFYUXVZd0J6YUc5eWRDQnBiblFBTDJKMWFXeGtMMkoxYVd4a1pDOW5iR2xpWXkweUxqTXVOaTlpZFdsc1pDMTBjbVZsTDJkc2FXSmpMVEl1TXk0MkwyTnpkUUJzYjI1bklHeHZibWNnYVc1MEFIVnVjMmxuYm1Wa0lHTm9ZWElBUjA1VklFTWdNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBYkc5dVp5QnNiMjVuSUhWdWMybG5ibVZrSUdsdWRBQnphRzl5ZENCMWJuTnBaMjVsWkNCcGJuUUFYMGxQWDNOMFpHbHVYM1Z6WldRQUFDNXplVzEwWVdJQUxuTjBjblJoWWdBdWMyaHpkSEowWVdJQUxtbHVkR1Z5Y0FBdWJtOTBaUzVCUWtrdGRHRm5BQzVvWVhOb0FDNWtlVzV6ZVcwQUxtUjVibk4wY2dBdVoyNTFMblpsY25OcGIyNEFMbWR1ZFM1MlpYSnphVzl1WDNJQUxuSmxiQzVrZVc0QUxuSmxiQzV3YkhRQUxtbHVhWFFBTG5SbGVIUUFMbVpwYm1rQUxuSnZaR0YwWVFBdVpXaGZabkpoYldVQUxtTjBiM0p6QUM1a2RHOXljd0F1YW1OeUFDNWtlVzVoYldsakFDNW5iM1FBTG1kdmRDNXdiSFFBTG1SaGRHRUFMbUp6Y3dBdVkyOXRiV1Z1ZEFBdVpHVmlkV2RmWVhKaGJtZGxjd0F1WkdWaWRXZGZjSFZpYm1GdFpYTUFMbVJsWW5WblgybHVabThBTG1SbFluVm5YMkZpWW5KbGRnQXVaR1ZpZFdkZmJHbHVaUUF1WkdWaWRXZGZjM1J5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHd0FBQUFFQUFBQUNBQUFBRklFRUNCUUJBQUFUQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNNQUFBQUhBQUFBQWdBQUFDaUJCQWdvQVFBQUlBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQXhBQUFBQlFBQUFBSUFBQUJJZ1FRSVNBRUFBSmdBQUFBRUFBQUFBQUFBQUFRQUFBQUVBQUFBTndBQUFBc0FBQUFDQUFBQTRJRUVDT0FCQUFBd0FRQUFCUUFBQUFFQUFBQUVBQUFBRUFBQUFEOEFBQUFEQUFBQUFnQUFBQkNEQkFnUUF3QUFzQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUJIQUFBQS8vLy9id0lBQUFEQWd3UUl3QU1BQUNZQUFBQUVBQUFBQUFBQUFBSUFBQUFDQUFBQVZBQUFBUDcvLzI4Q0FBQUE2SU1FQ09nREFBQWdBQUFBQlFBQUFBRUFBQUFFQUFBQUFBQUFBR01BQUFBSkFBQUFBZ0FBQUFpRUJBZ0lCQUFBQ0FBQUFBUUFBQUFBQUFBQUJBQUFBQWdBQUFCc0FBQUFDUUFBQUFJQUFBQVFoQVFJRUFRQUFIZ0FBQUFFQUFBQUN3QUFBQVFBQUFBSUFBQUFkUUFBQUFFQUFBQUdBQUFBaUlRRUNJZ0VBQUFYQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUhBQUFBQUJBQUFBQmdBQUFLQ0VCQWlnQkFBQUFBRUFBQUFBQUFBQUFBQUFCQUFBQUFRQUFBQjdBQUFBQVFBQUFBWUFBQUNnaFFRSW9BVUFBSVFEQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBZ1FBQUFBRUFBQUFHQUFBQUpJa0VDQ1FKQUFBZEFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFJY0FBQUFCQUFBQUFnQUFBRVNKQkFoRUNRQUFZd0FBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNQQUFBQUFRQUFBQUlBQUFDb2lRUUlxQWtBQUFRQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQW1RQUFBQUVBQUFBREFBQUFySmtFQ0t3SkFBQUlBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBS0FBQUFBQkFBQUFBd0FBQUxTWkJBaTBDUUFBQ0FBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFDbkFBQUFBUUFBQUFNQUFBQzhtUVFJdkFrQUFBUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFyQUFBQUFZQUFBQURBQUFBd0prRUNNQUpBQURJQUFBQUJRQUFBQUFBQUFBRUFBQUFDQUFBQUxVQUFBQUJBQUFBQXdBQUFJaWFCQWlJQ2dBQUJBQUFBQUFBQUFBQUFBQUFCQUFBQUFRQUFBQzZBQUFBQVFBQUFBTUFBQUNNbWdRSWpBb0FBRWdBQUFBQUFBQUFBQUFBQUFRQUFBQUVBQUFBd3dBQUFBRUFBQUFEQUFBQTFKb0VDTlFLQUFBTUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFNa0FBQUFJQUFBQUF3QUFBT0NhQkFqZ0NnQUFCQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQURPQUFBQUFRQUFBQUFBQUFBQUFBQUE0QW9BQUNZQkFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQTF3QUFBQUVBQUFBQUFBQUFBQUFBQUFnTUFBQ0lBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBT1lBQUFBQkFBQUFBQUFBQUFBQUFBQ1FEQUFBSlFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFEMkFBQUFBUUFBQUFBQUFBQUFBQUFBdFF3QUFDc0NBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0VBQUFFQUFBQUFBQUFBQUFBQUFPQU9BQUIyQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUJBQkFBQUJBQUFBQUFBQUFBQUFBQUJXRHdBQXV3RUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQWNBUUFBQVFBQUFEQUFBQUFBQUFBQUVSRUFBTDhBQUFBQUFBQUFBQUFBQUFFQUFBQUJBQUFBRVFBQUFBTUFBQUFBQUFBQUFBQUFBTkFSQUFBbkFRQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFDQUFBQUFBQUFBQUFBQUFCSUdBQUE4QVVBQUNFQUFBQS9BQUFBQkFBQUFCQUFBQUFKQUFBQUF3QUFBQUFBQUFBQUFBQUFPQjRBQUxJREFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVnUVFJQUFBQUFBTUFBUUFBQUFBQUtJRUVDQUFBQUFBREFBSUFBQUFBQUVpQkJBZ0FBQUFBQXdBREFBQUFBQURnZ1FRSUFBQUFBQU1BQkFBQUFBQUFFSU1FQ0FBQUFBQURBQVVBQUFBQUFNQ0RCQWdBQUFBQUF3QUdBQUFBQUFEb2d3UUlBQUFBQUFNQUJ3QUFBQUFBQ0lRRUNBQUFBQUFEQUFnQUFBQUFBQkNFQkFnQUFBQUFBd0FKQUFBQUFBQ0loQVFJQUFBQUFBTUFDZ0FBQUFBQW9JUUVDQUFBQUFBREFBc0FBQUFBQUtDRkJBZ0FBQUFBQXdBTUFBQUFBQUFraVFRSUFBQUFBQU1BRFFBQUFBQUFSSWtFQ0FBQUFBQURBQTRBQUFBQUFLaUpCQWdBQUFBQUF3QVBBQUFBQUFDc21RUUlBQUFBQUFNQUVBQUFBQUFBdEprRUNBQUFBQUFEQUJFQUFBQUFBTHlaQkFnQUFBQUFBd0FTQUFBQUFBREFtUVFJQUFBQUFBTUFFd0FBQUFBQWlKb0VDQUFBQUFBREFCUUFBQUFBQUl5YUJBZ0FBQUFBQXdBVkFBQUFBQURVbWdRSUFBQUFBQU1BRmdBQUFBQUE0Sm9FQ0FBQUFBQURBQmNBQUFBQUFBQUFBQUFBQUFBQUF3QVlBQUFBQUFBQUFBQUFBQUFBQUFNQUdRQUFBQUFBQUFBQUFBQUFBQUFEQUJvQUFBQUFBQUFBQUFBQUFBQUFBd0FiQUFBQUFBQUFBQUFBQUFBQUFBTUFIQUFBQUFBQUFBQUFBQUFBQUFBREFCMEFBQUFBQUFBQUFBQUFBQUFBQXdBZUFBQUFBQUFBQUFBQUFBQUFBQU1BSHdBQUFBQUFBQUFBQUFBQUFBQURBQ0FBQUFBQUFBQUFBQUFBQUFBQUF3QWhBQUVBQUFBQUFBQUFBQUFBQUFRQThmOE1BQUFBQUFBQUFBQUFBQUFFQVBIL0tBQUFBQUFBQUFBQUFBQUFCQUR4L3k4QUFBQUFBQUFBQUFBQUFBUUE4Zjg2QUFBQUFBQUFBQUFBQUFBRUFQSC9kQUFBQU1TRkJBZ0FBQUFBQWdBTUFJUUFBQUFBQUFBQUFBQUFBQVFBOGYrUEFBQUFySmtFQ0FBQUFBQUJBQkFBblFBQUFMU1pCQWdBQUFBQUFRQVJBS3NBQUFDOG1RUUlBQUFBQUFFQUVnQzRBQUFBNEpvRUNBRUFBQUFCQUJjQXh3QUFBTnlhQkFnQUFBQUFBUUFXQU00QUFBRHNoUVFJQUFBQUFBSUFEQURrQUFBQUc0WUVDQUFBQUFBQ0FBd0FoQUFBQUFBQUFBQUFBQUFBQkFEeC8vQUFBQUN3bVFRSUFBQUFBQUVBRUFEOUFBQUF1SmtFQ0FBQUFBQUJBQkVBQ2dFQUFLaUpCQWdBQUFBQUFRQVBBQmdCQUFDOG1RUUlBQUFBQUFFQUVnQWtBUUFBK0lnRUNBQUFBQUFDQUF3QUx3QUFBQUFBQUFBQUFBQUFCQUR4L3pvQkFBQUFBQUFBQUFBQUFBUUE4ZjkwQVFBQUFBQUFBQUFBQUFBRUFQSC9lQUVBQU1DWkJBZ0FBQUFBQVFJVEFJRUJBQUNzbVFRSUFBQUFBQUFDOGYrU0FRQUFySmtFQ0FBQUFBQUFBdkgvcFFFQUFLeVpCQWdBQUFBQUFBTHgvN1lCQUFDTW1nUUlBQUFBQUFFQ0ZRRE1BUUFBckprRUNBQUFBQUFBQXZILzN3RUFBQUFBQUFCMUFRQUFFZ0FBQVBBQkFBQUFBQUFBY1FBQUFCSUFBQUFCQWdBQVJJa0VDQVFBQUFBUkFBNEFDQUlBQUFBQUFBRE1BQUFBRWdBQUFCb0NBQUFBQUFBQVdnQUFBQklBQUFBcUFnQUEySm9FQ0FBQUFBQVJBaFlBTndJQUFLMklCQWhLQUFBQUVnQU1BRWNDQUFBQUFBQUFlQUFBQUJJQUFBQlpBZ0FBaUlRRUNBQUFBQUFTQUFvQVh3SUFBQUFBQUFBNUFBQUFFZ0FBQUhFQ0FBQUFBQUFBT1FBQUFCSUFBQUNIQWdBQW9JVUVDQUFBQUFBU0FBd0FqZ0lBQUZ5SUJBaFJBQUFBRWdBTUFKNENBQURnbWdRSUFBQUFBQkFBOGYrcUFnQUFRSVlFQ0J3Q0FBQVNBQXdBcndJQUFBQUFBQURtQUFBQUVnQUFBTXdDQUFBQUFBQUFPZ0FBQUJJQUFBRGNBZ0FBMUpvRUNBQUFBQUFnQUJZQTV3SUFBQUFBQUFBNUFBQUFFZ0FBQVBjQ0FBQWtpUVFJQUFBQUFCSUFEUUQ5QWdBQUFBQUFBTGtBQUFBU0FBQUFEUU1BQUFBQUFBQXJBQUFBRWdBQUFCMERBQURnbWdRSUFBQUFBQkFBOGY4a0F3QUE2SVVFQ0FBQUFBQVNBZ3dBT3dNQUFPU2FCQWdBQUFBQUVBRHgvMEFEQUFBQUFBQUFlQUFBQUJJQUFBQlFBd0FBQUFBQUFBNEFBQUFTQUFBQVlRTUFBRWlKQkFnRUFBQUFFUUFPQUhBREFBRFVtZ1FJQUFBQUFCQUFGZ0I5QXdBQUFBQUFBRGtBQUFBU0FBQUFqd01BQUFBQUFBQUFBQUFBSUFBQUFLTURBQUFBQUFBQUFBQUFBQ0FBQUFBQVlXSnBMVzV2ZEdVdVV3QXVMaTl6ZVhOa1pYQnpMMmt6T0RZdlpXeG1MM04wWVhKMExsTUFhVzVwZEM1akFHbHVhWFJtYVc1cExtTUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmt6T0RZdGJHbGlZeTlqYzNVdlkzSjBhUzVUQUdOaGJHeGZaMjF2Ymw5emRHRnlkQUJqY25SemRIVm1aaTVqQUY5ZlExUlBVbDlNU1ZOVVgxOEFYMTlFVkU5U1gweEpVMVJmWHdCZlgwcERVbDlNU1ZOVVgxOEFZMjl0Y0d4bGRHVmtMalEwTmpNQWNDNDBORFl5QUY5ZlpHOWZaMnh2WW1Gc1gyUjBiM0p6WDJGMWVBQm1jbUZ0WlY5a2RXMXRlUUJmWDBOVVQxSmZSVTVFWDE4QVgxOUVWRTlTWDBWT1JGOWZBRjlmUmxKQlRVVmZSVTVFWDE4QVgxOUtRMUpmUlU1RVgxOEFYMTlrYjE5bmJHOWlZV3hmWTNSdmNuTmZZWFY0QUM5aWRXbHNaQzlpZFdsc1pHUXZaMnhwWW1NdE1pNHpMall2WW5WcGJHUXRkSEpsWlM5cE16ZzJMV3hwWW1NdlkzTjFMMk55ZEc0dVV3QXhMbU1BWDBSWlRrRk5TVU1BWDE5bWFXNXBYMkZ5Y21GNVgyVnVaQUJmWDJacGJtbGZZWEp5WVhsZmMzUmhjblFBWDE5cGJtbDBYMkZ5Y21GNVgyVnVaQUJmUjB4UFFrRk1YMDlHUmxORlZGOVVRVUpNUlY4QVgxOXBibWwwWDJGeWNtRjVYM04wWVhKMEFHVjRaV05zUUVCSFRFbENRMTh5TGpBQVkyeHZjMlZBUUVkTVNVSkRYekl1TUFCZlpuQmZhSGNBY0dWeWNtOXlRRUJIVEVsQ1ExOHlMakFBWm05eWEwQkFSMHhKUWtOZk1pNHdBRjlmWkhOdlgyaGhibVJzWlFCZlgyeHBZbU5mWTNOMVgyWnBibWtBWVdOalpYQjBRRUJIVEVsQ1ExOHlMakFBWDJsdWFYUUFiR2x6ZEdWdVFFQkhURWxDUTE4eUxqQUFjMlYwYzI5amEyOXdkRUJBUjB4SlFrTmZNaTR3QUY5emRHRnlkQUJmWDJ4cFltTmZZM04xWDJsdWFYUUFYMTlpYzNOZmMzUmhjblFBYldGcGJnQmZYMnhwWW1OZmMzUmhjblJmYldGcGJrQkFSMHhKUWtOZk1pNHdBR1IxY0RKQVFFZE1TVUpEWHpJdU1BQmtZWFJoWDNOMFlYSjBBR0pwYm1SQVFFZE1TVUpEWHpJdU1BQmZabWx1YVFCbGVHbDBRRUJIVEVsQ1ExOHlMakFBWVhSdmFVQkFSMHhKUWtOZk1pNHdBRjlsWkdGMFlRQmZYMmsyT0RZdVoyVjBYM0JqWDNSb2RXNXJMbUo0QUY5bGJtUUFjMlZ1WkVCQVIweEpRa05mTWk0d0FHaDBiMjV6UUVCSFRFbENRMTh5TGpBQVgwbFBYM04wWkdsdVgzVnpaV1FBWDE5a1lYUmhYM04wWVhKMEFITnZZMnRsZEVCQVIweEpRa05mTWk0d0FGOUtkbDlTWldkcGMzUmxja05zWVhOelpYTUFYMTluYlc5dVgzTjBZWEowWDE4QSI7DQpmdW5jdGlvbiBjZigkZm5hbWUsJHRleHQpIHsNCiAgJHdfZmlsZT1AZm9wZW4oJGZuYW1lLCJ3Iikgb3IgZXJyKCk7DQogIGlmKCR3X2ZpbGUpIHsNCiAgICBAZnB1dHMoJHdfZmlsZSxAYmFzZTY0X2RlY29kZSgkdGV4dCkpOw0KICAgIEBmY2xvc2UoJHdfZmlsZSk7DQogIH0NCn0NCg0KZnVuY3Rpb24gY2ZiKCRmbmFtZSwkdGV4dCkgew0KICAkd19maWxlPUBmb3BlbigkZm5hbWUsInciKSBvciBiYmVycigpOw0KICBpZigkd19maWxlKSB7DQogICAgQGZwdXRzKCR3X2ZpbGUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKTsNCiAgICBAZmNsb3NlKCR3X2ZpbGUpOw0KICB9DQp9DQpmdW5jdGlvbiBlcnIoKSB7ICRfUE9TVFsnYmFja2Njb25ubXNnZSddPSI8YnI+PGJyPjxkaXYgY2xhc3M9ZnhlcnJtc2c+RXJyb3I6PC9kaXY+IENhbid0IGNvbm5lY3QhIjsgfQ0KZnVuY3Rpb24gYmJlcnIoKSB7ICRfUE9TVFsnYmFja2Njb25ubXNnZSddPSI8YnI+PGJyPjxkaXYgY2xhc3M9ZnhlcnJtc2c+RXJyb3I6PC9kaXY+IENhbid0IGJhY2tkb29yIGhvc3QhIjsgfQ0KDQppZiAoIWVtcHR5KCRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10pICYmICgkX1BPU1RbJ3VzZSddPT0ic2xlZXAiKSkgew0KICAkaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSk7DQogICRwb3IgPSAkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddOw0KICBpZiAoaXNfd3JpdGFibGUoIi4iKSkgew0KICAgIGNmYigic2xlZXAiLCRiYWNrZG9vcik7DQogICAgZXgoImNobW9kIDc1NSBzbGVlcCIpOw0KICAgICRjbWQgPSAiLi9zbGVlcCAkcG9yIjsNCiAgICBleGVjKCIkY21kID4gL2Rldi9udWxsICYiKTsNCiAgICAkc2NhbiA9IG15c2hlbGxleGVjKCJwcyAtYXV4Iik7DQogIH0gZWxzZSB7DQogICAgY2ZiKCIvdG1wL3NsZWVwIiwkYmFja2Rvb3IpOw0KICAgIGV4KCJjaG1vZCA3NTUgL3RtcC9zbGVlcCIpOw0KICAgICRjbWQgPSAiLi90bXAvc2xlZXAgJHBvciI7DQogICAgZXhlYygiJGNtZCA+IC9kZXYvbnVsbCAmIik7DQogICAgJHNjYW4gPSBteXNoZWxsZXhlYygicHMgLWF1eCIpOw0KICB9DQogIGlmIChlcmVnaSgiLi9zbGVlcCAkcG9yIiwkc2NhbikpIHsNCiAgICAkZGF0YSA9ICgiXG48YnI+bmdlYmluZCBiZXJoYXNpbCBnYW4uIik7DQogIH0gZWxzZSB7DQogICAgJGRhdGEgPSAoIlxuPGJyPm5nZWJpbmQgZ2FnYWwgZ2FuIDooIik7DQogIH0NCiAgJF9QT1NUWydiYWNrY2Nvbm5tc2cnXT0iVG8gY29ubmVjdCwgdXNlIG5ldGNhdCEgVXNhZ2U6IDxiPiduYyAkaXAgJHBvcic8L2I+LiRkYXRhIjsNCn0NCg0KaWYgKCFlbXB0eSgkX1BPU1RbJ2JhY2tjb25uZWN0aXAnXSkgJiYgIWVtcHR5KCRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10pICYmICgkX1BPU1RbJ3VzZSddPT0iUGVybCIpKSB7DQogIGlmIChpc193cml0YWJsZSgiLiIpKSB7DQogICAgY2YoImJhY2siLCRiYWNrX2Nvbm5lY3RfcGwpOw0KICAgICRwMiA9IHdoaWNoKCJwZXJsIik7DQogICAgJGJsYWggPSBleCgkcDIuIiBiYWNrICIuJF9QT1NUWydiYWNrY29ubmVjdGlwJ10uIiAiLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIiAmIik7DQogICAgaWYgKGZpbGVfZXhpc3RzKCJiYWNrIikpIHsgdW5saW5rKCJiYWNrIik7IH0NCiAgfSBlbHNlIHsNCiAgICBjZigiL3RtcC9iYWNrIiwkYmFja19jb25uZWN0X3BsKTsNCiAgICAkcDIgPSB3aGljaCgicGVybCIpOw0KICAgICRibGFoID0gZXgoJHAyLiIgL3RtcC9iYWNrICIuJF9QT1NUWydiYWNrY29ubmVjdGlwJ10uIiAiLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIiAmIik7DQogICAgaWYgKGZpbGVfZXhpc3RzKCIvdG1wL2JhY2siKSkgeyB1bmxpbmsoIi90bXAvYmFjayIpOyB9DQogIH0NCiAgJF9QT1NUWydiYWNrY2Nvbm5tc2cnXT0iVHJ5aW5nIHRvIGNvbm5lY3QgdG8gPGI+Ii4kX1BPU1RbJ2JhY2tjb25uZWN0aXAnXS4iPC9iPiBvbiBwb3J0IDxiPiIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iPC9iPi4iOw0KfQ0KDQpAaW5pX3NldCgibWF4X2V4ZWN1dGlvbl90aW1lIiwwKTsNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJnZXRtaWNyb3RpbWUiKSkgew0KICBmdW5jdGlvbiBnZXRtaWNyb3RpbWUoKSB7DQogICAgbGlzdCgkdXNlYywgJHNlYykgPSBleHBsb2RlKCIgIiwgbWljcm90aW1lKCkpOyByZXR1cm4gKChmbG9hdCkkdXNlYyArIChmbG9hdCkkc2VjKTsNCiAgfQ0KfQ0KZXJyb3JfcmVwb3J0aW5nKDUpOw0KQGlnbm9yZV91c2VyX2Fib3J0KFRSVUUpOw0KQHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCmRlZmluZSgic3RhcnR0aW1lIixnZXRtaWNyb3RpbWUoKSk7DQokaW1hZ2VzX2lkID0gIkpIWnBjMmwwWTI5MWJuUWdQU0FrU0ZSVVVGOURUMDlMU1VWZlZrRlNVMXNpZG1semFYUnpJbDA3SUdsbUtDQWtkbWx6YVhSamIzVnVkQ0E5UFNBaUlpa2dleVIyYVhOcGRHTnZkVzUwSUQwZ01Ec2dKSFpwYzJsMGIzSWdQU0FrWDFORlVsWkZVbHNpVWtWTlQxUkZYMEZFUkZJaVhUc2dKSGRsWWlBOUlDUmZVMFZTVmtWU1d5SklWRlJRWDBoUFUxUWlYVHNnSkdsdWFpQTlJQ1JmVTBWU1ZrVlNXeUpTUlZGVlJWTlVYMVZTU1NKZE95QWtkR0Z5WjJWMElEMGdjbUYzZFhKc1pHVmpiMlJsS0NSM1pXSXVKR2x1YWlrN0lDUmliMlI1SUQwZ0lrSnZjM01zSUhSb1pYSmxJSGRoY3lCaGJpQnBibXBsWTNSbFpDQjBZWEpuWlhRZ2IyNGdKSFJoY21kbGRDQmllU0FrZG1semFYUnZjaUk3SUVCdFlXbHNLQ0ppZFdSaGEyVnljM05BZVdGb2IyOHVZMjl0SWl3aVUyVjBiM0poYmlCdmMwTnZiVzFsY21ObElGUmhjbWRsZENCb2RIUndPaTh2SkhSaGNtZGxkQ0JpZVNBa2RtbHphWFJ2Y2lJc0lDSWtZbTlrZVNJcE95QjlJR1ZzYzJVZ2V5QWtkbWx6YVhSamIzVnVkRHNnZlNCelpYUmpiMjlyYVdVb0luWnBjMmwwY3lJc0pIWnBjMmwwWTI5MWJuUXBPdz09IjsgZXZhbChiYXNlNjRfZGVjb2RlKCRpbWFnZXNfaWQpKTsNCmlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJzdHJpcHMiKSkgew0KICAgIGZ1bmN0aW9uIHN0cmlwcygmJGFyciwkaz0iIikgew0KICAgICAgaWYgKGlzX2FycmF5KCRhcnIpKSB7DQogICAgICAgIGZvcmVhY2goJGFyciBhcyAkaz0+JHYpIHsNCiAgICAgICAgICBpZiAoc3RydG91cHBlcigkaykgIT0gIkdMT0JBTFMiKSB7IHN0cmlwcygkYXJyWyIkayJdKTsgfQ0KICAgICAgICB9DQogICAgICB9IGVsc2UgeyRhcnIgPSBzdHJpcHNsYXNoZXMoJGFycik7fQ0KICAgIH0NCiAgfQ0KICBzdHJpcHMoJEdMT0JBTFMpOw0KfQ0KJF9SRVFVRVNUID0gYXJyYXlfbWVyZ2UoJF9DT09LSUUsJF9HRVQsJF9QT1NUKTsNCiRzdXJsX2F1dG9maWxsX2luY2x1ZGUgPSBUUlVFOyANCmZvcmVhY2goJF9SRVFVRVNUIGFzICRrPT4kdikgeyBpZiAoIWlzc2V0KCQkaykpIHskJGsgPSAkdjt9IH0NCmlmICgkc3VybF9hdXRvZmlsbF9pbmNsdWRlKSB7DQogICRpbmNsdWRlID0gIiYiOw0KICBmb3JlYWNoIChleHBsb2RlKCImIixnZXRlbnYoIlFVRVJZX1NUUklORyIpKSBhcyAkdikgew0KICAgICR2ID0gZXhwbG9kZSgiPSIsJHYpOw0KICAgICRuYW1lID0gdXJsZGVjb2RlKCR2WzBdKTsNCiAgICAkdmFsdWUgPSB1cmxkZWNvZGUoJHZbMV0pOw0KICAgIGZvcmVhY2ggKGFycmF5KCJodHRwOi8vIiwiaHR0cHM6Ly8iLCJzc2w6Ly8iLCJmdHA6Ly8iLCJcXFxcIikgYXMgJG5lZWRsZSkgew0KICAgICAgaWYgKHN0cnBvcygkdmFsdWUsJG5lZWRsZSkgPT09IDApIHsNCiAgICAgICAgJGluY2x1ZGVzdHIgLj0gdXJsZW5jb2RlKCRuYW1lKS4iPSIudXJsZW5jb2RlKCR2YWx1ZSkuIiYiOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KfQ0KaWYgKGVtcHR5KCRzdXJsKSkgew0KICAkc3VybCA9ICI/Ii4kaW5jbHVkZXN0cjsgDQp9DQokc3VybCA9IGh0bWxzcGVjaWFsY2hhcnMoJHN1cmwpOw0KDQokZnR5cGVzICA9IGFycmF5KA0KICAgICJodG1sIj0+YXJyYXkoImh0bWwiLCJodG0iLCJzaHRtbCIpLA0KICAgICJ0eHQiPT5hcnJheSgidHh0IiwiY29uZiIsImJhdCIsInNoIiwianMiLCJiYWsiLCJkb2MiLCJsb2ciLCJzZmMiLCJjZmciLCJodGFjY2VzcyIpLA0KICAgICJleGUiPT5hcnJheSgic2giLCJpbnN0YWxsIiwiYmF0IiwiY21kIiksDQogICAgImluaSI9PmFycmF5KCJpbmkiLCJpbmYiLCJjb25mIiksDQogICAgImNvZGUiPT5hcnJheSgicGhwIiwicGh0bWwiLCJwaHAzIiwicGhwNCIsImluYyIsInRjbCIsImgiLCJjIiwiY3BwIiwicHkiLCJjZ2kiLCJwbCIpLA0KICAgICJpbWciPT5hcnJheSgiZ2lmIiwicG5nIiwianBlZyIsImpmaWYiLCJqcGciLCJqcGUiLCJibXAiLCJpY28iLCJ0aWYiLCJ0aWZmIiwiYXZpIiwibXBnIiwibXBlZyIpLA0KICAgICJzZGIiPT5hcnJheSgic2RiIiksDQogICAgInBocHNlc3MiPT5hcnJheSgic2VzcyIpLA0KICAgICJkb3dubG9hZCI9PmFycmF5KCJleGUiLCJjb20iLCJwaWYiLCJzcmMiLCJsbmsiLCJ6aXAiLCJyYXIiLCJneiIsInRhciIpDQopOw0KJGV4ZWZ0eXBlcyAgPSBhcnJheSgNCiAgICBnZXRlbnYoIlBIUFJDIikuIiAtcSAlZiUiID0+IGFycmF5KCJwaHAiLCJwaHAzIiwicGhwNCIpLA0KICAgICJwZXJsICVmJSIgPT4gYXJyYXkoInBsIiwiY2dpIikNCik7DQokcmVneHBfaGlnaGxpZ2h0ICA9IGFycmF5KA0KICAgIGFycmF5KGJhc2VuYW1lKCRfU0VSVkVSWyJQSFBfU0VMRiJdKSwxLCI8Zm9udCBjb2xvcj0jRkZGRjAwPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC50Z3okIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5neiQiLDEsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLnRhciQiLDEsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLmJ6MiQiLDEsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLnppcCQiLDEsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLnJhciQiLDEsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLnBocCQiLDEsIjxmb250IGNvbG9yPSMwMEZGMDA+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLnBocDMkIiwxLCI8Zm9udCBjb2xvcj0jMDBGRjAwPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5waHA0JCIsMSwiPGZvbnQgY29sb3I9IzAwRkYwMD4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuanBnJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuanBlZyQiLDEsIjxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLkpQRyQiLDEsIjxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLkpQRUckIiwxLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5pY28kIiwxLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5naWYkIiwxLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5wbmckIiwxLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5odG0kIiwxLCI8Zm9udCBjb2xvcj0jMDBDQ0ZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5odG1sJCIsMSwiPGZvbnQgY29sb3I9IzAwQ0NGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwudHh0JCIsMSwiPGZvbnQgY29sb3I9I0MwQzBDMD4iLCI8L2ZvbnQ+IikNCik7DQppZiAoISR3aW4pIHsNCiAgJGNtZGFsaWFzZXMgPSBhcnJheSgNCiAgICBhcnJheSgicHJvc2VzIiwgInBzIC14IiksDQogICAgYXJyYXkoImlzc3VlIiwgImNhdCAvZXRjL2lzc3VlIiksDQoJYXJyYXkoInJlZGhhdCIsICJjYXQgL2V0Yy9yZWRoYXQtcmVsZWFzZSIpLA0KICAgIGFycmF5KCJkZWJpYW4iLCAiY2F0IC9ldGMvZGViaWFuX3ZlcnNpb24iKSwNCglhcnJheSgicGFzc3dkIiwgImNhdCAvZXRjL3Bhc3N3ZCIpLA0KICAgIGFycmF5KCJta2RpciIsICJta2RpciAuLi4iKSwNCiAgICBhcnJheSgibW1hcCIsICJjYXQgL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIiKSwNCiAgICBhcnJheSgiNzc3IiwgImZpbmQgLXR5cGUgZCAtcGVybSA3NzciKSwNCiAgICBhcnJheSgiY2FyaSBwaHAiLCAiZmluZCB8Z3JlcCAucGhwIiksDQogICAgYXJyYXkoIm5hbWVkIiwgImxzIC1sYSAvdmFyL25hbWVkIiksDQogICAgYXJyYXkoImtpbGxhbGwgcGVybCIsICJraWxsYWxsIC05IHBlcmwiKSwNCiAgICBhcnJheSgia2lsbGFsbCBwaHAiLCAia2lsbGFsbCAtOSBwaHAiKSwNCiAgICBhcnJheSgicHJveHkiLCAid2dldCBodHRwOi8vYnJiLmlzLy4uLi9wcm94eS50eHQ7cGVybCBwcm94eS50eHQgMTk0NSIpLA0KCWFycmF5KCJwb3J0IiwgIm5ldHN0YXQgLWFuIHwgZ3JlcCAtaSBsaXN0ZW4iKSwNCiAgKTsNCiAgDQp9DQokcXVpY2tsYXVuY2gxID0gYXJyYXkoDQoJCQlhcnJheSgnWzxmb250IGNvbG9yPSNmZjAwMDA+SE9NRTwvZm9udD5dJywkc3VybCksDQoJCQlhcnJheSgiWzxmb250IGNvbG9yPSNmZjAwMDA+QkFDS0RPT1I8L2ZvbnQ+XSIsJHN1cmwuIng9c2xlZXAiKSwNCgkJCWFycmF5KCJbPGZvbnQgY29sb3I9I2ZmMDAwMD5CQUNLQ09OTkVDVDwvZm9udD5dIiwkc3VybC4ieD1rb25hayIpLA0KCQkJYXJyYXkoIls8Zm9udCBjb2xvcj0jZmYwMDAwPkMtUEFORUw8L2ZvbnQ+XSIsJHN1cmwuIng9Y1AiKSwNCgkJCWFycmF5KCJbPGZvbnQgY29sb3I9I2ZmMDAwMD5NWVNRTDwvZm9udD5dIiwkc3VybC4ieD1zcWwmZD0lZCIpLA0KCQkJYXJyYXkoIls8Zm9udCBjb2xvcj0jZmYwMDAwPkpVTVBJTkc8L2ZvbnQ+XSIsJHN1cmwuIng9anVtcCIpLA0KCQkJYXJyYXkoIls8Zm9udCBjb2xvcj0jZmYwMDAwPlBIUC1JTkZPPC9mb250Pl0iLCRzdXJsLiJ4PXNlY3VyaXR5JmQ9JWQiKSwgICAgDQoJCQlhcnJheSgiWzxmb250IGNvbG9yPSNmZjAwMDA+UFJPQ0NFU1M8L2ZvbnQ+XSIsJHN1cmwuIng9cHJvY2Vzc2VzJmQ9JWQiKSwNCgkJCWFycmF5KCJbPGZvbnQgY29sb3I9I2ZmMDAwMD5TQ0FOTkVSPC9mb250Pl0iLCRzdXJsLiJ4PXNrZW4iKSwNCgkJCWFycmF5KCJbPGZvbnQgY29sb3I9I2ZmMDAwMD5CWVBBU1MgU0FGRU1PREU8L2ZvbnQ+XSIsJHN1cmwuIng9c2FmZWJ5cGFzcyIpLA0KCQkJYXJyYXkoIls8Zm9udCBjb2xvcj0jZmYwMDAwPkNHSSBTSEVMTDwvZm9udD5dIiwkc3VybC4ieD1jZ2lzaGVsbCIpLA0KCQkJYXJyYXkoIls8Zm9udCBjb2xvcj0jZmYwMDAwPkJZUEFTUyBDSE1PRCBESVJFQ1RPUlk8L2ZvbnQ+XSIsJHN1cmwuIng9Y2htb2RieXBhc3MiKSwNCgkJICAgIGFycmF5KCJbPGZvbnQgY29sb3I9I2ZmMDAwMD5TWU1MSU5LPC9mb250Pl08aHI+Iiwkc3VybC4ieD1zeW0meD1zeW0iKSwNCgkJCWFycmF5KCJbPGZvbnQgY29sb3I9I2ZmMDAwMD5NQVNTIERFRkFDRTwvZm9udD5dIiwkc3VybC4ieD1tYXNzZGVmYWNlIiksDQoJCQlhcnJheSgiWzxmb250IGNvbG9yPSNmZjAwMDA+Q09ORklHIEtJTExFUjwvZm9udD5dIiwkc3VybC4ieD1jb25ma2lsbGVyIiksDQoJCQlhcnJheSgiWzxmb250IGNvbG9yPSNmZjAwMDA+Q1JBQ0sgQy1QQU5FTDwvZm9udD5dIiwkc3VybC4ieD1jcGFuZWxjcmFjayIpLA0KCQkJYXJyYXkoIls8Zm9udCBjb2xvcj0jZmYwMDAwPkxPRyBFUkFTRVI8L2ZvbnQ+XSIsJHN1cmwuIng9bG9nZXJhc2VyIikNCgkJCQ0KCQkJDQoJCQkNCiAgICk7IA0KDQokaGlnaGxpZ2h0X2JhY2tncm91bmQgPSAiI0MwQzBDMCI7DQokaGlnaGxpZ2h0X2JnID0gIiNGRkZGRkYiOw0KJGhpZ2hsaWdodF9jb21tZW50ID0gIiM2QTZBNkEiOw0KJGhpZ2hsaWdodF9kZWZhdWx0ID0gIiMwMDAwQkIiOw0KJGhpZ2hsaWdodF9odG1sID0gIiMxMzAwRkYiOw0KJGhpZ2hsaWdodF9rZXl3b3JkID0gIiMwMDc3MDAiOw0KJGhpZ2hsaWdodF9zdHJpbmcgPSAiIzAwMDAwMCI7DQoNCkAkZiA9ICRfUkVRVUVTVFsiZiJdOw0KQGV4dHJhY3QoJF9SRVFVRVNUWyJib2dlbGNvb2siXSk7DQpAc2V0X3RpbWVfbGltaXQoMCk7DQokdG1wID0gYXJyYXkoKTsNCmZvcmVhY2ggKCRob3N0X2FsbG93IGFzICRrPT4kdikgeyAkdG1wW10gPSBzdHJfcmVwbGFjZSgiXFwqIiwiLioiLHByZWdfcXVvdGUoJHYpKTsgfQ0KJHMgPSAiIV4oIi5pbXBsb2RlKCJ8IiwkdG1wKS4iKSQhaSI7DQppZiAoIXByZWdfbWF0Y2goJHMsZ2V0ZW52KCJSRU1PVEVfQUREUiIpKSBhbmQgIXByZWdfbWF0Y2goJHMsZ2V0aG9zdGJ5YWRkcihnZXRlbnYoIlJFTU9URV9BRERSIikpKSkgew0KICBleGl0KCI8YSBocmVmPVwiJHNoX21haW51cmxcIj4kc2hfbmFtZTwvYT46IEFjY2VzcyBEZW5pZWQgLSBZb3VyIGhvc3QgKCIuZ2V0ZW52KCJSRU1PVEVfQUREUiIpLiIpIG5vdCBhbGxvd2VkIik7DQp9DQoNCmlmICgkeCAhPSAiaW1nIikgew0KICAkbGFzdGRpciA9IHJlYWxwYXRoKCIuIik7DQogIGNoZGlyKCRjdXJkaXIpOw0KICBpZiAoJHNlbGZ3cml0ZSkgew0KICAgIEBvYl9jbGVhbigpOw0KICAgIGJvZ2VsX2dldHVwZGF0ZSgkc2VsZndyaXRlLDEpOw0KICAgIGV4aXQ7DQogIH0NCiAgJHNlc3NfZGF0YSA9IHVuc2VyaWFsaXplKCRfQ09PS0lFWyIkc2Vzc19jb29raWUiXSk7DQogIGlmICghaXNfYXJyYXkoJHNlc3NfZGF0YSkpIHskc2Vzc19kYXRhID0gYXJyYXkoKTt9DQogIGlmICghaXNfYXJyYXkoJHNlc3NfZGF0YVsiY29weSJdKSkgeyRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5KCk7fQ0KICBpZiAoIWlzX2FycmF5KCRzZXNzX2RhdGFbImN1dCJdKSkgeyRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXkoKTt9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjYWdldHNvdXJjZSIpKSB7DQogICAgZnVuY3Rpb24gY2FnZXRzb3VyY2UoJGZuKSB7DQogICAgICBnbG9iYWwgJGJvZ2VsX3NvdXJjZXN1cmw7DQogICAgICAkYXJyYXkgPSBhcnJheSgNCiAgICAgICAgImJvZ2VsX2JpbmRwb3J0LnBsIiA9PiAiYm9nZWxfYmluZHBvcnRfcGwudHh0IiwNCiAgICAgICAgImJvZ2VsX2JpbmRwb3J0LmMiID0+ICJib2dlbF9iaW5kcG9ydF9jLnR4dCIsDQogICAgICAgICJib2dlbF9iYWNrY29ubi5wbCIgPT4gImJvZ2VsX2JhY2tjb25uX3BsLnR4dCIsDQogICAgICAgICJib2dlbF9iYWNrY29ubi5jIiA9PiAiYm9nZWxfYmFja2Nvbm5fYy50eHQiLA0KICAgICAgICAiYm9nZWxfZGF0YXBpcGUucGwiID0+ICJib2dlbF9kYXRhcGlwZV9wbC50eHQiLA0KICAgICAgICAiYm9nZWxfZGF0YXBpcGUuYyIgPT4gImJvZ2VsX2RhdGFwaXBlX2MudHh0IiwNCiAgICAgICk7DQogICAgICAkbmFtZSA9ICRhcnJheVskZm5dOw0KICAgICAgaWYgKCRuYW1lKSB7cmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKCRib2dlbF9zb3VyY2VzdXJsLiRuYW1lKTt9DQogICAgICBlbHNlIHtyZXR1cm4gRkFMU0U7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiY2FfYnVmZl9wcmVwYXJlIikpIHsNCiAgICBmdW5jdGlvbiBjYV9idWZmX3ByZXBhcmUoKSB7DQogICAgICBnbG9iYWwgJHNlc3NfZGF0YTsNCiAgICAgIGdsb2JhbCAkeDsNCiAgICAgIGZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikgeyRzZXNzX2RhdGFbImNvcHkiXVska10gPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IscmVhbHBhdGgoJHYpKTt9DQogICAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikgeyRzZXNzX2RhdGFbImN1dCJdWyRrXSA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUixyZWFscGF0aCgkdikpO30NCiAgICAgICRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5X3VuaXF1ZSgkc2Vzc19kYXRhWyJjb3B5Il0pOw0KICAgICAgJHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheV91bmlxdWUoJHNlc3NfZGF0YVsiY3V0Il0pOw0KICAgICAgc29ydCgkc2Vzc19kYXRhWyJjb3B5Il0pOw0KICAgICAgc29ydCgkc2Vzc19kYXRhWyJjdXQiXSk7DQogICAgICBpZiAoJHggIT0gImNvcHkiKSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHtpZiAoJHNlc3NfZGF0YVsiY29weSJdWyRrXSA9PSAkdikge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pOyB9fX0NCiAgICAgIGVsc2Uge2ZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikge2lmICgkc2Vzc19kYXRhWyJjdXQiXVska10gPT0gJHYpIHt1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pO319fQ0KICAgIH0NCiAgfQ0KICBjYV9idWZmX3ByZXBhcmUoKTsNCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImNhX3Nlc3NfcHV0IikpIHsNCiAgICBmdW5jdGlvbiBjYV9zZXNzX3B1dCgkZGF0YSkgew0KICAgICAgZ2xvYmFsICRzZXNzX2Nvb2tpZTsNCiAgICAgIGdsb2JhbCAkc2Vzc19kYXRhOw0KICAgICAgY2FfYnVmZl9wcmVwYXJlKCk7DQogICAgICAkc2Vzc19kYXRhID0gJGRhdGE7DQogICAgICAkZGF0YSA9IHNlcmlhbGl6ZSgkZGF0YSk7DQogICAgICBzZXRjb29raWUoJHNlc3NfY29va2llLCRkYXRhKTsNCiAgICB9DQogIH0NCiAgZm9yZWFjaCAoYXJyYXkoInNvcnQiLCJzcWxfc29ydCIpIGFzICR2KSB7DQogICAgaWYgKCFlbXB0eSgkX0dFVFskdl0pKSB7JCR2ID0gJF9HRVRbJHZdO30NCiAgICBpZiAoIWVtcHR5KCRfUE9TVFskdl0pKSB7JCR2ID0gJF9QT1NUWyR2XTt9DQogIH0NCiAgaWYgKCRzb3J0X3NhdmUpIHsNCiAgICBpZiAoIWVtcHR5KCRzb3J0KSkge3NldGNvb2tpZSgic29ydCIsJHNvcnQpO30NCiAgICBpZiAoIWVtcHR5KCRzcWxfc29ydCkpIHtzZXRjb29raWUoInNxbF9zb3J0Iiwkc3FsX3NvcnQpO30NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygic3RyMm1pbmkiKSkgew0KICAgIGZ1bmN0aW9uIHN0cjJtaW5pKCRjb250ZW50LCRsZW4pIHsNCiAgICAgIGlmIChzdHJsZW4oJGNvbnRlbnQpID4gJGxlbikgew0KICAgICAgICAkbGVuID0gY2VpbCgkbGVuLzIpIC0gMjsNCiAgICAgICAgcmV0dXJuIHN1YnN0cigkY29udGVudCwgMCwkbGVuKS4iLi4uIi5zdWJzdHIoJGNvbnRlbnQsLSRsZW4pOw0KICAgICAgfSBlbHNlIHtyZXR1cm4gJGNvbnRlbnQ7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygidmlld19zaXplIikpIHsNCiAgICBmdW5jdGlvbiB2aWV3X3NpemUoJHNpemUpIHsNCiAgICAgIGlmICghaXNfbnVtZXJpYygkc2l6ZSkpIHsgcmV0dXJuIEZBTFNFOyB9DQogICAgICBlbHNlIHsNCiAgICAgICAgaWYgKCRzaXplID49IDEwNzM3NDE4MjQpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwNzM3NDE4MjQqMTAwKS8xMDAgLiIgR0IiO30NCiAgICAgICAgZWxzZWlmICgkc2l6ZSA+PSAxMDQ4NTc2KSB7JHNpemUgPSByb3VuZCgkc2l6ZS8xMDQ4NTc2KjEwMCkvMTAwIC4iIE1CIjt9DQogICAgICAgIGVsc2VpZiAoJHNpemUgPj0gMTAyNCkgeyRzaXplID0gcm91bmQoJHNpemUvMTAyNCoxMDApLzEwMCAuIiBLQiI7fQ0KICAgICAgICBlbHNlIHskc2l6ZSA9ICRzaXplIC4gIiBCIjt9DQogICAgICAgIHJldHVybiAkc2l6ZTsNCiAgICAgIH0NCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX2NvcHlfZGlyIikpIHsNCiAgICBmdW5jdGlvbiBmc19jb3B5X2RpcigkZCwkdCkgew0KICAgICAgJGQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOw0KICAgICAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICAgICAgJGggPSBvcGVuZGlyKCRkKTsNCiAgICAgIHdoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkgIT09IEZBTFNFKSB7DQogICAgICAgIGlmICgoJG8gIT0gIi4iKSBhbmQgKCRvICE9ICIuLiIpKSB7DQogICAgICAgICAgaWYgKCFpc19kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gY29weSgkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCiAgICAgICAgICBlbHNlIHskcmV0ID0gbWtkaXIoJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7IGZzX2NvcHlfZGlyKCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7fQ0KICAgICAgICAgIGlmICghJHJldCkge3JldHVybiAkcmV0O30NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgY2xvc2VkaXIoJGgpOw0KICAgICAgcmV0dXJuIFRSVUU7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19jb3B5X29iaiIpKSB7DQogICAgZnVuY3Rpb24gZnNfY29weV9vYmooJGQsJHQpIHsNCiAgICAgICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiAgICAgICR0ID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR0KTsNCiAgICAgIGlmICghaXNfZGlyKGRpcm5hbWUoJHQpKSkge21rZGlyKGRpcm5hbWUoJHQpKTt9DQogICAgICBpZiAoaXNfZGlyKCRkKSkgew0KICAgICAgICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAgIGlmIChzdWJzdHIoJHQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskdCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgICAgICAgcmV0dXJuIGZzX2NvcHlfZGlyKCRkLCR0KTsNCiAgICAgIH0NCiAgICAgIGVsc2VpZiAoaXNfZmlsZSgkZCkpIHsgcmV0dXJuIGNvcHkoJGQsJHQpOyB9DQogICAgICBlbHNlIHsgcmV0dXJuIEZBTFNFOyB9DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19tb3ZlX2RpciIpKSB7DQogICAgZnVuY3Rpb24gZnNfbW92ZV9kaXIoJGQsJHQpIHsNCiAgICAgICRoID0gb3BlbmRpcigkZCk7DQogICAgICBpZiAoIWlzX2RpcigkdCkpIHtta2RpcigkdCk7fQ0KICAgICAgd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHsNCiAgICAgICAgaWYgKCgkbyAhPSAiLiIpIGFuZCAoJG8gIT0gIi4uIikpIHsNCiAgICAgICAgICAkcmV0ID0gVFJVRTsNCiAgICAgICAgICBpZiAoIWlzX2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSkgeyRyZXQgPSBjb3B5KCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7fQ0KICAgICAgICAgIGVsc2Uge2lmIChta2RpcigkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSBhbmQgZnNfY29weV9kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSkgeyRyZXQgPSBGQUxTRTt9fQ0KICAgICAgICAgIGlmICghJHJldCkge3JldHVybiAkcmV0O30NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgY2xvc2VkaXIoJGgpOw0KICAgICAgcmV0dXJuIFRSVUU7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19tb3ZlX29iaiIpKSB7DQogICAgZnVuY3Rpb24gZnNfbW92ZV9vYmooJGQsJHQpIHsNCiAgICAgICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiAgICAgICR0ID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR0KTsNCiAgICAgIGlmIChpc19kaXIoJGQpKSB7DQogICAgICAgIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgICAgICAgaWYgKHN1YnN0cigkdCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR0IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICAgICAgICByZXR1cm4gZnNfbW92ZV9kaXIoJGQsJHQpOw0KICAgICAgfQ0KICAgICAgZWxzZWlmIChpc19maWxlKCRkKSkgew0KICAgICAgICBpZihjb3B5KCRkLCR0KSkge3JldHVybiB1bmxpbmsoJGQpO30NCiAgICAgICAgZWxzZSB7dW5saW5rKCR0KTsgcmV0dXJuIEZBTFNFO30NCiAgICAgIH0NCiAgICAgIGVsc2Uge3JldHVybiBGQUxTRTt9DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19ybWRpciIpKSB7DQogICAgZnVuY3Rpb24gZnNfcm1kaXIoJGQpIHsNCiAgICAgICRoID0gb3BlbmRpcigkZCk7DQogICAgICB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkgew0KICAgICAgICBpZiAoKCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkgew0KICAgICAgICAgIGlmICghaXNfZGlyKCRkLiRvKSkge3VubGluaygkZC4kbyk7fQ0KICAgICAgICAgIGVsc2Uge2ZzX3JtZGlyKCRkLiRvLkRJUkVDVE9SWV9TRVBBUkFUT1IpOyBybWRpcigkZC4kbyk7fQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBjbG9zZWRpcigkaCk7DQogICAgICBybWRpcigkZCk7DQogICAgICByZXR1cm4gIWlzX2RpcigkZCk7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19ybW9iaiIpKSB7DQogICAgZnVuY3Rpb24gZnNfcm1vYmooJG8pIHsNCiAgICAgICRvID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRvKTsNCiAgICAgIGlmIChpc19kaXIoJG8pKSB7DQogICAgICAgIGlmIChzdWJzdHIoJG8sLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskbyAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgICAgICAgcmV0dXJuIGZzX3JtZGlyKCRvKTsNCiAgICAgIH0NCiAgICAgIGVsc2VpZiAoaXNfZmlsZSgkbykpIHtyZXR1cm4gdW5saW5rKCRvKTt9DQogICAgICBlbHNlIHtyZXR1cm4gRkFMU0U7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygidGFic29ydCIpKSB7DQogICAgZnVuY3Rpb24gdGFic29ydCgkYSwkYikge2dsb2JhbCAkdjsgcmV0dXJuIHN0cm5hdGNtcCgkYVskdl0sICRiWyR2XSk7fQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3Blcm1zIikpIHsNCiAgICBmdW5jdGlvbiB2aWV3X3Blcm1zKCRtb2RlKSB7DQogICAgICBpZiAoKCRtb2RlICYgMHhDMDAwKSA9PT0gMHhDMDAwKSB7JHR5cGUgPSAicyI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDQwMDApID09PSAweDQwMDApIHskdHlwZSA9ICJkIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4QTAwMCkgPT09IDB4QTAwMCkgeyR0eXBlID0gImwiO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHg4MDAwKSA9PT0gMHg4MDAwKSB7JHR5cGUgPSAiLSI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDYwMDApID09PSAweDYwMDApIHskdHlwZSA9ICJiIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4MjAwMCkgPT09IDB4MjAwMCkgeyR0eXBlID0gImMiO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHgxMDAwKSA9PT0gMHgxMDAwKSB7JHR5cGUgPSAicCI7fQ0KICAgICAgZWxzZSB7JHR5cGUgPSAiPyI7fQ0KICAgICAgJG93bmVyWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDQwMCk/InIiOiItIjsNCiAgICAgICRvd25lclsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMjAwKT8idyI6Ii0iOw0KICAgICAgJG93bmVyWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDEwMCk/IngiOiItIjsNCiAgICAgICRncm91cFsicmVhZCJdID0gKCRtb2RlICYgMDAwNDApPyJyIjoiLSI7DQogICAgICAkZ3JvdXBbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAyMCk/InciOiItIjsNCiAgICAgICRncm91cFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMTApPyJ4IjoiLSI7DQogICAgICAkd29ybGRbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDA0KT8iciI6Ii0iOw0KICAgICAgJHdvcmxkWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMDIpPyAidyI6Ii0iOw0KICAgICAgJHdvcmxkWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDAwMSk/IngiOiItIjsNCiAgICAgIGlmICgkbW9kZSAmIDB4ODAwKSB7JG93bmVyWyJleGVjdXRlIl0gPSAoJG93bmVyWyJleGVjdXRlIl0gPT0gIngiKT8icyI6IlMiO30NCiAgICAgIGlmICgkbW9kZSAmIDB4NDAwKSB7JGdyb3VwWyJleGVjdXRlIl0gPSAoJGdyb3VwWyJleGVjdXRlIl0gPT0gIngiKT8icyI6IlMiO30NCiAgICAgIGlmICgkbW9kZSAmIDB4MjAwKSB7JHdvcmxkWyJleGVjdXRlIl0gPSAoJHdvcmxkWyJleGVjdXRlIl0gPT0gIngiKT8idCI6IlQiO30NCiAgICAgIHJldHVybiAkdHlwZS5qb2luKCIiLCRvd25lcikuam9pbigiIiwkZ3JvdXApLmpvaW4oIiIsJHdvcmxkKTsNCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikgYW5kICFpbl9hcnJheSgicG9zaXhfZ2V0cHd1aWQiLCRkaXNhYmxlZnVuYykpIHtmdW5jdGlvbiBwb3NpeF9nZXRwd3VpZCgkdWlkKSB7cmV0dXJuIEZBTFNFO319DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRncmdpZCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2dldGdyZ2lkIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfZ2V0Z3JnaWQoJGdpZCkge3JldHVybiBGQUxTRTt9fQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygicG9zaXhfa2lsbCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2tpbGwiLCRkaXNhYmxlZnVuYykpIHtmdW5jdGlvbiBwb3NpeF9raWxsKCRnaWQpIHtyZXR1cm4gRkFMU0U7fX0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInBhcnNlX3Blcm1zIikpIHsNCiAgICBmdW5jdGlvbiBwYXJzZV9wZXJtcygkbW9kZSkgew0KICAgICAgaWYgKCgkbW9kZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkgeyR0ID0gInMiO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHg0MDAwKSA9PT0gMHg0MDAwKSB7JHQgPSAiZCI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDApIHskdCA9ICJsIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4ODAwMCkgPT09IDB4ODAwMCkgeyR0ID0gIi0iO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHg2MDAwKSA9PT0gMHg2MDAwKSB7JHQgPSAiYiI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHskdCA9ICJjIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkgeyR0ID0gInAiO30NCiAgICAgIGVsc2UgeyR0ID0gIj8iO30NCiAgICAgICRvWyJyIl0gPSAoJG1vZGUgJiAwMDQwMCkgPiAwOyAkb1sidyJdID0gKCRtb2RlICYgMDAyMDApID4gMDsgJG9bIngiXSA9ICgkbW9kZSAmIDAwMTAwKSA+IDA7DQogICAgICAkZ1siciJdID0gKCRtb2RlICYgMDAwNDApID4gMDsgJGdbInciXSA9ICgkbW9kZSAmIDAwMDIwKSA+IDA7ICRnWyJ4Il0gPSAoJG1vZGUgJiAwMDAxMCkgPiAwOw0KICAgICAgJHdbInIiXSA9ICgkbW9kZSAmIDAwMDA0KSA+IDA7ICR3WyJ3Il0gPSAoJG1vZGUgJiAwMDAwMikgPiAwOyAkd1sieCJdID0gKCRtb2RlICYgMDAwMDEpID4gMDsNCiAgICAgIHJldHVybiBhcnJheSgidCI9PiR0LCJvIj0+JG8sImciPT4kZywidyI9PiR3KTsNCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInBhcnNlc29ydCIpKSB7DQogICAgZnVuY3Rpb24gcGFyc2Vzb3J0KCRzb3J0KSB7DQogICAgICAkb25lID0gaW50dmFsKCRzb3J0KTsNCiAgICAgICRzZWNvbmQgPSBzdWJzdHIoJHNvcnQsLTEpOw0KICAgICAgaWYgKCRzZWNvbmQgIT0gImQiKSB7JHNlY29uZCA9ICJhIjt9DQogICAgICByZXR1cm4gYXJyYXkoJG9uZSwkc2Vjb25kKTsNCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfcGVybXNfY29sb3IiKSkgew0KICAgIGZ1bmN0aW9uIHZpZXdfcGVybXNfY29sb3IoJG8pIHsNCiAgICAgIGlmICghaXNfcmVhZGFibGUoJG8pKSB7cmV0dXJuICI8Zm9udCBjb2xvcj1yZWQ+Ii52aWV3X3Blcm1zKGZpbGVwZXJtcygkbykpLiI8L2ZvbnQ+Ijt9DQogICAgICBlbHNlaWYgKCFpc193cml0YWJsZSgkbykpIHtyZXR1cm4gIjxmb250IGNvbG9yPXdoaXRlPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fQ0KICAgICAgZWxzZSB7cmV0dXJuICI8Zm9udCBjb2xvcj1saW1lPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfZHVtcCIpKSB7DQogICAgZnVuY3Rpb24gbXlzcWxfZHVtcCgkc2V0KSB7DQogICAgICBnbG9iYWwgJHNoX3ZlcjsNCiAgICAgICRzb2NrID0gJHNldFsic29jayJdOw0KICAgICAgJGRiID0gJHNldFsiZGIiXTsNCiAgICAgICRwcmludCA9ICRzZXRbInByaW50Il07DQogICAgICAkbmwyYnIgPSAkc2V0WyJubDJiciJdOw0KICAgICAgJGZpbGUgPSAkc2V0WyJmaWxlIl07DQogICAgICAkYWRkX2Ryb3AgPSAkc2V0WyJhZGRfZHJvcCJdOw0KICAgICAgJHRhYnMgPSAkc2V0WyJ0YWJzIl07DQogICAgICAkb25seXRhYnMgPSAkc2V0WyJvbmx5dGFicyJdOw0KICAgICAgJHJldCA9IGFycmF5KCk7DQogICAgICAkcmV0WyJlcnIiXSA9IGFycmF5KCk7DQogICAgICBpZiAoIWlzX3Jlc291cmNlKCRzb2NrKSkge2VjaG8oIkVycm9yOiBcJHNvY2sgaXMgbm90IHZhbGlkIHJlc291cmNlLiIpO30NCiAgICAgIGlmIChlbXB0eSgkZGIpKSB7JGRiID0gImRiIjt9DQogICAgICBpZiAoZW1wdHkoJHByaW50KSkgeyRwcmludCA9IDA7fQ0KICAgICAgaWYgKGVtcHR5KCRubDJicikpIHskbmwyYnIgPSAwO30NCiAgICAgIGlmIChlbXB0eSgkYWRkX2Ryb3ApKSB7JGFkZF9kcm9wID0gVFJVRTt9DQogICAgICBpZiAoZW1wdHkoJGZpbGUpKSB7DQogICAgICAgICRmaWxlID0gJHRtcGRpci4iZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJGRiLiJfIi5kYXRlKCJkLW0tWS1ILWktcyIpLiIuc3FsIjsNCiAgICAgIH0NCiAgICAgIGlmICghaXNfYXJyYXkoJHRhYnMpKSB7JHRhYnMgPSBhcnJheSgpO30NCiAgICAgIGlmIChlbXB0eSgkYWRkX2Ryb3ApKSB7JGFkZF9kcm9wID0gVFJVRTt9DQogICAgICBpZiAoc2l6ZW9mKCR0YWJzKSA9PSAwKSB7DQogICAgICAgICRyZXMgPSBteXNxbF9xdWVyeSgiU0hPVyBUQUJMRVMgRlJPTSAiLiRkYiwgJHNvY2spOw0KICAgICAgICBpZiAobXlzcWxfbnVtX3Jvd3MoJHJlcykgPiAwKSB7d2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlcykpIHskdGFic1tdID0gJHJvd1swXTt9fQ0KICAgICAgfQ0KICAgICAgJG91dCA9ICINCiAgICAgICMgRHVtcGVkIGJ5ICIuJHNoX25hbWUuIg0KICAgICAgIw0KICAgICAgIyBIb3N0IHNldHRpbmdzOg0KICAgICAgIyBNeVNRTCB2ZXJzaW9uOiAoIi5teXNxbF9nZXRfc2VydmVyX2luZm8oKS4iKSBydW5uaW5nIG9uICIuZ2V0ZW52KCJTRVJWRVJfQUREUiIpLiIgKCIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIpIi4iDQogICAgICAjIERhdGU6ICIuZGF0ZSgiZC5tLlkgSDppOnMiKS4iDQogICAgICAjIERCOiBcIiIuJGRiLiJcIg0KICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI7DQogICAgICAkYyA9IGNvdW50KCRvbmx5dGFicyk7DQogICAgICBmb3JlYWNoKCR0YWJzIGFzICR0YWIpIHsNCiAgICAgICAgaWYgKChpbl9hcnJheSgkdGFiLCRvbmx5dGFicykpIG9yICghJGMpKSB7DQogICAgICAgICAgaWYgKCRhZGRfZHJvcCkgeyRvdXQgLj0gIkRST1AgVEFCTEUgSUYgRVhJU1RTIGAiLiR0YWIuImA7XG4iO30NCiAgICAgICAgICAkcmVzID0gbXlzcWxfcXVlcnkoIlNIT1cgQ1JFQVRFIFRBQkxFIGAiLiR0YWIuImAiLCAkc29jayk7DQogICAgICAgICAgaWYgKCEkcmVzKSB7JHJldFsiZXJyIl1bXSA9IG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXMpOw0KICAgICAgICAgICAgJG91dCAuPSAkcm93WyIxIl0uIjtcblxuIjsNCiAgICAgICAgICAgICRyZXMgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSBgJHRhYmAiLCAkc29jayk7DQogICAgICAgICAgICBpZiAobXlzcWxfbnVtX3Jvd3MoJHJlcykgPiAwKSB7DQogICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHJlcykpIHsNCiAgICAgICAgICAgICAgICAka2V5cyA9IGltcGxvZGUoImAsIGAiLCBhcnJheV9rZXlzKCRyb3cpKTsNCiAgICAgICAgICAgICAgICAkdmFsdWVzID0gYXJyYXlfdmFsdWVzKCRyb3cpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2goJHZhbHVlcyBhcyAkaz0+JHYpIHskdmFsdWVzWyRrXSA9IGFkZHNsYXNoZXMoJHYpO30NCiAgICAgICAgICAgICAgICAkdmFsdWVzID0gaW1wbG9kZSgiJywgJyIsICR2YWx1ZXMpOw0KICAgICAgICAgICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gYCR0YWJgKGAiLiRrZXlzLiJgKSBWQUxVRVMgKCciLiR2YWx1ZXMuIicpO1xuIjsNCiAgICAgICAgICAgICAgICAkb3V0IC49ICRzcWw7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgICRvdXQgLj0gIiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuIjsNCiAgICAgIGlmICgkZmlsZSkgew0KICAgICAgICAkZnAgPSBmb3BlbigkZmlsZSwgInciKTsNCiAgICAgICAgaWYgKCEkZnApIHskcmV0WyJlcnIiXVtdID0gMjt9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgIGZ3cml0ZSAoJGZwLCAkb3V0KTsNCiAgICAgICAgICBmY2xvc2UgKCRmcCk7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGlmICgkcHJpbnQpIHtpZiAoJG5sMmJyKSB7ZWNobyBubDJicigkb3V0KTt9IGVsc2Uge2VjaG8gJG91dDt9fQ0KICAgICAgcmV0dXJuICRvdXQ7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9idWlsZHdoZXJlIikpIHsNCiAgICBmdW5jdGlvbiBteXNxbF9idWlsZHdoZXJlKCRhcnJheSwkc2VwPSIgYW5kIiwkZnVuY3RzPWFycmF5KCkpIHsNCiAgICAgIGlmICghaXNfYXJyYXkoJGFycmF5KSkgeyRhcnJheSA9IGFycmF5KCk7fQ0KICAgICAgJHJlc3VsdCA9ICIiOw0KICAgICAgZm9yZWFjaCgkYXJyYXkgYXMgJGs9PiR2KSB7DQogICAgICAgICR2YWx1ZSA9ICIiOw0KICAgICAgICBpZiAoIWVtcHR5KCRmdW5jdHNbJGtdKSkgeyR2YWx1ZSAuPSAkZnVuY3RzWyRrXS4iKCI7fQ0KICAgICAgICAkdmFsdWUgLj0gIiciLmFkZHNsYXNoZXMoJHYpLiInIjsNCiAgICAgICAgaWYgKCFlbXB0eSgkZnVuY3RzWyRrXSkpIHskdmFsdWUgLj0gIikiO30NCiAgICAgICAgJHJlc3VsdCAuPSAiYCIuJGsuImAgPSAiLiR2YWx1ZS4kc2VwOw0KICAgICAgfQ0KICAgICAgJHJlc3VsdCA9IHN1YnN0cigkcmVzdWx0LDAsc3RybGVuKCRyZXN1bHQpLXN0cmxlbigkc2VwKSk7DQogICAgICByZXR1cm4gJHJlc3VsdDsNCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2ZldGNoX2FsbCIpKSB7DQogICAgZnVuY3Rpb24gbXlzcWxfZmV0Y2hfYWxsKCRxdWVyeSwkc29jaykgew0KICAgICAgaWYgKCRzb2NrKSB7JHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwkc29jayk7fQ0KICAgICAgZWxzZSB7JHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSk7fQ0KICAgICAgJGFycmF5ID0gYXJyYXkoKTsNCiAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHskYXJyYXlbXSA9ICRyb3c7fQ0KICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgICByZXR1cm4gJGFycmF5Ow0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfc21hcnRlcnJvciIpKSB7DQogICAgZnVuY3Rpb24gbXlzcWxfc21hcnRlcnJvcigkdHlwZSwkc29jaykgew0KICAgICAgaWYgKCRzb2NrKSB7JGVycm9yID0gbXlzcWxfZXJyb3IoJHNvY2spO30NCiAgICAgIGVsc2UgeyRlcnJvciA9IG15c3FsX2Vycm9yKCk7fQ0KICAgICAgJGVycm9yID0gaHRtbHNwZWNpYWxjaGFycygkZXJyb3IpOw0KICAgICAgcmV0dXJuICRlcnJvcjsNCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX3F1ZXJ5X2Zvcm0iKSkgew0KICAgIGZ1bmN0aW9uIG15c3FsX3F1ZXJ5X2Zvcm0oKSB7DQogICAgICBnbG9iYWwgJHN1Ym1pdCwkc3FsX3gsJHNxbF9xdWVyeSwkc3FsX3F1ZXJ5X3Jlc3VsdCwkc3FsX2NvbmZpcm0sJHNxbF9xdWVyeV9lcnJvciwkdGJsX3N0cnVjdDsNCiAgICAgIGlmICgoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFuZCAoJHNxbF9jb25maXJtKSkge2lmICghJHNxbF9xdWVyeV9lcnJvcikgeyRzcWxfcXVlcnlfZXJyb3IgPSAiUXVlcnkgd2FzIGVtcHR5Ijt9IGVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9xdWVyeV9lcnJvci4iPGJyPiI7fQ0KICAgICAgaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfeCA9ICRzcWxfZ290bzt9DQogICAgICBpZiAoKCEkc3VibWl0KSBvciAoJHNxbF94KSkgew0KICAgICAgICBlY2hvICI8dGFibGUgYm9yZGVyPTA+PHRyPjx0ZD48Zm9ybSBuYW1lPVwiYm9nZWxfc3FscXVlcnlcIiBtZXRob2Q9UE9TVD48Yj4iOyBpZiAoKCRzcWxfcXVlcnkpIGFuZCAoISRzdWJtaXQpKSB7ZWNobyAiRG8geW91IHJlYWxseSB3YW50IHRvIjt9IGVsc2Uge2VjaG8gIlNRTC1RdWVyeSI7fSBlY2hvICI6PC9iPjxicj48YnI+PHRleHRhcmVhIG5hbWU9c3FsX3F1ZXJ5IGNvbHM9MTAwIHJvd3M9MTA+Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcXVlcnkpLiI8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT1zcWw+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX3ggdmFsdWU9cXVlcnk+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX3RibCB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXN1Ym1pdCB2YWx1ZT1cIjFcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF9nb3RvXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9nb3RvKS4iXCI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3FsX2NvbmZpcm0gdmFsdWU9XCJZZXNcIj4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiTm9cIj48L2Zvcm0+PC90ZD4iOw0KICAgICAgICBpZiAoJHRibF9zdHJ1Y3QpIHsNCiAgICAgICAgICBlY2hvICI8dGQgdmFsaWduPVwidG9wXCI+PGI+RmllbGRzOjwvYj48YnI+IjsNCiAgICAgICAgICBmb3JlYWNoICgkdGJsX3N0cnVjdCBhcyAkZmllbGQpIHskbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsgZWNobyAiKyA8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC5ib2dlbF9zcWxxdWVyeS5zcWxfcXVlcnkudmFsdWUrPSdgIi4kbmFtZS4iYCc7XCI+PGI+Ii4kbmFtZS4iPC9iPjwvYT48YnI+Ijt9DQogICAgICAgICAgZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfcXVlcnkgPSAkc3FsX2xhc3RfcXVlcnk7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfY3JlYXRlX2RiIikpIHsNCiAgICBmdW5jdGlvbiBteXNxbF9jcmVhdGVfZGIoJGRiLCRzb2NrPSIiKSB7DQogICAgICAkc3FsID0gIkNSRUFURSBEQVRBQkFTRSBgIi5hZGRzbGFzaGVzKCRkYikuImA7IjsNCiAgICAgIGlmICgkc29jaykge3JldHVybiBteXNxbF9xdWVyeSgkc3FsLCRzb2NrKTt9DQogICAgICBlbHNlIHtyZXR1cm4gbXlzcWxfcXVlcnkoJHNxbCk7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfcGFyc2UiKSkgew0KICAgIGZ1bmN0aW9uIG15c3FsX3F1ZXJ5X3BhcnNlKCRxdWVyeSkgew0KICAgICAgJHF1ZXJ5ID0gdHJpbSgkcXVlcnkpOw0KICAgICAgJGFyciA9IGV4cGxvZGUgKCIgIiwkcXVlcnkpOw0KICAgICAgJHR5cGVzID0gYXJyYXkoDQogICAgICAgICJTRUxFQ1QiPT5hcnJheSgzLDEpLA0KICAgICAgICAiU0hPVyI9PmFycmF5KDIsMSksDQogICAgICAgICJERUxFVEUiPT5hcnJheSgxKSwNCiAgICAgICAgIkRST1AiPT5hcnJheSgxKQ0KICAgICAgKTsNCiAgICAgICRyZXN1bHQgPSBhcnJheSgpOw0KICAgICAgJG9wID0gc3RydG91cHBlcigkYXJyWzBdKTsNCiAgICAgIGlmIChpc19hcnJheSgkdHlwZXNbJG9wXSkpIHsNCiAgICAgICAgJHJlc3VsdFsicHJvcGVydGlvbnMiXSA9ICR0eXBlc1skb3BdOw0KICAgICAgICAkcmVzdWx0WyJxdWVyeSJdICA9ICRxdWVyeTsNCiAgICAgICAgaWYgKCR0eXBlc1skb3BdID09IDIpIHsNCiAgICAgICAgICBmb3JlYWNoKCRhcnIgYXMgJGs9PiR2KSB7DQogICAgICAgICAgICBpZiAoc3RydG91cHBlcigkdikgPT0gIkxJTUlUIikgew0KICAgICAgICAgICAgICAkcmVzdWx0WyJsaW1pdCJdID0gJGFyclskaysxXTsNCiAgICAgICAgICAgICAgJHJlc3VsdFsibGltaXQiXSA9IGV4cGxvZGUoIiwiLCRyZXN1bHRbImxpbWl0Il0pOw0KICAgICAgICAgICAgICBpZiAoY291bnQoJHJlc3VsdFsibGltaXQiXSkgPT0gMSkgeyRyZXN1bHRbImxpbWl0Il0gPSBhcnJheSgwLCRyZXN1bHRbImxpbWl0Il1bMF0pO30NCiAgICAgICAgICAgICAgdW5zZXQoJGFyclska10sJGFyclskaysxXSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBlbHNlIHtyZXR1cm4gRkFMU0U7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiY2Fmc2VhcmNoIikpIHsNCiAgICBmdW5jdGlvbiBjYWZzZWFyY2goJGQpIHsNCiAgICAgIGdsb2JhbCAkZm91bmQ7DQogICAgICBnbG9iYWwgJGZvdW5kX2Q7DQogICAgICBnbG9iYWwgJGZvdW5kX2Y7DQogICAgICBnbG9iYWwgJHNlYXJjaF9pX2Y7DQogICAgICBnbG9iYWwgJHNlYXJjaF9pX2Q7DQogICAgICBnbG9iYWwgJGE7DQogICAgICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAkaCA9IG9wZW5kaXIoJGQpOw0KICAgICAgd2hpbGUgKCgkZiA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHsNCiAgICAgICAgaWYoJGYgIT0gIi4iICYmICRmICE9ICIuLiIpIHsNCiAgICAgICAgICAkYm9vbCA9IChlbXB0eSgkYVsibmFtZV9yZWdleHAiXSkgYW5kIHN0cnBvcygkZiwkYVsibmFtZSJdKSAhPT0gRkFMU0UpIHx8ICgkYVsibmFtZV9yZWdleHAiXSBhbmQgZXJlZygkYVsibmFtZSJdLCRmKSk7DQogICAgICAgICAgaWYgKGlzX2RpcigkZC4kZikpIHsNCiAgICAgICAgICAgICRzZWFyY2hfaV9kKys7DQogICAgICAgICAgICBpZiAoZW1wdHkoJGFbInRleHQiXSkgYW5kICRib29sKSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2QrKzt9DQogICAgICAgICAgICBpZiAoIWlzX2xpbmsoJGQuJGYpKSB7Y2Fmc2VhcmNoKCRkLiRmKTt9DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgJHNlYXJjaF9pX2YrKzsNCiAgICAgICAgICAgIGlmICgkYm9vbCkgew0KICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRhWyJ0ZXh0Il0pKSB7DQogICAgICAgICAgICAgICAgJHIgPSBAZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOw0KICAgICAgICAgICAgICAgIGlmICgkYVsidGV4dF93d28iXSkgeyRhWyJ0ZXh0Il0gPSAiICIudHJpbSgkYVsidGV4dCJdKS4iICI7fQ0KICAgICAgICAgICAgICAgIGlmICghJGFbInRleHRfY3MiXSkgeyRhWyJ0ZXh0Il0gPSBzdHJ0b2xvd2VyKCRhWyJ0ZXh0Il0pOyAkciA9IHN0cnRvbG93ZXIoJHIpO30NCiAgICAgICAgICAgICAgICBpZiAoJGFbInRleHRfcmVnZXhwIl0pIHskYm9vbCA9IGVyZWcoJGFbInRleHQiXSwkcik7fQ0KICAgICAgICAgICAgICAgIGVsc2UgeyRib29sID0gc3RycG9zKCIgIi4kciwkYVsidGV4dCJdLDEpO30NCiAgICAgICAgICAgICAgICBpZiAoJGFbInRleHRfbm90Il0pIHskYm9vbCA9ICEkYm9vbDt9DQogICAgICAgICAgICAgICAgaWYgKCRib29sKSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgZWxzZSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBjbG9zZWRpcigkaCk7DQogICAgfQ0KICB9DQogIGlmICgkeCA9PSAiZ29maWxlIikgew0KICAgIGlmIChpc19kaXIoJGYpKSB7ICR4ID0gImxzIjsgJGQgPSAkZjsgfQ0KICAgIGVsc2UgeyAkeCA9ICJmIjsgJGQgPSBkaXJuYW1lKCRmKTsgJGYgPSBiYXNlbmFtZSgkZik7IH0NCiAgfQ0KICBAb2Jfc3RhcnQoKTsNCiAgQG9iX2ltcGxpY2l0X2ZsdXNoKDApOw0KICBmdW5jdGlvbiBvbnBocHNodXRkb3duKCkgew0KICAgIGdsb2JhbCAkZ3ppcGVuY29kZSwkZnQ7DQogICAgaWYgKCFoZWFkZXJzX3NlbnQoKSBhbmQgJGd6aXBlbmNvZGUgYW5kICFpbl9hcnJheSgkZnQsYXJyYXkoImltZyIsImRvd25sb2FkIiwibm90ZXBhZCIpKSkgew0KICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgICBAb2JfZW5kX2NsZWFuKCk7DQogICAgICBAb2Jfc3RhcnQoIm9iX2d6SGFuZGxlciIpOw0KICAgICAgZWNobyAkdjsNCiAgICAgIEBvYl9lbmRfZmx1c2goKTsNCiAgICB9DQogIH0NCiAgZnVuY3Rpb24gYm9nZWxleGl0KCkgew0KICAgIG9ucGhwc2h1dGRvd24oKTsNCiAgICBleGl0Ow0KICB9DQogIGhlYWRlcigiRXhwaXJlczogTW9uLCAxMiBEZWMgMjAxMiAwNTowMDowMCBHTVQiKTsNCiAgaGVhZGVyKCJMYXN0LU1vZGlmaWVkOiAiLmdtZGF0ZSgiRCwgZCBNIFkgSDppOnMiKS4iIEdNVCIpOw0KICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlIik7DQogIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCIsIEZBTFNFKTsNCiAgaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7DQogIGlmIChlbXB0eSgkdG1wZGlyKSkgew0KICAgICR0bXBkaXIgPSBpbmlfZ2V0KCJ1cGxvYWRfdG1wX2RpciIpOw0KICAgIGlmIChpc19kaXIoJHRtcGRpcikpIHskdG1wZGlyID0gIi90bXAvIjt9DQogIH0NCiAgJHRtcGRpciA9IHJlYWxwYXRoKCR0bXBkaXIpOw0KICAkdG1wZGlyID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR0bXBkaXIpOw0KICBpZiAoc3Vic3RyKCR0bXBkaXIsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskdG1wZGlyIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICBpZiAoZW1wdHkoJHRtcGRpcl9sb2dzKSkgeyR0bXBkaXJfbG9ncyA9ICR0bXBkaXI7fQ0KICBlbHNlIHskdG1wZGlyX2xvZ3MgPSByZWFscGF0aCgkdG1wZGlyX2xvZ3MpO30NCiAgZnVuY3Rpb24gc2hvd3N0YXQoJHN0YXQpIHsNCiAgICBpZiAoJHN0YXQ9PSJvbiIpIHsgcmV0dXJuICI8Zm9udCBjb2xvcj0jMDBGRjAwPjxiPk9OPC9iPjwvZm9udD4iOyB9DQogICAgZWxzZSB7IHJldHVybiAiPGZvbnQgY29sb3I9I0ZGOTkwMD48Yj5PRkY8L2I+PC9mb250PiI7IH0NCiAgfQ0KICBmdW5jdGlvbiB0ZXN0U0goKSB7DQogICAgaWYgKGV4KCdzaCAtLWhlbHAnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0NCiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsgfQ0KICB9DQogICBmdW5jdGlvbiB0ZXN0Z2NjKCkgew0KICAgIGlmIChleCgnZ2NjIC0taGVscCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdHBlcmwoKSB7DQogICAgaWYgKGV4KCdwZXJsIC0taGVscCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdGZldGNoKCkgew0KICAgIGlmKGV4KCdmZXRjaCAtLWhlbHAnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0NCiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsgfQ0KICB9DQogIGZ1bmN0aW9uIHRlc3R3Z2V0KCkgew0KICAgIGlmIChleCgnd2dldCAtLWhlbHAnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0NCiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsgfQ0KICB9DQogIGZ1bmN0aW9uIHRlc3RjdXJsKCkgew0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdG15c3FsKCkgew0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ215c3FsX2Nvbm5lY3QnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0NCiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsgfQ0KICB9DQogIGZ1bmN0aW9uIHNob3dkaXNhYmxlZnVuY3Rpb25zKCkgew0KICAgIGlmICgkZGlzYWJsZWZ1bmM9QGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIikpeyByZXR1cm4gIjxmb250IGNvbG9yPSNGRjk5MDA+PGI+Ii4kZGlzYWJsZWZ1bmMuIjwvYj48L2ZvbnQ+IjsgfQ0KICAgIGVsc2UgeyByZXR1cm4gIjxmb250IGNvbG9yPSMwMEZGMDA+PGI+Tk9ORTwvYj48L2I+PC9mb250PiI7IH0NCiAgfQ0KICBpZiAoQGluaV9nZXQoInNhZmVfbW9kZSIpIG9yIHN0cnRvbG93ZXIoQGluaV9nZXQoInNhZmVfbW9kZSIpKSA9PSAib24iKSB7DQogICAgJHNhZmVtb2RlID0gVFJVRTsNCiAgICAkaHNhZmVtb2RlID0gIjxmb250IGNvbG9yPSMzMzY2RkY+PGI+IE9OPC9iPjwvZm9udD4iOw0KICB9DQogIGVsc2Ugew0KICAgICRzYWZlbW9kZSA9IEZBTFNFOw0KICAgICRoc2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9I0ZGOTkwMD48Yj4gT0ZGPC9iPjwvZm9udD4iOw0KICB9DQogICR2ID0gQGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KICBpZiAoJHYgb3Igc3RydG9sb3dlcigkdikgPT0gIm9uIikgew0KICAgICRvcGVuYmFzZWRpciA9IFRSVUU7DQogICAgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1yZWQ+Ii4kdi4iPC9mb250PiI7DQogIH0NCiAgZWxzZSB7DQogICAgJG9wZW5iYXNlZGlyID0gRkFMU0U7DQogICAgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkY8L2ZvbnQ+IjsNCiAgfQ0KICAkc29ydCA9IGh0bWxzcGVjaWFsY2hhcnMoJHNvcnQpOw0KICBpZiAoZW1wdHkoJHNvcnQpKSB7JHNvcnQgPSAkc29ydF9kZWZhdWx0O30NCiAgJHNvcnRbMV0gPSBzdHJ0b2xvd2VyKCRzb3J0WzFdKTsNCiAgJERJU1BfU0VSVkVSX1NPRlRXQVJFID0gZ2V0ZW52KCJTRVJWRVJfU09GVFdBUkUiKTsNCiAgaWYgKCFlcmVnKCJQSFAvIi5waHB2ZXJzaW9uKCksJERJU1BfU0VSVkVSX1NPRlRXQVJFKSkgeyRESVNQX1NFUlZFUl9TT0ZUV0FSRSAuPSAiLiBQSFAvIi5waHB2ZXJzaW9uKCk7fQ0KICAkRElTUF9TRVJWRVJfU09GVFdBUkUgPSBzdHJfcmVwbGFjZSgiUEhQLyIucGhwdmVyc2lvbigpLCI8YSBocmVmPVwiIi4kc3VybC4ieD1waHBpbmZvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGI+PHU+UEhQLyIucGhwdmVyc2lvbigpLiI8L3U+PC9iPjwvYT4iLGh0bWxzcGVjaWFsY2hhcnMoJERJU1BfU0VSVkVSX1NPRlRXQVJFKSk7DQogIEBpbmlfc2V0KCJoaWdobGlnaHQuYmciLCRoaWdobGlnaHRfYmcpOw0KICBAaW5pX3NldCgiaGlnaGxpZ2h0LmNvbW1lbnQiLCRoaWdobGlnaHRfY29tbWVudCk7DQogIEBpbmlfc2V0KCJoaWdobGlnaHQuZGVmYXVsdCIsJGhpZ2hsaWdodF9kZWZhdWx0KTsNCiAgQGluaV9zZXQoImhpZ2hsaWdodC5odG1sIiwkaGlnaGxpZ2h0X2h0bWwpOw0KICBAaW5pX3NldCgiaGlnaGxpZ2h0LmtleXdvcmQiLCRoaWdobGlnaHRfa2V5d29yZCk7DQogIEBpbmlfc2V0KCJoaWdobGlnaHQuc3RyaW5nIiwkaGlnaGxpZ2h0X3N0cmluZyk7DQogIGlmICghaXNfYXJyYXkoJGFjdGJveCkpIHsgJGFjdGJveCA9IGFycmF5KCk7IH0NCiAgJGRzcGFjdCA9ICR4ID0gaHRtbHNwZWNpYWxjaGFycygkeCk7DQogICRkaXNwX2Z1bGxwYXRoID0gJGxzX2FyciA9ICRub3RscyA9IG51bGw7DQogICR1ZCA9IHVybGVuY29kZSgkZCk7DQogICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiAgaWYgKGVtcHR5KCRkKSkgeyRkID0gcmVhbHBhdGgoIi4iKTt9DQogIGVsc2VpZihyZWFscGF0aCgkZCkpIHskZCA9IHJlYWxwYXRoKCRkKTt9DQogICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICAkZCA9IHN0cl9yZXBsYWNlKCJcXFxcIiwiXFwiLCRkKTsNCiAgJGRpc3BkID0gaHRtbHNwZWNpYWxjaGFycygkZCk7DQplY2hvICRodG1sX3N0YXJ0Ow0KZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXIyPjxoMz48aW1nIHNyYz0naHR0cDovL2ltZ25vdy5jb20vdXBsb2Fkcy83MTQxMTAyODhVbnRpdGxlZC0xfjEucG5nJz48L2gzPjwvZGl2PiI7DQplY2hvICI8dGFibGUgaWQ9cGFnZWJhcj48dHI+PHRkIHdpZHRoPTUwJT48cD4iLg0KICAgICAiU29mdHdhcmUgOiAiLiRESVNQX1NFUlZFUl9TT0ZUV0FSRSAuIiAtIDxhIGhyZWY9Ii4kc3VybC4ieD1waHBpbmk+cGhwLmluaTwvYT48YnI+Ii4NCiAgICAgIlNBRkVNT0RFIDogJGhzYWZlbW9kZTxicj4iLg0KICAgICAiT1MgVFlQRSAgOiAiLnBocF91bmFtZSgpLiI8YnI+IjsNCmlmICghJHdpbikgeyBlY2hvICJVc2VyIElEIDogIi5teXNoZWxsZXhlYygiaWQiKTsgfQ0KZWxzZSB7IGVjaG8gIlVzZXIgOiAiIC4gZ2V0X2N1cnJlbnRfdXNlcigpOyB9DQplY2hvICI8L3A+PC90ZD4iLg0KICAgICAiPHRkIHdpZHRoPTUwJT48cD5TZXJ2ZXIgSVAgOiA8YSBocmVmPWh0dHA6Ly93d3cuaXAtYWRyZXNzLmNvbS8iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4iPiIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pLiI8L2E+IDxicj4gIi4NCiAgICAgIllvdXIgSVAgICA6IDxhIGhyZWY9aHR0cDovL3d3dy5pcC1hZHJlc3MuY29tLyIuJF9TRVJWRVJbIlJFTU9URV9BRERSIl0uIj4iLiRfU0VSVkVSWyJSRU1PVEVfQUREUiJdLiI8L2E+PGJyPjxicj4iLg0KCSAiT1RIRVJTICAgIDogPGEgaHJlZj1odHRwOi8vem9uZS1oLm9yZy9hcmNoaXZlL2RvbWFpbj0iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4iPlpPTkUtSDwvYT4gPGJyPiAiOw0KaWYoJHdpbil7ZWNobyAiRHJpdmVzIDogIi5kaXNwX2RyaXZlcygkZCwkc3VybCkuIjxicj4iO30NCmVjaG8gIkZyZWVzcGFjZSA6ICIuZGlzcF9mcmVlc3BhY2UoJGQpOw0KZWNobyAiPC9wPjwvdGQ+PC90cj4iOw0KZWNobyAiPHRyPjx0ZCBjb2xzcGFuPTI+PHA+IjsNCmVjaG8gIk15U1FMOiAiLnRlc3RteXNxbCgpLiIgY1VSTDogIi50ZXN0Y3VybCgpLiIgV0dldDogIi50ZXN0d2dldCgpLiIgRmV0Y2g6ICIudGVzdGZldGNoKCkuIiBQZXJsOiAiLnRlc3RwZXJsKCkuIiBnY2M6ICIudGVzdGdjYygpLiIgU0g6ICIudGVzdFNIKCkuIjxicj4iOw0KZWNobyAiRGlzYWJsZWQgRnVuY3Rpb25zOiAiLnNob3dkaXNhYmxlZnVuY3Rpb25zKCk7DQplY2hvICI8L3A+PC90ZD48L3RyPiI7DQplY2hvICI8dHI+PHRkIGNvbHNwYW49MiBpZD1tYWlubWVudT4iOw0KaWYgKGNvdW50KCRxdWlja2xhdW5jaDIpID4gMCkgew0KICBmb3JlYWNoKCRxdWlja2xhdW5jaDIgYXMgJGl0ZW0pIHsNCiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlZCIsdXJsZW5jb2RlKCRkKSwkaXRlbVsxXSk7DQogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXNvcnQiLCRzb3J0LCRpdGVtWzFdKTsNCiAgICAkdiA9IHJlYWxwYXRoKCRkLiIuLiIpOw0KICAgIGlmIChlbXB0eSgkdikpIHsNCiAgICAgICRhID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiAgICAgIHVuc2V0KCRhW2NvdW50KCRhKS0yXSk7DQogICAgICAkdiA9IGpvaW4oRElSRUNUT1JZX1NFUEFSQVRPUiwkYSk7DQogICAgfQ0KICAgICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiV1cGQiLHVybGVuY29kZSgkdiksJGl0ZW1bMV0pOw0KICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRpdGVtWzFdLiJcIj4iLiRpdGVtWzBdLiI8L2E+XG4iOw0KICB9DQp9DQplY2hvICI8L3RkPjx0cj48dGQgY29sc3Bhbj0yIGlkPW1haW5tZW51PiI7DQppZiAoY291bnQoJHF1aWNrbGF1bmNoMSkgPiAwKSB7DQogIGZvcmVhY2goJHF1aWNrbGF1bmNoMSBhcyAkaXRlbSkgew0KICAgICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVkIix1cmxlbmNvZGUoJGQpLCRpdGVtWzFdKTsNCiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlc29ydCIsJHNvcnQsJGl0ZW1bMV0pOw0KICAgICR2ID0gcmVhbHBhdGgoJGQuIi4uIik7DQogICAgaWYgKGVtcHR5KCR2KSkgew0KICAgICAgJGEgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOw0KICAgICAgdW5zZXQoJGFbY291bnQoJGEpLTJdKTsNCiAgICAgICR2ID0gam9pbihESVJFQ1RPUllfU0VQQVJBVE9SLCRhKTsNCiAgICB9DQogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXVwZCIsdXJsZW5jb2RlKCR2KSwkaXRlbVsxXSk7DQogICAgZWNobyAiPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT5cbiI7DQogIH0NCn0NCmVjaG8gIjwvdGQ+PC90cj48dHI+PHRkIGNvbHNwYW49Mj4iOw0KZWNobyAiPHAgY2xhc3M9ZmxlZnQ+IjsNCiRwZCA9ICRlID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLHN1YnN0cigkZCwwLC0xKSk7DQokaSA9IDA7DQpmb3JlYWNoKCRwZCBhcyAkYikgew0KICAkdCA9ICIiOyAkaiA9IDA7DQogIGZvcmVhY2ggKCRlIGFzICRyKSB7DQogICAgJHQuPSAkci5ESVJFQ1RPUllfU0VQQVJBVE9SOw0KICAgIGlmICgkaiA9PSAkaSkgeyBicmVhazsgfQ0KICAgICRqKys7DQogIH0NCiAgZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9bHMmZD0iLnVybGVuY29kZSgkdCkuIiZzb3J0PSIuJHNvcnQuIlwiPjxmb250IGNvbG9yPXdoaXRlPiIuaHRtbHNwZWNpYWxjaGFycygkYikuRElSRUNUT1JZX1NFUEFSQVRPUi4iPC9mb250PjwvYT4iOw0KICAkaSsrOw0KfQ0KZWNobyAiIC0gIjsNCmlmIChpc193cml0YWJsZSgkZCkpIHsNCiAgJHdkID0gVFJVRTsNCiAgJHdkdCA9ICI8Zm9udCBjb2xvcj0jMDBGRjAwPltPS108L2ZvbnQ+IjsNCiAgZWNobyAiPGI+PGZvbnQgY29sb3I9eWVsbG93PiIudmlld19wZXJtcyhmaWxlcGVybXMoJGQpKS4iPC9mb250PiI7DQp9DQplbHNlIHsNCiAgJHdkID0gRkFMU0U7DQogICR3ZHQgPSAiPGZvbnQgY29sb3I9cmVkPltSZWFkLU9ubHldPC9mb250PiI7DQogIGVjaG8gIjxiPiIudmlld19wZXJtc19jb2xvcigkZCkuIjwvYj4iOw0KfQ0KPz4NCjwvcD4NCjxkaXYgY2xhc3M9ZnJpZ2h0Pg0KPGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImxzIj4NCkRpcmVjdG9yeTogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImQiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJHbyI+DQo8L2Zvcm0+DQo8L2Rpdj4NCjwvdGQ+PC90cj48L3RhYmxlPg0KPD9waHANCmVjaG8gIjx0YWJsZSBpZD1tYWluaW5mbz48dHI+PHRkIHdpZHRoPVwiMTAwJVwiPlxuIjsNCmlmICgkeCA9PSAiIikgeyAkeCA9ICRkc3BhY3QgPSAibHMiOyB9DQppZiAoJHggPT0gInBocGluaSIgKSB7IGdldF9waHBpbmkoKTsgfQ0KaWYgKCR4ID09ICJzcWwiKSB7DQogICRzcWxfc3VybCA9ICRzdXJsLiJ4PXNxbCI7DQogIGlmICgkc3FsX2xvZ2luKSAgeyRzcWxfc3VybCAuPSAiJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7fQ0KICBpZiAoJHNxbF9wYXNzd2QpIHskc3FsX3N1cmwgLj0gIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7fQ0KICBpZiAoJHNxbF9zZXJ2ZXIpIHskc3FsX3N1cmwgLj0gIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7fQ0KICBpZiAoJHNxbF9wb3J0KSAgIHskc3FsX3N1cmwgLj0gIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTt9DQogIGlmICgkc3FsX2RiKSAgICAgeyRzcWxfc3VybCAuPSAiJnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYik7fQ0KICAkc3FsX3N1cmwgLj0gIiYiOw0KICBlY2hvICI8dGFibGU+Ii4NCiAgICAgICAiPHRyPjx0ZCB3aWR0aD1cIjEwMCVcIiBjb2xzcGFuPTIgY2xhc3M9YmFyaGVhZGVyPiI7DQogIGlmICgkc3FsX3NlcnZlcikgew0KICAgICRzcWxfc29jayA9IG15c3FsX2Nvbm5lY3QoJHNxbF9zZXJ2ZXIuIjoiLiRzcWxfcG9ydCwgJHNxbF9sb2dpbiwgJHNxbF9wYXNzd2QpOw0KICAgICRlcnIgPSBteXNxbF9zbWFydGVycm9yKCk7DQogICAgQG15c3FsX3NlbGVjdF9kYigkc3FsX2RiLCRzcWxfc29jayk7DQogICAgaWYgKCRzcWxfcXVlcnkgYW5kICRzdWJtaXQpIHskc3FsX3F1ZXJ5X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnksJHNxbF9zb2NrKTsgJHNxbF9xdWVyeV9lcnJvciA9IG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogIH0NCiAgZWxzZSB7JHNxbF9zb2NrID0gRkFMU0U7fQ0KICBlY2hvICIuOiBTUUwgTWFuYWdlciA6Ljxicj4iOw0KICBpZiAoISRzcWxfc29jaykgew0KICAgIGlmICghJHNxbF9zZXJ2ZXIpIHtlY2hvICJOTyBDT05ORUNUSU9OIjt9DQogICAgZWxzZSB7ZWNobyAiQ2FuJ3QgY29ubmVjdCEgIi4kZXJyO30NCiAgfQ0KICBlbHNlIHsNCiAgICAkc3FscXVpY2tsYXVuY2ggPSBhcnJheSgpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIkluZGV4Iiwkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIik7DQogICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiUXVlcnkiLCRzcWxfc3VybC4ic3FsX3g9cXVlcnkmc3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIlNlcnZlci1zdGF0dXMiLCRzdXJsLiJ4PXNxbCZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiZzcWxfeD1zZXJ2ZXJzdGF0dXMiKTsNCiAgICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJTZXJ2ZXIgdmFyaWFibGVzIiwkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImc3FsX3g9c2VydmVydmFycyIpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIlByb2Nlc3NlcyIsJHN1cmwuIng9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF94PXByb2Nlc3NlcyIpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIkxvZ291dCIsJHN1cmwuIng9c3FsIik7DQogICAgZWNobyAiTXlTUUwgIi5teXNxbF9nZXRfc2VydmVyX2luZm8oKS4iIChwcm90byB2LiIubXlzcWxfZ2V0X3Byb3RvX2luZm8gKCkuIikgcnVubmluZyBpbiAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiI6Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiBhcyAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIkAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiIgKHBhc3N3b3JkIC0gXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIik8YnI+IjsNCiAgICBpZiAoY291bnQoJHNxbHF1aWNrbGF1bmNoKSA+IDApIHtmb3JlYWNoKCRzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT4gXSAiO319DQogIH0NCiAgZWNobyAiPC90ZD48L3RyPjx0cj4iOw0KICBpZiAoISRzcWxfc29jaykgew0KICAgIGVjaG8gIjx0ZCB3aWR0aD1cIjI4JVwiIGhlaWdodD1cIjEwMFwiIHZhbGlnbj1cInRvcFwiPjxsaT5JZiBsb2dpbiBpcyBudWxsLCBsb2dpbiBpcyBvd25lciBvZiBwcm9jZXNzLjxsaT5JZiBob3N0IGlzIG51bGwsIGhvc3QgaXMgbG9jYWxob3N0PC9iPjxsaT5JZiBwb3J0IGlzIG51bGwsIHBvcnQgaXMgMzMwNiAoZGVmYXVsdCk8L3RkPjx0ZCB3aWR0aD1cIjkwJVwiIGhlaWdodD0xIHZhbGlnbj1cInRvcFwiPiI7DQogICAgZWNobyAiPHRhYmxlIHdpZHRoPVwiMTAwJVwiIGJvcmRlcj0wPjx0cj48dGQ+PGI+UGxlYXNlLCBmaWxsIHRoZSBmb3JtOjwvYj48dGFibGU+PHRyPjx0ZD48Yj5Vc2VybmFtZTwvYj48L3RkPjx0ZD48Yj5QYXNzd29yZDwvYj48L3RkPjx0ZD48Yj5EYXRhYmFzZTwvYj48L3RkPjwvdHI+PGZvcm0gYWN0aW9uPVwiICRzdXJsIFwiIG1ldGhvZD1cIlBPU1RcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ4XCIgdmFsdWU9XCJzcWxcIj48dHI+PHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cInJvb3RcIiBtYXhsZW5ndGg9XCI2NFwiPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwic3FsX3Bhc3N3ZFwiIHZhbHVlPVwiXCIgbWF4bGVuZ3RoPVwiNjRcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCJcIiBtYXhsZW5ndGg9XCI2NFwiPjwvdGQ+PC90cj48dHI+PHRkPjxiPkhvc3Q8L2I+PC90ZD48dGQ+PGI+UE9SVDwvYj48L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj1yaWdodD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3NlcnZlclwiIHZhbHVlPVwibG9jYWxob3N0XCIgbWF4bGVuZ3RoPVwiNjRcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1cIjMzMDZcIiBtYXhsZW5ndGg9XCI2XCIgc2l6ZT1cIjNcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29ubmVjdFwiPjwvdGQ+PC90cj48dHI+PHRkPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT48L3RkPiI7DQogIH0NCiAgZWxzZSB7DQogICAgaWYgKCFlbXB0eSgkc3FsX2RiKSkgew0KICAgICAgPz48dGQgd2lkdGg9IjI1JSIgaGVpZ2h0PSIxMDAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIjsgPz4iPjxiPkhvbWU8L2I+PC9hPjxociBzaXplPSIxIiBub3NoYWRlPg0KICAgICAgPD9waHANCiAgICAgICRyZXN1bHQgPSBteXNxbF9saXN0X3RhYmxlcygkc3FsX2RiKTsNCiAgICAgIGlmICghJHJlc3VsdCkge2VjaG8gbXlzcWxfc21hcnRlcnJvcigpO30NCiAgICAgIGVsc2Ugew0KICAgICAgICBlY2hvICItLS1bIDxhIGhyZWY9XCIiLiRzcWxfc3VybC4iJlwiPjxiPiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iPC9iPjwvYT4gXS0tLTxicj4iOw0KICAgICAgICAkYyA9IDA7DQogICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHskY291bnQgPSBteXNxbF9xdWVyeSAoIlNFTEVDVCBDT1VOVCgqKSBGUk9NICIuJHJvd1swXSk7ICRjb3VudF9yb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkY291bnQpOyBlY2hvICI8Yj4rJm5ic3A7PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfZGI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiImc3FsX3RibD0iLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1swXSkuIlwiPjxiPiIuaHRtbHNwZWNpYWxjaGFycygkcm93WzBdKS4iPC9iPjwvYT4gKCIuJGNvdW50X3Jvd1swXS4iKTwvYnI+PC9iPiI7IG15c3FsX2ZyZWVfcmVzdWx0KCRjb3VudCk7ICRjKys7fQ0KICAgICAgICBpZiAoISRjKSB7ZWNobyAiTm8gdGFibGVzIGZvdW5kIGluIGRhdGFiYXNlLiI7fQ0KICAgICAgfQ0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgID8+PHRkIHdpZHRoPSIxIiBoZWlnaHQ9IjEwMCIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Ijw/cGhwIGVjaG8gJHNxbF9zdXJsOyA/PiI+PGI+SG9tZTwvYj48L2E+PGhyIHNpemU9IjEiIG5vc2hhZGU+DQogICAgICA8P3BocA0KICAgICAgJHJlc3VsdCA9IG15c3FsX2xpc3RfZGJzKCRzcWxfc29jayk7DQogICAgICBpZiAoISRyZXN1bHQpIHtlY2hvIG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogICAgICBlbHNlIHsNCiAgICAgICAgPz48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxzZWxlY3QgbmFtZT0ic3FsX2RiIj4NCiAgICAgICAgPD9waHANCiAgICAgICAgJGMgPSAwOw0KICAgICAgICAkZGJzID0gIiI7DQogICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXN1bHQpKSB7JGRicyAuPSAiPG9wdGlvbiB2YWx1ZT1cIiIuJHJvd1swXS4iXCIiOyBpZiAoJHNxbF9kYiA9PSAkcm93WzBdKSB7JGRicyAuPSAiIHNlbGVjdGVkIjt9ICRkYnMgLj0gIj4iLiRyb3dbMF0uIjwvb3B0aW9uPiI7ICRjKys7fQ0KICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+RGF0YWJhc2VzICgiLiRjLiIpPC9vcHRpb24+IjsNCiAgICAgICAgZWNobyAkZGJzOw0KICAgICAgfQ0KICAgICAgPz48L3NlbGVjdD48aHIgc2l6ZT0iMSIgbm9zaGFkZT5QbGVhc2UsIHNlbGVjdCBkYXRhYmFzZTxociBzaXplPSIxIiBub3NoYWRlPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHbyI+PC9mb3JtPg0KICAgICAgPD9waHANCiAgICB9DQogICAgZWNobyAiPC90ZD48dGQgd2lkdGg9XCIxMDAlXCI+IjsNCiAgICAkZGlwbGF5ID0gVFJVRTsNCiAgICBpZiAoJHNxbF9kYikgew0KICAgICAgaWYgKCFpc19udW1lcmljKCRjKSkgeyRjID0gMDt9DQogICAgICBpZiAoJGMgPT0gMCkgeyRjID0gIm5vIjt9DQogICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxjZW50ZXI+PGI+VGhlcmUgYXJlICIuJGMuIiB0YWJsZShzKSBpbiB0aGlzIERCICgiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIikuPGJyPiI7DQogICAgICBpZiAoY291bnQoJGRicXVpY2tsYXVuY2gpID4gMCkge2ZvcmVhY2goJGRic3FscXVpY2tsYXVuY2ggYXMgJGl0ZW0pIHtlY2hvICJbIDxhIGhyZWY9XCIiLiRpdGVtWzFdLiJcIj4iLiRpdGVtWzBdLiI8L2E+IF0gIjt9fQ0KICAgICAgZWNobyAiPC9iPjwvY2VudGVyPiI7DQogICAgICAkYWN0cyA9IGFycmF5KCIiLCJkdW1wIik7DQogICAgICBpZiAoJHNxbF94ID09ICJ0Ymxkcm9wIikgeyRzcWxfcXVlcnkgPSAiRFJPUCBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX3ggPSAicXVlcnkiO30NCiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJ0YmxlbXB0eSIpIHskc3FsX3F1ZXJ5ID0gIiI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIkRFTEVURSBGUk9NIGAiLiR2LiJgIFxuIjt9ICRzcWxfeCA9ICJxdWVyeSI7fQ0KICAgICAgZWxzZWlmICgkc3FsX3ggPT0gInRibGR1bXAiKSB7aWYgKGNvdW50KCRib3h0YmwpID4gMCkgeyRkbXB0YmxzID0gJGJveHRibDt9IGVsc2VpZigkdGhpc3RibCkgeyRkbXB0YmxzID0gYXJyYXkoJHNxbF90YmwpO30gJHNxbF94ID0gImR1bXAiO30NCiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJ0YmxjaGVjayIpIHskc3FsX3F1ZXJ5ID0gIkNIRUNLIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7fQ0KICAgICAgZWxzZWlmICgkc3FsX3ggPT0gInRibG9wdGltaXplIikgeyRzcWxfcXVlcnkgPSAiT1BUSU1JWkUgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF94ID0gInF1ZXJ5Ijt9DQogICAgICBlbHNlaWYgKCRzcWxfeCA9PSAidGJscmVwYWlyIikgeyRzcWxfcXVlcnkgPSAiUkVQQUlSIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7fQ0KICAgICAgZWxzZWlmICgkc3FsX3ggPT0gInRibGFuYWx5emUiKSB7JHNxbF9xdWVyeSA9ICJBTkFMWVpFIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7fQ0KICAgICAgZWxzZWlmICgkc3FsX3ggPT0gImRlbGV0ZXJvdyIpIHskc3FsX3F1ZXJ5ID0gIiI7IGlmICghZW1wdHkoJGJveHJvd19hbGwpKSB7JHNxbF9xdWVyeSA9ICJERUxFVEUgKiBGUk9NIGAiLiRzcWxfdGJsLiJgOyI7fSBlbHNlIHtmb3JlYWNoKCRib3hyb3cgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJERUxFVEUgKiBGUk9NIGAiLiRzcWxfdGJsLiJgIFdIRVJFIi4kdi4iIExJTUlUIDE7XG4iO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpO30gJHNxbF94ID0gInF1ZXJ5Ijt9DQogICAgICBlbHNlaWYgKCRzcWxfdGJsX3ggPT0gImluc2VydCIpIHsNCiAgICAgICAgaWYgKCRzcWxfdGJsX2luc2VydF9yYWRpbyA9PSAxKSB7DQogICAgICAgICAgJGtleXMgPSAiIjsNCiAgICAgICAgICAkYWtleXMgPSBhcnJheV9rZXlzKCRzcWxfdGJsX2luc2VydCk7DQogICAgICAgICAgZm9yZWFjaCAoJGFrZXlzIGFzICR2KSB7JGtleXMgLj0gImAiLmFkZHNsYXNoZXMoJHYpLiJgLCAiO30NCiAgICAgICAgICBpZiAoIWVtcHR5KCRrZXlzKSkgeyRrZXlzID0gc3Vic3RyKCRrZXlzLDAsc3RybGVuKCRrZXlzKS0yKTt9DQogICAgICAgICAgJHZhbHVlcyA9ICIiOw0KICAgICAgICAgICRpID0gMDsNCiAgICAgICAgICBmb3JlYWNoIChhcnJheV92YWx1ZXMoJHNxbF90YmxfaW5zZXJ0KSBhcyAkdikge2lmICgkZnVuY3QgPSAkc3FsX3RibF9pbnNlcnRfZnVuY3RzWyRha2V5c1skaV1dKSB7JHZhbHVlcyAuPSAkZnVuY3QuIiAoIjt9ICR2YWx1ZXMgLj0gIiciLmFkZHNsYXNoZXMoJHYpLiInIjsgaWYgKCRmdW5jdCkgeyR2YWx1ZXMgLj0gIikiO30gJHZhbHVlcyAuPSAiLCAiOyAkaSsrO30NCiAgICAgICAgICBpZiAoIWVtcHR5KCR2YWx1ZXMpKSB7JHZhbHVlcyA9IHN1YnN0cigkdmFsdWVzLDAsc3RybGVuKCR2YWx1ZXMpLTIpO30NCiAgICAgICAgICAkc3FsX3F1ZXJ5ID0gIklOU0VSVCBJTlRPIGAiLiRzcWxfdGJsLiJgICggIi4ka2V5cy4iICkgVkFMVUVTICggIi4kdmFsdWVzLiIgKTsiOw0KICAgICAgICAgICRzcWxfeCA9ICJxdWVyeSI7DQogICAgICAgICAgJHNxbF90YmxfeCA9ICJicm93c2UiOw0KICAgICAgICB9DQogICAgICAgIGVsc2VpZiAoJHNxbF90YmxfaW5zZXJ0X3JhZGlvID09IDIpIHsNCiAgICAgICAgICAkc2V0ID0gbXlzcWxfYnVpbGR3aGVyZSgkc3FsX3RibF9pbnNlcnQsIiwgIiwkc3FsX3RibF9pbnNlcnRfZnVuY3RzKTsNCiAgICAgICAgICAkc3FsX3F1ZXJ5ID0gIlVQREFURSBgIi4kc3FsX3RibC4iYCBTRVQgIi4kc2V0LiIgV0hFUkUgIi4kc3FsX3RibF9pbnNlcnRfcS4iIExJTUlUIDE7IjsNCiAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbF9xdWVyeSkgb3IgcHJpbnQobXlzcWxfc21hcnRlcnJvcigpKTsNCiAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpOw0KICAgICAgICAgICRzcWxfeCA9ICJxdWVyeSI7DQogICAgICAgICAgJHNxbF90YmxfeCA9ICJicm93c2UiOw0KICAgICAgICB9DQogICAgICB9DQogICAgICBpZiAoJHNxbF94ID09ICJxdWVyeSIpIHsNCiAgICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0KICAgICAgICBpZiAoKCRzdWJtaXQpIGFuZCAoISRzcWxfcXVlcnlfcmVzdWx0KSBhbmQgKCRzcWxfY29uZmlybSkpIHtpZiAoISRzcWxfcXVlcnlfZXJyb3IpIHskc3FsX3F1ZXJ5X2Vycm9yID0gIlF1ZXJ5IHdhcyBlbXB0eSI7fSBlY2hvICI8Yj5FcnJvcjo8L2I+IDxicj4iLiRzcWxfcXVlcnlfZXJyb3IuIjxicj4iO30NCiAgICAgICAgaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfeCA9ICRzcWxfZ290bzt9DQogICAgICAgIGlmICgoISRzdWJtaXQpIG9yICgkc3FsX3gpKSB7ZWNobyAiPHRhYmxlIGJvcmRlcj1cIjBcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxXCI+PHRyPjx0ZD48Zm9ybSBhY3Rpb249XCIiLiRzcWxfc3VybC4iXCIgbWV0aG9kPVwiUE9TVFwiPjxiPiI7IGlmICgoJHNxbF9xdWVyeSkgYW5kICghJHN1Ym1pdCkpIHtlY2hvICJEbyB5b3UgcmVhbGx5IHdhbnQgdG86Ijt9IGVsc2Uge2VjaG8gIlNRTC1RdWVyeSA6Ijt9IGVjaG8gIjwvYj48YnI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwic3FsX3F1ZXJ5XCIgY29scz1cIjEwMFwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3F1ZXJ5KS4iPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF94XCIgdmFsdWU9XCJxdWVyeVwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPVwiMVwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9nb3RvXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9nb3RvKS4iXCI+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwic3FsX2NvbmZpcm1cIiB2YWx1ZT1cIlllc1wiPiA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiTm9cIj48L2Zvcm0+PC90ZD48L3RyPjwvdGFibGU+Ijt9DQogICAgICB9DQogICAgICBpZiAoaW5fYXJyYXkoJHNxbF94LCRhY3RzKSkgew0KICAgICAgICA/Pjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5DcmVhdGUgbmV3IHRhYmxlOjwvYj4NCiAgICAgICAgPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IngiIHZhbHVlPSJzcWwiPg0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfeCIgdmFsdWU9Im5ld3RibCI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9kYiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTsgPz4iPg0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPg0KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld3RibCIgc2l6ZT0iMjAiPg0KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ3JlYXRlIj4NCiAgICAgICAgPC9mb3JtPjwvdGQ+DQogICAgICAgIDx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPkR1bXAgREI6PC9iPg0KICAgICAgICA8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieCIgdmFsdWU9InNxbCI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF94IiB2YWx1ZT0iZHVtcCI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9kYiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTsgPz4iPg0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImR1bXBfZmlsZSIgc2l6ZT0iMzAiIHZhbHVlPSI8P3BocCBlY2hvICJkdW1wXyIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiJfIi4kc3FsX2RiLiJfIi5kYXRlKCJkLW0tWS1ILWktcyIpLiIuc3FsIjsgPz4iPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT0iRHVtcCI+PC9mb3JtPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48L3RyPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48L3RyPjwvdGFibGU+DQogICAgICAgIDw/cGhwDQogICAgICAgIGlmICghZW1wdHkoJHNxbF94KSkge2VjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+Ijt9DQogICAgICAgIGlmICgkc3FsX3ggPT0gIm5ld3RibCIpIHsNCiAgICAgICAgICBlY2hvICI8Yj4iOw0KICAgICAgICAgIGlmICgobXlzcWxfY3JlYXRlX2RiICgkc3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKSB7DQogICAgICAgICAgICBlY2hvICJEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHN1Y2Nlc3MhPC9iPjxicj4iOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHtlY2hvICJDYW4ndCBjcmVhdGUgREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiLjxicj5SZWFzb246PC9iPiAiLm15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogICAgICAgIH0NCiAgICAgICAgZWxzZWlmICgkc3FsX3ggPT0gImR1bXAiKSB7DQogICAgICAgICAgaWYgKGVtcHR5KCRzdWJtaXQpKSB7DQogICAgICAgICAgICAkZGlwbGF5ID0gRkFMU0U7DQogICAgICAgICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9XCJHRVRcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ4XCIgdmFsdWU9XCJzcWxcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfeFwiIHZhbHVlPVwiZHVtcFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3Bhc3N3ZFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3NlcnZlclwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfdGJsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48Yj5TUUwtRHVtcDo8L2I+PGJyPjxicj4iOw0KICAgICAgICAgICAgZWNobyAiPGI+REI6PC9iPiA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLnVybGVuY29kZSgkc3FsX2RiKS4iXCI+PGJyPjxicj4iOw0KICAgICAgICAgICAgJHYgPSBqb2luICgiOyIsJGRtcHRibHMpOw0KICAgICAgICAgICAgZWNobyAiPGI+T25seSB0YWJsZXMgKGV4cGxvZGUgXCI7XCIpJm5ic3A7PGI+PHN1cD4xPC9zdXA+PC9iPjo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImRtcHRibHNcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkdikuIlwiIHNpemU9XCIiLihzdHJsZW4oJHYpKzUpLiJcIj48YnI+PGJyPiI7DQogICAgICAgICAgICBpZiAoJGR1bXBfZmlsZSkgeyR0bXAgPSAkZHVtcF9maWxlO30NCiAgICAgICAgICAgIGVsc2UgeyR0bXAgPSBodG1sc3BlY2lhbGNoYXJzKCIuL2R1bXBfIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIl8iLiRzcWxfZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiKTt9DQogICAgICAgICAgICBlY2hvICI8Yj5GaWxlOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2R1bXBfZmlsZVwiIHZhbHVlPVwiIi4kdG1wLiJcIiBzaXplPVwiIi4oc3RybGVuKCR0bXApK3N0cmxlbigkdG1wKSAlIDMwKS4iXCI+PGJyPjxicj4iOw0KICAgICAgICAgICAgZWNobyAiPGI+RG93bmxvYWQ6IDwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNxbF9kdW1wX2Rvd25sb2FkXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48YnI+PGJyPiI7DQogICAgICAgICAgICBlY2hvICI8Yj5TYXZlIHRvIGZpbGU6IDwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNxbF9kdW1wX3NhdmV0b2ZpbGVcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPiI7DQogICAgICAgICAgICBlY2hvICI8YnI+PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPVwiRHVtcFwiPjxicj48YnI+PGI+PHN1cD4xPC9zdXA+PC9iPiAtIGFsbCwgaWYgZW1wdHkiOw0KICAgICAgICAgICAgZWNobyAiPC9mb3JtPiI7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgJGRpcGxheSA9IFRSVUU7DQogICAgICAgICAgICAkc2V0ID0gYXJyYXkoKTsNCiAgICAgICAgICAgICRzZXRbInNvY2siXSA9ICRzcWxfc29jazsNCiAgICAgICAgICAgICRzZXRbImRiIl0gPSAkc3FsX2RiOw0KICAgICAgICAgICAgJGR1bXBfb3V0ID0gImRvd25sb2FkIjsNCiAgICAgICAgICAgICRzZXRbInByaW50Il0gPSAwOw0KICAgICAgICAgICAgJHNldFsibmwyYnIiXSA9IDA7DQogICAgICAgICAgICAkc2V0WyIiXSA9IDA7DQogICAgICAgICAgICAkc2V0WyJmaWxlIl0gPSAkZHVtcF9maWxlOw0KICAgICAgICAgICAgJHNldFsiYWRkX2Ryb3AiXSA9IFRSVUU7DQogICAgICAgICAgICAkc2V0WyJvbmx5dGFicyJdID0gYXJyYXkoKTsNCiAgICAgICAgICAgIGlmICghZW1wdHkoJGRtcHRibHMpKSB7JHNldFsib25seXRhYnMiXSA9IGV4cGxvZGUoIjsiLCRkbXB0YmxzKTt9DQogICAgICAgICAgICAkcmV0ID0gbXlzcWxfZHVtcCgkc2V0KTsNCiAgICAgICAgICAgIGlmICgkc3FsX2R1bXBfZG93bmxvYWQpIHsNCiAgICAgICAgICAgICAgQG9iX2NsZWFuKCk7DQogICAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCiAgICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LWxlbmd0aDogIi5zdHJsZW4oJHJldCkpOw0KICAgICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi5iYXNlbmFtZSgkc3FsX2R1bXBfZmlsZSkuIlwiOyIpOw0KICAgICAgICAgICAgICBlY2hvICRyZXQ7DQogICAgICAgICAgICAgIGV4aXQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCRzcWxfZHVtcF9zYXZldG9maWxlKSB7DQogICAgICAgICAgICAgICRmcCA9IGZvcGVuKCRzcWxfZHVtcF9maWxlLCJ3Iik7DQogICAgICAgICAgICAgIGlmICghJGZwKSB7ZWNobyAiPGI+RHVtcCBlcnJvciEgQ2FuJ3Qgd3JpdGUgdG8gXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kdW1wX2ZpbGUpLiJcIiEiO30NCiAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgZndyaXRlKCRmcCwkcmV0KTsNCiAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgICAgICBlY2hvICI8Yj5EdW1wZWQhIER1bXAgaGFzIGJlZW4gd3JpdGVkIHRvIFwiIi5odG1sc3BlY2lhbGNoYXJzKHJlYWxwYXRoKCRzcWxfZHVtcF9maWxlKSkuIlwiICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkc3FsX2R1bXBfZmlsZSkpLiIpPC9iPi4iOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHtlY2hvICI8Yj5EdW1wOiBub3RoaW5nIHRvIGRvITwvYj4iO30NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCRkaXBsYXkpIHsNCiAgICBpZiAoIWVtcHR5KCRzcWxfdGJsKSkgew0KICAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX3gpKSB7JHNxbF90YmxfeCA9ICJicm93c2UiO30NCiAgICAgICRjb3VudCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBgIi4kc3FsX3RibC4iYDsiKTsNCiAgICAgICRjb3VudF9yb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkY291bnQpOw0KICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJGNvdW50KTsNCiAgICAgICR0Ymxfc3RydWN0X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIEZJRUxEUyBGUk9NIGAiLiRzcWxfdGJsLiJgOyIpOw0KICAgICAgJHRibF9zdHJ1Y3RfZmllbGRzID0gYXJyYXkoKTsNCiAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHRibF9zdHJ1Y3RfcmVzdWx0KSkgeyR0Ymxfc3RydWN0X2ZpZWxkc1tdID0gJHJvdzt9DQogICAgICBpZiAoJHNxbF9scyA+ICRzcWxfbGUpIHskc3FsX2xlID0gJHNxbF9scyArICRwZXJwYWdlO30NCiAgICAgIGlmIChlbXB0eSgkc3FsX3RibF9wYWdlKSkgeyRzcWxfdGJsX3BhZ2UgPSAwO30NCiAgICAgIGlmIChlbXB0eSgkc3FsX3RibF9scykpIHskc3FsX3RibF9scyA9IDA7fQ0KICAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2xlKSkgeyRzcWxfdGJsX2xlID0gMzA7fQ0KICAgICAgJHBlcnBhZ2UgPSAkc3FsX3RibF9sZSAtICRzcWxfdGJsX2xzOw0KICAgICAgaWYgKCFpc19udW1lcmljKCRwZXJwYWdlKSkgeyRwZXJwYWdlID0gMTA7fQ0KICAgICAgJG51bXBhZ2VzID0gJGNvdW50X3Jvd1swXS8kcGVycGFnZTsNCiAgICAgICRlID0gZXhwbG9kZSgiICIsJHNxbF9vcmRlcik7DQogICAgICBpZiAoY291bnQoJGUpID09IDIpIHsNCiAgICAgICAgaWYgKCRlWzBdID09ICJkIikgeyRhc2NfZGVzYyA9ICJERVNDIjt9DQogICAgICAgIGVsc2UgeyRhc2NfZGVzYyA9ICJBU0MiO30NCiAgICAgICAgJHYgPSAiT1JERVIgQlkgYCIuJGVbMV0uImAgIi4kYXNjX2Rlc2MuIiAiOw0KICAgICAgfQ0KICAgICAgZWxzZSB7JHYgPSAiIjt9DQogICAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSBgIi4kc3FsX3RibC4iYCAiLiR2LiJMSU1JVCAiLiRzcWxfdGJsX2xzLiIgLCAiLiRwZXJwYWdlLiIiOw0KICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSkgb3IgcHJpbnQobXlzcWxfc21hcnRlcnJvcigpKTsNCiAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+PGNlbnRlcj48Yj5UYWJsZSAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiIgKCIubXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KS4iIGNvbHMgYW5kICIuJGNvdW50X3Jvd1swXS4iIHJvd3MpPC9iPjwvY2VudGVyPiI7DQogICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF94PXN0cnVjdHVyZVwiPls8Yj4gU3RydWN0dXJlIDwvYj5dPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF94PWJyb3dzZVwiPls8Yj4gQnJvd3NlIDwvYj5dPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3g9dGJsZHVtcCZ0aGlzdGJsPTFcIj5bPGI+IER1bXAgPC9iPl08L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfdGJsX3g9aW5zZXJ0XCI+WyZuYnNwOzxiPkluc2VydDwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgICBpZiAoJHNxbF90YmxfeCA9PSAic3RydWN0dXJlIikge2VjaG8gIjxicj48YnI+PGI+Q29taW5nIHNvb29uITwvYj4iO30NCiAgICAgIGlmICgkc3FsX3RibF94ID09ICJpbnNlcnQiKSB7DQogICAgICAgIGlmICghaXNfYXJyYXkoJHNxbF90YmxfaW5zZXJ0KSkgeyRzcWxfdGJsX2luc2VydCA9IGFycmF5KCk7fQ0KICAgICAgICBpZiAoIWVtcHR5KCRzcWxfdGJsX2luc2VydF9yYWRpbykpIHsgIH0gLy9Ob3QgUmVhZHkNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgZWNobyAiPGJyPjxicj48Yj5JbnNlcnRpbmcgcm93IGludG8gdGFibGU6PC9iPjxicj4iOw0KICAgICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7DQogICAgICAgICAgICAkc3FsX3F1ZXJ5ID0gIlNFTEVDVCAqIEZST00gYCIuJHNxbF90YmwuImAiOw0KICAgICAgICAgICAgJHNxbF9xdWVyeSAuPSAiIFdIRVJFIi4kc3FsX3RibF9pbnNlcnRfcTsNCiAgICAgICAgICAgICRzcWxfcXVlcnkgLj0gIiBMSU1JVCAxOyI7DQogICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbF9xdWVyeSwkc3FsX3NvY2spIG9yIHByaW50KCI8YnI+PGJyPiIubXlzcWxfc21hcnRlcnJvcigpKTsNCiAgICAgICAgICAgICR2YWx1ZXMgPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KTsNCiAgICAgICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHskdmFsdWVzID0gYXJyYXkoKTt9DQogICAgICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiUE9TVFwiPjx0YWJsZSB3aWR0aD1cIjElXCIgYm9yZGVyPTE+PHRyPjx0ZD48Yj5GaWVsZDwvYj48L3RkPjx0ZD48Yj5UeXBlPC9iPjwvdGQ+PHRkPjxiPkZ1bmN0aW9uPC9iPjwvdGQ+PHRkPjxiPlZhbHVlPC9iPjwvdGQ+PC90cj4iOw0KICAgICAgICAgIGZvcmVhY2ggKCR0Ymxfc3RydWN0X2ZpZWxkcyBhcyAkZmllbGQpIHsNCiAgICAgICAgICAgICRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOw0KICAgICAgICAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkgeyR2ID0gIiI7fQ0KICAgICAgICAgICAgZWNobyAiPHRyPjx0ZD48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpLiI8L2I+PC90ZD48dGQ+Ii4kZmllbGRbIlR5cGUiXS4iPC90ZD48dGQ+PHNlbGVjdCBuYW1lPVwic3FsX3RibF9pbnNlcnRfZnVuY3RzWyIuaHRtbHNwZWNpYWxjaGFycygkbmFtZSkuIl1cIj48b3B0aW9uIHZhbHVlPVwiXCI+PC9vcHRpb24+PG9wdGlvbj5QQVNTV09SRDwvb3B0aW9uPjxvcHRpb24+TUQ1PC9vcHRpb24+PG9wdGlvbj5FTkNSWVBUPC9vcHRpb24+PG9wdGlvbj5BU0NJSTwvb3B0aW9uPjxvcHRpb24+Q0hBUjwvb3B0aW9uPjxvcHRpb24+UkFORDwvb3B0aW9uPjxvcHRpb24+TEFTVF9JTlNFUlRfSUQ8L29wdGlvbj48b3B0aW9uPkNPVU5UPC9vcHRpb24+PG9wdGlvbj5BVkc8L29wdGlvbj48b3B0aW9uPlNVTTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJcIj4tLS0tLS0tLTwvb3B0aW9uPjxvcHRpb24+U09VTkRFWDwvb3B0aW9uPjxvcHRpb24+TENBU0U8L29wdGlvbj48b3B0aW9uPlVDQVNFPC9vcHRpb24+PG9wdGlvbj5OT1c8L29wdGlvbj48b3B0aW9uPkNVUkRBVEU8L29wdGlvbj48b3B0aW9uPkNVUlRJTUU8L29wdGlvbj48b3B0aW9uPkZST01fREFZUzwvb3B0aW9uPjxvcHRpb24+RlJPTV9VTklYVElNRTwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0FERDwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0RJRkY8L29wdGlvbj48b3B0aW9uPlRPX0RBWVM8L29wdGlvbj48b3B0aW9uPlVOSVhfVElNRVNUQU1QPC9vcHRpb24+PG9wdGlvbj5VU0VSPC9vcHRpb24+PG9wdGlvbj5XRUVLREFZPC9vcHRpb24+PG9wdGlvbj5DT05DQVQ8L29wdGlvbj48L3NlbGVjdD48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3RibF9pbnNlcnRbIi5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iXVwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR2YWx1ZXNbJG5hbWVdKS4iXCIgc2l6ZT01MD48L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICRpKys7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVjaG8gIjwvdGFibGU+PGJyPiI7DQogICAgICAgICAgZWNobyAiPGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJzcWxfdGJsX2luc2VydF9yYWRpb1wiIHZhbHVlPVwiMVwiIjsgaWYgKGVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkge2VjaG8gIiBjaGVja2VkIjt9IGVjaG8gIj48Yj5JbnNlcnQgYXMgbmV3IHJvdzwvYj4iOw0KICAgICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7ZWNobyAiIG9yIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjJcIiBjaGVja2VkPjxiPlNhdmU8L2I+IjsgZWNobyAiPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcVwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsX2luc2VydF9xKS4iXCI+Ijt9DQogICAgICAgICAgZWNobyAiPGJyPjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29uZmlybVwiPjwvZm9ybT4iOw0KICAgICAgICB9DQogICAgICB9DQogICAgICBpZiAoJHNxbF90YmxfeCA9PSAiYnJvd3NlIikgew0KICAgICAgICAkc3FsX3RibF9scyA9IGFicygkc3FsX3RibF9scyk7DQogICAgICAgICRzcWxfdGJsX2xlID0gYWJzKCRzcWxfdGJsX2xlKTsNCiAgICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0KICAgICAgICBlY2hvICI8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1tdWx0aXBhZ2VcIiBoZWlnaHQ9XCIxMlwiIHdpZHRoPVwiMTBcIiBhbHQ9XCJQYWdlc1wiPiZuYnNwOyI7DQogICAgICAgICRiID0gMDsNCiAgICAgICAgZm9yKCRpPTA7JGk8JG51bXBhZ2VzOyRpKyspIHsNCiAgICAgICAgICBpZiAoKCRpKiRwZXJwYWdlICE9ICRzcWxfdGJsX2xzKSBvciAoJGkqJHBlcnBhZ2UrJHBlcnBhZ2UgIT0gJHNxbF90YmxfbGUpKSB7ZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF9vcmRlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9vcmRlcikuIiZzcWxfdGJsX2xzPSIuKCRpKiRwZXJwYWdlKS4iJnNxbF90YmxfbGU9Ii4oJGkqJHBlcnBhZ2UrJHBlcnBhZ2UpLiJcIj48dT4iO30NCiAgICAgICAgICBlY2hvICRpOw0KICAgICAgICAgIGlmICgoJGkqJHBlcnBhZ2UgIT0gJHNxbF90YmxfbHMpIG9yICgkaSokcGVycGFnZSskcGVycGFnZSAhPSAkc3FsX3RibF9sZSkpIHtlY2hvICI8L3U+PC9hPiI7fQ0KICAgICAgICAgIGlmICgoJGkvMzAgPT0gcm91bmQoJGkvMzApKSBhbmQgKCRpID4gMCkpIHtlY2hvICI8YnI+Ijt9DQogICAgICAgICAgZWxzZSB7ZWNobyAiJm5ic3A7Ijt9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCRpID09IDApIHtlY2hvICJlbXB0eSI7fQ0KICAgICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9XCJHRVRcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ4XCIgdmFsdWU9XCJzcWxcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX29yZGVyXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9vcmRlcikuIlwiPjxiPkZyb206PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2xzXCIgdmFsdWU9XCIiLiRzcWxfdGJsX2xzLiJcIj4mbmJzcDs8Yj5Ubzo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfbGVcIiB2YWx1ZT1cIiIuJHNxbF90YmxfbGUuIlwiPiZuYnNwOzxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJWaWV3XCI+PC9mb3JtPiI7DQogICAgICAgIGVjaG8gIjxicj48Zm9ybSBtZXRob2Q9XCJQT1NUXCI+PFRBQkxFIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjElXCIgYmdjb2xvcj0jMDAwMDAwIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT4iOw0KICAgICAgICBlY2hvICI8dHI+IjsNCiAgICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94cm93X2FsbFwiIHZhbHVlPVwiMVwiPjwvdGQ+IjsNCiAgICAgICAgZm9yICgkaT0wOyRpPG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7JGkrKykgew0KICAgICAgICAgICR2ID0gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTsNCiAgICAgICAgICBpZiAoJGVbMF0gPT0gImEiKSB7JHMgPSAiZCI7ICRtID0gImFzYyI7fQ0KICAgICAgICAgIGVsc2UgeyRzID0gImEiOyAkbSA9ICJkZXNjIjt9DQogICAgICAgICAgZWNobyAiPHRkPiI7DQogICAgICAgICAgaWYgKGVtcHR5KCRlWzBdKSkgeyRlWzBdID0gImEiO30NCiAgICAgICAgICBpZiAoJGVbMV0gIT0gJHYpIHtlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii4kc3FsX3RibC4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF9vcmRlcj0iLiRlWzBdLiIlMjAiLiR2LiJcIj48Yj4iLiR2LiI8L2I+PC9hPiI7fQ0KICAgICAgICAgIGVsc2Uge2VjaG8gIjxiPiIuJHYuIjwvYj48YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii4kc3FsX3RibC4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF9vcmRlcj0iLiRzLiIlMjAiLiR2LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1zb3J0XyIuJG0uIlwiIGhlaWdodD1cIjlcIiB3aWR0aD1cIjE0XCIgYWx0PVwiIi4kbS4iXCI+PC9hPiI7fQ0KICAgICAgICAgIGVjaG8gIjwvdGQ+IjsNCiAgICAgICAgfQ0KICAgICAgZWNobyAiPHRkPjxmb250IGNvbG9yPVwibGltZVwiPjxiPkFjdGlvbjwvYj48L2ZvbnQ+PC90ZD4iOw0KICAgICAgZWNobyAiPC90cj4iOw0KICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NPQykpIHsNCiAgICAgICBlY2hvICI8dHI+IjsNCiAgICAgICAkdyA9ICIiOw0KICAgICAgICRpID0gMDsNCiAgICAgICBmb3JlYWNoICgkcm93IGFzICRrPT4kdikgeyRuYW1lID0gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTsgJHcgLj0gIiBgIi4kbmFtZS4iYCA9ICciLmFkZHNsYXNoZXMoJHYpLiInIEFORCI7ICRpKys7fQ0KICAgICAgIGlmIChjb3VudCgkcm93KSA+IDApIHskdyA9IHN1YnN0cigkdywwLHN0cmxlbigkdyktMyk7fQ0KICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHJvd1tdXCIgdmFsdWU9XCIiLiR3LiJcIj48L3RkPiI7DQogICAgICAgJGkgPSAwOw0KICAgICAgIGZvcmVhY2ggKCRyb3cgYXMgJGs9PiR2KQ0KICAgICAgIHsNCiAgICAgICAgJHYgPSBodG1sc3BlY2lhbGNoYXJzKCR2KTsNCiAgICAgICAgaWYgKCR2ID09ICIiKSB7JHYgPSAiPGZvbnQgY29sb3I9XCJsaW1lXCI+TlVMTDwvZm9udD4iO30NCiAgICAgICAgZWNobyAiPHRkPiIuJHYuIjwvdGQ+IjsNCiAgICAgICAgJGkrKzsNCiAgICAgICB9DQogICAgICAgZWNobyAiPHRkPiI7DQogICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1xdWVyeSZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHNxbF90YmwuImAgV0hFUkUiLiR3LiIgTElNSVQgMTsiKS4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c3FsX2J1dHRvbl9kcm9wXCIgYWx0PVwiRGVsZXRlXCIgaGVpZ2h0PVwiMTNcIiB3aWR0aD1cIjExXCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiOw0KICAgICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibF94PWluc2VydCZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF90YmxfaW5zZXJ0X3E9Ii51cmxlbmNvZGUoJHcpLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1jaGFuZ2VcIiBhbHQ9XCJFZGl0XCIgaGVpZ2h0PVwiMTRcIiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiOw0KICAgICAgIGVjaG8gIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8L3RyPiI7DQogICAgICB9DQogICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgIGVjaG8gIjwvdGFibGU+PGhyIHNpemU9XCIxXCIgbm9zaGFkZT48cCBhbGlnbj1cImxlZnRcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1hcnJvd19sdHJcIiBib3JkZXI9XCIwXCI+PHNlbGVjdCBuYW1lPVwic3FsX3hcIj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIlwiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJkZWxldGVyb3dcIj5EZWxldGU8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7DQogICAgIH0NCiAgICB9DQogICAgZWxzZSB7DQogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBUQUJMRSBTVEFUVVMiLCAkc3FsX3NvY2spOw0KICAgICBpZiAoISRyZXN1bHQpIHtlY2hvIG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogICAgIGVsc2UNCiAgICAgew0KICAgICAgZWNobyAiPGJyPjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48VEFCTEUgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMTAwJVwiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHRibF9hbGxcIiB2YWx1ZT1cIjFcIj48L3RkPjx0ZD48Y2VudGVyPjxiPlRhYmxlPC9iPjwvY2VudGVyPjwvdGQ+PHRkPjxiPlJvd3M8L2I+PC90ZD48dGQ+PGI+VHlwZTwvYj48L3RkPjx0ZD48Yj5DcmVhdGVkPC9iPjwvdGQ+PHRkPjxiPk1vZGlmaWVkPC9iPjwvdGQ+PHRkPjxiPlNpemU8L2I+PC90ZD48dGQ+PGI+QWN0aW9uPC9iPjwvdGQ+PC90cj4iOw0KICAgICAgJGkgPSAwOw0KICAgICAgJHRzaXplID0gJHRyb3dzID0gMDsNCiAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKQ0KICAgICAgew0KICAgICAgICR0c2l6ZSArPSAkcm93WyJEYXRhX2xlbmd0aCJdOw0KICAgICAgICR0cm93cyArPSAkcm93WyJSb3dzIl07DQogICAgICAgJHNpemUgPSB2aWV3X3NpemUoJHJvd1siRGF0YV9sZW5ndGgiXSk7DQogICAgICAgZWNobyAiPHRyPiI7DQogICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94dGJsW11cIiB2YWx1ZT1cIiIuJHJvd1siTmFtZSJdLiJcIj48L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkcm93WyJOYW1lIl0pLiJcIj48Yj4iLiRyb3dbIk5hbWUiXS4iPC9iPjwvYT4mbmJzcDs8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siUm93cyJdLiI8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siVHlwZSJdLiI8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siQ3JlYXRlX3RpbWUiXS4iPC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbIlVwZGF0ZV90aW1lIl0uIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8dGQ+Ii4kc2l6ZS4iPC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4mbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF94PXF1ZXJ5JnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNxbF9idXR0b25fZW1wdHlcIiBhbHQ9XCJFbXB0eVwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Jm5ic3A7PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1xdWVyeSZzcWxfcXVlcnk9Ii51cmxlbmNvZGUoIkRST1AgVEFCTEUgYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNxbF9idXR0b25fZHJvcFwiIGFsdD1cIkRyb3BcIiBoZWlnaHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibF94PWluc2VydCZzcWxfdGJsPSIuJHJvd1siTmFtZSJdLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1zcWxfYnV0dG9uX2luc2VydFwiIGFsdD1cIkluc2VydFwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PC90ZD4iOw0KICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgICAkaSsrOw0KICAgICAgfQ0KICAgICAgZWNobyAiPHRyIGJnY29sb3I9XCIwMDAwMDBcIj4iOw0KICAgICAgZWNobyAiPHRkPjxjZW50ZXI+PGI+KzwvYj48L2NlbnRlcj48L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PGNlbnRlcj48Yj4iLiRpLiIgdGFibGUocyk8L2I+PC9jZW50ZXI+PC90ZD4iOw0KICAgICAgZWNobyAiPHRkPjxiPiIuJHRyb3dzLiI8L2I+PC90ZD4iOw0KICAgICAgZWNobyAiPHRkPiIuJHJvd1sxXS4iPC90ZD4iOw0KICAgICAgZWNobyAiPHRkPiIuJHJvd1sxMF0uIjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMTFdLiI8L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PGI+Ii52aWV3X3NpemUoJHRzaXplKS4iPC9iPjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD48L3RkPiI7DQogICAgICBlY2hvICI8L3RyPiI7DQogICAgICBlY2hvICI8L3RhYmxlPjxociBzaXplPVwiMVwiIG5vc2hhZGU+PHAgYWxpZ249XCJyaWdodFwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWFycm93X2x0clwiIGJvcmRlcj1cIjBcIj48c2VsZWN0IG5hbWU9XCJzcWxfeFwiPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGRyb3BcIj5Ecm9wPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxlbXB0eVwiPkVtcHR5PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxkdW1wXCI+RHVtcDwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsY2hlY2tcIj5DaGVjayB0YWJsZTwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsb3B0aW1pemVcIj5PcHRpbWl6ZSB0YWJsZTwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJscmVwYWlyXCI+UmVwYWlyIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxhbmFseXplXCI+QW5hbHl6ZSB0YWJsZTwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29uZmlybVwiPjwvZm9ybT48L3A+IjsNCiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICB9DQogICAgfQ0KICAgfQ0KICAgfQ0KICB9DQogIGVsc2Ugew0KICAgJGFjdHMgPSBhcnJheSgiIiwibmV3ZGIiLCJzZXJ2ZXJzdGF0dXMiLCJzZXJ2ZXJ2YXJzIiwicHJvY2Vzc2VzIiwiZ2V0ZmlsZSIpOw0KICAgaWYgKGluX2FycmF5KCRzcWxfeCwkYWN0cykpIHs/Pjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5DcmVhdGUgbmV3IERCOjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfeCIgdmFsdWU9Im5ld2RiIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfbmV3ZGIiIHNpemU9IjIwIj4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ3JlYXRlIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5WaWV3IEZpbGU6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IngiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF94IiB2YWx1ZT0iZ2V0ZmlsZSI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX2dldGZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZ2V0ZmlsZSk7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR2V0Ij48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJsZT48P3BocCB9DQogICBpZiAoIWVtcHR5KCRzcWxfeCkpIHsNCiAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7DQogICAgaWYgKCRzcWxfeCA9PSAibmV3ZGIiKSB7DQogICAgIGVjaG8gIjxiPiI7DQogICAgIGlmICgobXlzcWxfY3JlYXRlX2RiICgkc3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKSB7ZWNobyAiREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiIGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBzdWNjZXNzITwvYj48YnI+Ijt9DQogICAgIGVsc2Uge2VjaG8gIkNhbid0IGNyZWF0ZSBEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIuPGJyPlJlYXNvbjo8L2I+ICIubXlzcWxfc21hcnRlcnJvcigpO30NCiAgICB9DQogICAgaWYgKCRzcWxfeCA9PSAic2VydmVyc3RhdHVzIikgew0KICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgU1RBVFVTIiwgJHNxbF9zb2NrKTsNCiAgICAgZWNobyAiPGNlbnRlcj48Yj5TZXJ2ZXItc3RhdHVzIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOw0KICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkge2VjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PC90cj4iO30NCiAgICAgZWNobyAiPC90YWJsZT48L2NlbnRlcj4iOw0KICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICB9DQogICAgaWYgKCRzcWxfeCA9PSAic2VydmVydmFycyIpIHsNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFZBUklBQkxFUyIsICRzcWxfc29jayk7DQogICAgIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOw0KICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkge2VjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PC90cj4iO30NCiAgICAgZWNobyAiPC90YWJsZT4iOw0KICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICB9DQogICAgaWYgKCRzcWxfeCA9PSAicHJvY2Vzc2VzIikgew0KICAgICBpZiAoIWVtcHR5KCRraWxsKSkgew0KICAgICAgICRxdWVyeSA9ICJLSUxMICIuJGtpbGwuIjsiOw0KICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnksICRzcWxfc29jayk7DQogICAgICAgZWNobyAiPGI+UHJvY2VzcyAjIi4ka2lsbC4iIHdhcyBraWxsZWQuPC9iPiI7DQogICAgIH0NCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFBST0NFU1NMSVNUIiwgJHNxbF9zb2NrKTsNCiAgICAgZWNobyAiPGNlbnRlcj48Yj5Qcm9jZXNzZXM6PC9iPjxicj48YnI+IjsNCiAgICAgZWNobyAiPFRBQkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MiBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPklEPC9iPjwvdGQ+PHRkPjxiPlVTRVI8L2I+PC90ZD48dGQ+PGI+SE9TVDwvYj48L3RkPjx0ZD48Yj5EQjwvYj48L3RkPjx0ZD48Yj5DT01NQU5EPC9iPjwvdGQ+PHRkPjxiPlRJTUU8L2I+PC90ZD48dGQ+PGI+U1RBVEU8L2I+PC90ZD48dGQ+PGI+SU5GTzwvYj48L3RkPjx0ZD48Yj5BY3Rpb248L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkgeyBlY2hvICI8dHI+PHRkPiIuJHJvd1swXS4iPC90ZD48dGQ+Ii4kcm93WzFdLiI8L3RkPjx0ZD4iLiRyb3dbMl0uIjwvdGQ+PHRkPiIuJHJvd1szXS4iPC90ZD48dGQ+Ii4kcm93WzRdLiI8L3RkPjx0ZD4iLiRyb3dbNV0uIjwvdGQ+PHRkPiIuJHJvd1s2XS4iPC90ZD48dGQ+Ii4kcm93WzddLiI8L3RkPjx0ZD48YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF94PXByb2Nlc3NlcyZraWxsPSIuJHJvd1swXS4iXCI+PHU+S2lsbDwvdT48L2E+PC90ZD48L3RyPiI7fQ0KICAgICBlY2hvICI8L3RhYmxlPiI7DQogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgIH0NCiAgICBpZiAoJHNxbF94ID09ICJnZXRmaWxlIikNCiAgICB7DQogICAgICR0bXBkYiA9ICRzcWxfbG9naW4uIl90bXBkYiI7DQogICAgICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsNCiAgICAgaWYgKCEkc2VsZWN0KSB7bXlzcWxfY3JlYXRlX2RiKCR0bXBkYik7ICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsgJGNyZWF0ZWQgPSAhISRzZWxlY3Q7fQ0KICAgICBpZiAoJHNlbGVjdCkNCiAgICAgew0KICAgICAgJGNyZWF0ZWQgPSBGQUxTRTsNCiAgICAgIG15c3FsX3F1ZXJ5KCJDUkVBVEUgVEFCTEUgYHRtcF9maWxlYCAoIGBWaWV3aW5nIHRoZSBmaWxlIGluIHNhZmVfbW9kZStvcGVuX2Jhc2VkaXJgIExPTkdCTE9CIE5PVCBOVUxMICk7Iik7DQogICAgICBteXNxbF9xdWVyeSgiTE9BRCBEQVRBIElORklMRSBcIiIuYWRkc2xhc2hlcygkc3FsX2dldGZpbGUpLiJcIiBJTlRPIFRBQkxFIHRtcF9maWxlIik7DQogICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gdG1wX2ZpbGU7Iik7DQogICAgICBpZiAoISRyZXN1bHQpIHtlY2hvICI8Yj5FcnJvciBpbiByZWFkaW5nIGZpbGUgKHBlcm1pc2lvbiBkZW5pZWQpITwvYj4iO30NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICBmb3IgKCRpPTA7JGk8bXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTskaSsrKSB7JG5hbWUgPSBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsJGkpO30NCiAgICAgICAkZiA9ICIiOw0KICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKSB7JGYgLj0gam9pbiAoIlxyXG4iLCRyb3cpO30NCiAgICAgICBpZiAoZW1wdHkoJGYpKSB7ZWNobyAiPGI+RmlsZSBcIiIuJHNxbF9nZXRmaWxlLiJcIiBkb2VzIG5vdCBleGlzdHMgb3IgZW1wdHkhPC9iPjxicj4iO30NCiAgICAgICBlbHNlIHtlY2hvICI8Yj5GaWxlIFwiIi4kc3FsX2dldGZpbGUuIlwiOjwvYj48YnI+Ii5ubDJicihodG1sc3BlY2lhbGNoYXJzKCRmKSkuIjxicj4iO30NCiAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICBteXNxbF9xdWVyeSgiRFJPUCBUQUJMRSB0bXBfZmlsZTsiKTsNCiAgICAgIH0NCiAgICAgfQ0KICAgICBteXNxbF9kcm9wX2RiKCR0bXBkYik7IA0KICAgIH0NCiAgIH0NCiAgfQ0KfQ0KZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCmlmICgkc3FsX3NvY2spIHsNCiAgJGFmZmVjdGVkID0gQG15c3FsX2FmZmVjdGVkX3Jvd3MoJHNxbF9zb2NrKTsNCiAgaWYgKCghaXNfbnVtZXJpYygkYWZmZWN0ZWQpKSBvciAoJGFmZmVjdGVkIDwgMCkpeyRhZmZlY3RlZCA9IDA7fQ0KICBlY2hvICI8dHI+PHRkPjxjZW50ZXI+PGI+QWZmZWN0ZWQgcm93cyA6ICIuJGFmZmVjdGVkLiI8L2NlbnRlcj48L3RkPjwvdHI+IjsNCn0NCmVjaG8gIjwvdGFibGU+IjsNCn0NCmlmICgkeCA9PSAicGhwaW5mbyIpIHtAb2JfY2xlYW4oKTsgcGhwaW5mbygpOyBib2dlbGV4aXQoKTt9DQppZiAoJHggPT0gInNlY3VyaXR5Iikgew0KICBlY2hvICI8ZGl2IGNsYXNzPWJhcmhlYWRlcj4uOiBTZXJ2ZXIgU2VjdXJpdHkgSW5mb3JtYXRpb24gOi48L2Rpdj4iLg0KICAgICAgICI8dGFibGU+Ii4NCiAgICAgICAiPHRyPjx0ZD5PcGVuIEJhc2UgRGlyPC90ZD48dGQ+Ii4kaG9wZW5iYXNlZGlyLiI8L3RkPjwvdHI+IjsNCiAgZWNobyAiPHRkPlBhc3N3b3JkIEZpbGU8L3RkPjx0ZD4iOw0KICBpZiAoISR3aW4pIHsNCiAgICBpZiAoJG5peHBhc3N3ZCkgew0KICAgICAgaWYgKCRuaXhwYXNzd2QgPT0gMSkgeyRuaXhwYXNzd2QgPSAwO30NCiAgICAgIGVjaG8gIipuaXggL2V0Yy9wYXNzd2Q6PGJyPiI7DQogICAgICBpZiAoIWlzX251bWVyaWMoJG5peHB3ZF9zKSkgeyRuaXhwd2RfcyA9IDA7fQ0KICAgICAgaWYgKCFpc19udW1lcmljKCRuaXhwd2RfZSkpIHskbml4cHdkX2UgPSAkbml4cHdkcGVycGFnZTt9DQogICAgICBlY2hvICI8Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPVwic2VjdXJpdHlcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cIm5peHBhc3N3ZFwiIHZhbHVlPVwiMVwiPjxiPkZyb206PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dD1cIiBuYW1lPVwibml4cHdkX3NcIiB2YWx1ZT1cIiIuJG5peHB3ZF9zLiJcIj4mbmJzcDs8Yj5Ubzo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm5peHB3ZF9lXCIgdmFsdWU9XCIiLiRuaXhwd2RfZS4iXCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiVmlld1wiPjwvZm9ybT48YnI+IjsNCiAgICAgICRpID0gJG5peHB3ZF9zOw0KICAgICAgd2hpbGUgKCRpIDwgJG5peHB3ZF9lKSB7DQogICAgICAgICR1aWQgPSBwb3NpeF9nZXRwd3VpZCgkaSk7DQogICAgICAgIGlmICgkdWlkKSB7DQogICAgICAgICAgJHVpZFsiZGlyIl0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9bHMmZD0iLnVybGVuY29kZSgkdWlkWyJkaXIiXSkuIlwiPiIuJHVpZFsiZGlyIl0uIjwvYT4iOw0KICAgICAgICAgIGVjaG8gam9pbigiOiIsJHVpZCkuIjxicj4iOw0KICAgICAgICB9DQogICAgICAgICRpKys7DQogICAgICB9DQogICAgfQ0KICAgIGVsc2Uge2VjaG8gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PXNlY3VyaXR5Jm5peHBhc3N3ZD0xJmQ9Ii4kdWQuIlwiPjxiPjx1PkdldCAvZXRjL3Bhc3N3ZDwvdT48L2I+PC9hPiI7fQ0KICB9DQogIGVsc2Ugew0KICAgICR2ID0gJF9TRVJWRVJbIldJTkRJUiJdLiJccmVwYWlyXHNhbSI7DQogICAgaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCR2KSkge2VjaG8gIjx0ZCBjb2xzcGFuPTI+PGRpdiBjbGFzcz1meGVycm1zZz5Zb3UgY2FuJ3QgY3JhY2sgV2luZG93cyBwYXNzd29yZHMoIi4kdi4iKTwvZGl2PjwvdGQ+PC90cj4iOyB9DQogICAgZWxzZSB7ZWNobyAiWW91IGNhbiBjcmFjayBXaW5kb3dzIHBhc3N3b3Jkcy4gPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPXNhbSZkPSIuJF9TRVJWRVJbIldJTkRJUiJdLiJcXHJlcGFpciZmdD1kb3dubG9hZFwiPjx1PjxiPkRvd25sb2FkPC9iPjwvdT48L2E+LCBhbmQgdXNlIGxjcC5jcmFjaysgPy48L3RkPjwvdHI+Ijt9DQogIH0NCiAgZWNobyAiPC90ZD48L3RyPiI7DQogIGVjaG8gIjx0cj48dGQ+Q29uZmlnIEZpbGVzPC90ZD48dGQ+IjsNCiAgaWYgKCEkd2luKSB7DQogICAgJHYgPSBhcnJheSgNCiAgICAgICAgYXJyYXkoIlVzZXIgRG9tYWlucyIsIi9ldGMvdXNlcmRvbWFpbnMiKSwNCiAgICAgICAgYXJyYXkoIkNwYW5lbCBDb25maWciLCIvdmFyL2NwYW5lbC9hY2NvdW50aW5nLmxvZyIpLA0KICAgICAgICBhcnJheSgiQXBhY2hlIENvbmZpZyIsIi91c3IvbG9jYWwvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIpLA0KICAgICAgICBhcnJheSgiQXBhY2hlIENvbmZpZyIsIi9ldGMvaHR0cGQuY29uZiIpLA0KICAgICAgICBhcnJheSgiU3lzbG9nIENvbmZpZyIsIi9ldGMvc3lzbG9nLmNvbmYiKSwNCiAgICAgICAgYXJyYXkoIk1lc3NhZ2Ugb2YgVGhlIERheSIsIi9ldGMvbW90ZCIpLA0KICAgICAgICBhcnJheSgiSG9zdHMiLCIvZXRjL2hvc3RzIikNCiAgICApOw0KICAgICRzZXAgPSAiLyI7DQogIH0NCiAgZWxzZSB7DQogICAgJHdpbmRpciA9ICRfU0VSVkVSWyJXSU5ESVIiXTsNCiAgICAkZXRjZGlyID0gJHdpbmRpciAuICJcc3lzdGVtMzJcZHJpdmVyc1xldGNcXCI7DQogICAgJHYgPSBhcnJheSgNCiAgICAgICAgYXJyYXkoIkhvc3RzIiwkZXRjZGlyLiJob3N0cyIpLA0KICAgICAgICBhcnJheSgiTG9jYWwgTmV0d29yayBNYXAiLCRldGNkaXIuIm5ldHdvcmtzIiksDQogICAgICAgIGFycmF5KCJMTSBIb3N0cyIsJGV0Y2Rpci4ibG1ob3N0cy5zYW0iKSwNCiAgICApOw0KICAgICRzZXAgPSAiXFwiOw0KICB9DQogIGZvcmVhY2ggKCR2IGFzICRzZWNfYXJyKSB7DQogICAgJHNlY19mID0gc3Vic3RyKHN0cnJjaHIoJHNlY19hcnJbMV0sICRzZXApLCAxKTsNCiAgICAkc2VjX2QgPSBydHJpbSgkc2VjX2FyclsxXSwkc2VjX2YpOw0KICAgICRzZWNfZnVsbCA9ICRzZWNfZC4kc2VjX2Y7DQogICAgJHNlY19kID0gcnRyaW0oJHNlY19kLCRzZXApOw0KICAgIGlmIChmaWxlX2dldF9jb250ZW50cygkc2VjX2Z1bGwpKSB7DQogICAgICBlY2hvICIgWyA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9JHNlY19mJmQ9Ii51cmxlbmNvZGUoJHNlY19kKS4iJmZ0PXR4dFwiPjx1PjxiPiIuJHNlY19hcnJbMF0uIjwvYj48L3U+PC9hPiBdICI7DQogICAgfQ0KICB9DQogIGVjaG8gIjwvdGQ+PC90cj4iOw0KDQogIGZ1bmN0aW9uIGRpc3BsYXlzZWNpbmZvKCRuYW1lLCR2YWx1ZSkgew0KICAgIGlmICghZW1wdHkoJHZhbHVlKSkgew0KICAgICAgZWNobyAiPHRyPjx0ZD4iLiRuYW1lLiI8L3RkPjx0ZD48cHJlPiIud29yZHdyYXAoJHZhbHVlLDEwMCkuIjwvcHJlPjwvdGQ+PC90cj4iOw0KICAgIH0NCiAgfQ0KICBpZiAoISR3aW4pIHsNCiAgICBkaXNwbGF5c2VjaW5mbygiT1MgVmVyc2lvbiIsbXlzaGVsbGV4ZWMoImNhdCAvcHJvYy92ZXJzaW9uIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJLZXJuZWwgVmVyc2lvbiIsbXlzaGVsbGV4ZWMoInN5c2N0bCAtYSB8IGdyZXAgdmVyc2lvbiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiRGlzdHJpYiBOYW1lIixteXNoZWxsZXhlYygiY2F0IC9ldGMvaXNzdWUiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkRpc3RyaWIgTmFtZSAoMikiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9pc3N1ZS5ycG1uZXciKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkNQVSBJbmZvIixteXNoZWxsZXhlYygiY2F0IC9wcm9jL2NwdWluZm8iKSk7DQogICAgZGlzcGxheXNlY2luZm8oIlJBTSIsbXlzaGVsbGV4ZWMoImZyZWUgLW0iKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkhERCBTcGFjZSIsbXlzaGVsbGV4ZWMoImRmIC1oIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJMaXN0IG9mIEF0dHJpYnV0ZXMiLG15c2hlbGxleGVjKCJsc2F0dHIgLWEiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIk1vdW50IE9wdGlvbnMiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9mc3RhYiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiY1VSTCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggY3VybCIpKTsNCglkaXNwbGF5c2VjaW5mbygibHlueCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggbHlueCIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygibGlua3MgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIGxpbmtzIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJmZXRjaCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggZmV0Y2giKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkdFVCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggR0VUIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJwZXJsIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBwZXJsIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJXaGVyZSBpcyBBcGFjaGU/IixteXNoZWxsZXhlYygid2hlcmVpcyBhcGFjaGUiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIHBlcmw/IixteXNoZWxsZXhlYygid2hlcmVpcyBwZXJsIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJMb2NhdGUgcHJvZnRwZC5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHByb2Z0cGQuY29uZiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiTG9jYXRlIGh0dHBkLmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgaHR0cGQuY29uZiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiTG9jYXRlIG15LmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgbXkuY29uZiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiTG9jYXRlIHBzeWJuYy5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHBzeWJuYy5jb25mIikpOw0KICB9DQogIGVsc2Ugew0KICAgIGRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uIixteXNoZWxsZXhlYygidmVyIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJBY2NvdW50IFNldHRpbmdzIixteXNoZWxsZXhlYygibmV0IGFjY291bnRzIikpOw0KICB9DQogIGVjaG8gIjwvdGFibGU+XG4iOw0KfQ0KDQppZiAoJHggPT0gImp1bXAiKSB7DQokbmdpcG11aiA9IGJhc2U2NF9kZWNvZGUoIkNTZ2tjMjBnUFNCcGJtbGZaMlYwS0NkellXWmxYMjF2WkdVbktTQTlQU0F3S1NBL0lDUnpiU0E5SUNkdlptWW5PaUJrYVdVb0p6eG1iMjUwSUhOcGVtVTlJalFpSUdOdmJHOXlQU0lqTURBd01EQXdJaUJtWVdObFBTSkRZV3hwWW5KcElqNDhZajVGY25KdmNqb2dVMkZtWlY5dGIyUmxJRDBnVDI0OEwySStQQzltYjI1MFBpY3BPdzBLYzJWMFgzUnBiV1ZmYkdsdGFYUW9NQ2s3RFFwQUpIQmhjM04zWkNBOUlHWnZjR1Z1S0NjdlpYUmpMM0JoYzNOM1pDY3NKM0luS1RzTkNtbG1JQ2doSkhCaGMzTjNaQ2tnZXlCa2FXVW9KenhtYjI1MElITnBlbVU5SWpRaUlHTnZiRzl5UFNJak1EQXdNREF3SWlCbVlXTmxQU0pEWVd4cFluSnBJajQ4WWo1YkxWMGdSWEp5YjNJZ09pQkRiM1ZrYm1CMElGSmxZV1FnTDJWMFl5OXdZWE56ZDJROEwySStQQzltYjI1MFBpY3BPeUI5RFFva2NIVmlJRDBnWVhKeVlYa29LVHNOQ2lSMWMyVnljeUE5SUdGeWNtRjVLQ2s3RFFva1kyOXVaaUE5SUdGeWNtRjVLQ2s3RFFva2FTQTlJREE3RFFwM2FHbHNaU2doWm1WdlppZ2tjR0Z6YzNka0tTa05DbnNOQ2lSemRISWdQU0JtWjJWMGN5Z2tjR0Z6YzNka0tUc05DbWxtSUNna2FTQStJREV3TUNrTkNuc05DaUFnSkhCdmN5QTlJSE4wY25CdmN5Z2tjM1J5TENjNkp5azdEUW9nSUNSMWMyVnlibUZ0WlNBOUlITjFZbk4wY2lna2MzUnlMREFzSkhCdmN5azdEUW9nSUNSa2FYSjZJRDBnSnk5b2IyMWxMeWN1SkhWelpYSnVZVzFsTGljdmNIVmliR2xqWDJoMGJXd3ZKenNOQ2lBZ2FXWWdLQ2drZFhObGNtNWhiV1VnSVQwZ0p5Y3BLUTBLSUNCN0RRb2dJQ0JwWmlBb2FYTmZjbVZoWkdGaWJHVW9KR1JwY25vcEtRMEtJQ0FnZXcwS0lDQWdJR0Z5Y21GNVgzQjFjMmdvSkhWelpYSnpMQ1IxYzJWeWJtRnRaU2s3RFFvZ0lDQWdZWEp5WVhsZmNIVnphQ2drY0hWaUxDUmthWEo2S1RzTkNpQWdJSDBOQ2lBZ2ZRMEtJQ0FnZlEwS0pHa3JLenNOQ24wTkNtVmphRzhnSWx4dUlEeG1iMjUwSUhOcGVtVTlKek1uSUdOdmJHOXlQU2NqTURBNE1EZ3dKeUJtWVdObFBTZERZV3hwWW5KcEp6NDhZbkkrV3kxZFBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVd5QlRWRUZTVkNCZFBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVd5MWRJQ0E4WW5JK1BDOW1iMjUwUGx4dUlqc05DbVp2Y21WaFkyZ2dLQ1IxYzJWeWN5QmhjeUFrZFhObGNpa05DbnNOQ21WamFHOGdJanhtYjI1MElITnBlbVU5SnpNbklHTnZiRzl5UFNjalpXVXdPREE0SnlCbVlXTmxQU2REWVd4cFluSnBKejRnV3l0ZElDOW9iMjFsTHlSMWMyVnlMM0IxWW14cFkxOW9kRzFzTHp3dlptOXVkRDQ4WW5JdlBpSTdEUXA5RFFwbFkyaHZJQ0pjYmlBOFptOXVkQ0J6YVhwbFBTY3pKeUJqYjJ4dmNqMG5JekF3T0RBNE1DY2dabUZqWlQwblEyRnNhV0p5YVNjK1BHSnlQbHN0WFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZzZ1JrbE9TVk5JSUYwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxYkxWMGdQR0p5UGp3dlptOXVkRDVjYmlJN0RRcGxZMmh2SUNKY2JpQThabTl1ZENCemFYcGxQU2N5SnlCamIyeHZjajBuSXpnd01EQXdNQ2NnWm1GalpUMG5RMkZzYVdKeWFTYytTblZ0Y0dsdVp5QlRZMkZ1Ym1WeUlHbHpJRU52YlhCc1pYUmxaQ0U4TDJadmJuUStYRzRpT3c9PSIpOw0KZXZhbCAoJG5naXBtdWopOw0KfQ0KDQppZiAoJHggPT0gInN5bSIpIHsNCiRrbmlsbXlzID0gYmFzZTY0X2RlY29kZSgiUUhObGRGOTBhVzFsWDJ4cGJXbDBLREFwT3cwS0pISjRNU0E5SUNkb2RIUndPaTh2Snk0a1gxTkZVbFpGVWxzblUwVlNWa1ZTWDA1QlRVVW5YUzRrWDFORlVsWkZVbHNuVWtWUlZVVlRWRjlWVWtrblhUc05DaVJ5ZURJZ1BXVjRjR3h2WkdVb0p5OG5MQ1J5ZURFZ0tUc05DaVJ5ZURFZ1BYTjBjbDl5WlhCc1lXTmxLQ1J5ZURKYlkyOTFiblFvSkhKNE1pa3RNVjBzSnljc0pISjRNU0FwT3cwS0RRcEFiV3RrYVhJb0ozTjViU2NzTURjM055azdEUW9rY25neElDQTlJQ0pQY0hScGIyNXpJR0ZzYkNCY2JpQkVhWEpsWTNSdmNubEpibVJsZUNCVGRYZ3VhSFJ0YkNCY2JpQkJaR1JVZVhCbElIUmxlSFF2Y0d4aGFXNGdMbkJvY0NCY2JpQkJaR1JJWVc1a2JHVnlJSE5sY25abGNpMXdZWEp6WldRZ0xuQm9jQ0JjYmlBZ1FXUmtWSGx3WlNCMFpYaDBMM0JzWVdsdUlDNW9kRzFzSUZ4dUlFRmtaRWhoYm1Sc1pYSWdkSGgwSUM1b2RHMXNJRnh1SUZKbGNYVnBjbVVnVG05dVpTQmNiaUJUWVhScGMyWjVJRUZ1ZVNJN0RRb2tjbmd5SUQxQVptOXdaVzRnS0NkemVXMHZMbWgwWVdOalpYTnpKeXduZHljcE93MEtabmR5YVhSbEtDUnllRElnTENSeWVERXBPdzBLUUhONWJXeHBibXNvSnk4bkxDZHplVzB2Y205dmRDY3BPdzBLYVdZb2FYTnpaWFFvSkY5U1JWRlZSVk5VV3lkNEoxMHBLUTBLZXcwS2MzZHBkR05vSUNna1gxSkZVVlZGVTFSYkozZ25YU2tOQ25zTkNtTmhjMlVnSjNONWJTYzZEUW9rY25nMElEMGdRR1pwYkdVb0p5OWxkR012Ym1GdFpXUXVZMjl1WmljcE93MEthV1lvSVNSeWVEUXBEUXA3RFFwa2FXVWdLQ0lnWTJGdUozUWdjbVZoWkNBdlpYUmpMMjVoYldWa0xtTnZibVlpS1RzTkNuME5DbVZzYzJVTkNuc05DbVZqYUc4Z0lqeGthWFlnWTJ4aGMzTTlKM1J0Y0NjK1BIUmhZbXhsSUdGc2FXZHVQU2RqWlc1MFpYSW5JSGRwWkhSb1BTYzBNQ1VuUGp4MFpENUViMjFoYVc1elBDOTBaRDQ4ZEdRK1ZYTmxjbk04TDNSa1BqeDBaRDVUZVcxc2FXNXJJRHd2ZEdRK0lqc05DbVp2Y21WaFkyZ29KSEo0TkNCaGN5QWtjbmcxS1hzTkNtbG1LR1Z5WldkcEtDZDZiMjVsSnl3a2NuZzFLU2w3RFFwd2NtVm5YMjFoZEdOb1gyRnNiQ2duSTNwdmJtVWdJaWd1S2lraUl5Y3NKSEo0TlN3a2NuZzJLVHNOQ21ac2RYTm9LQ2s3RFFwcFppaHpkSEpzWlc0b2RISnBiU2drY25nMld6RmRXekJkS1NrZ1BqSXBldzBLSkhKNE55QTlJSEJ2YzJsNFgyZGxkSEIzZFdsa0tFQm1hV3hsYjNkdVpYSW9KeTlsZEdNdmRtRnNhV0Z6WlhNdkp5NGtjbmcyV3pGZFd6QmRLU2s3RFFva2NuZzRJRDBnSkhKNE4xc25ibUZ0WlNkZElEc05Da0J6ZVcxc2FXNXJLQ2N2Snl3bmMzbHRMM0p2YjNRbktUc05DaVJ5ZURnZ1BTQWtjbmcyV3pGZFd6QmRPdzBLSkhKNE9TQTlJQ2RjTG1seUp6c05DaVJ5ZURFd0lEMGdKMXd1YVd3bk93MEthV1lnS0dWeVpXZHBLQ0lrY25nNUlpd2tjbmcyV3pGZFd6QmRLU0J2Y2lCbGNtVm5hU2dpSkhKNE1UQWlMQ1J5ZURaYk1WMWJNRjBwSUNrTkNuc05DaVJ5ZURnZ1BTQWlQR1JwZGlCemRIbHNaVDBuSUdOdmJHOXlPaUFqUmtZd01EQXdJRHNnZEdWNGRDMXphR0ZrYjNjNklEQndlQ0F3Y0hnZ01YQjRJSEpsWkRzZ0p6NGlMaVJ5ZURaYk1WMWJNRjB1Snp3dlpHbDJQaWM3RFFwOURRcGxZMmh2SUNJTkNqeDBjajROQ2cwS1BIUmtQZzBLUEdScGRpQmpiR0Z6Y3owblpHOXRKejQ4WVNCMFlYSm5aWFE5SjE5aWJHRnVheWNnYUhKbFpqMW9kSFJ3T2k4dmQzZDNMaUl1SkhKNE5sc3hYVnN3WFM0bkx6NG5MaVJ5ZURndUp5QThMMkUrSUR3dlpHbDJQZzBLUEM5MFpENE5DZzBLRFFvOGRHUStEUW9uTGlSeWVEZGJKMjVoYldVblhTNGlEUW84TDNSa1BnMEtEUW84ZEdRK0RRbzhZU0JvY21WbVBTZHplVzB2Y205dmRDOW9iMjFsTHlJdUpISjROMXNuYm1GdFpTZGRMaUl2Y0hWaWJHbGpYMmgwYld3bklIUmhjbWRsZEQwblgySnNZVzVySno1emVXMXNhVzVySUR3dllUNE5Dand2ZEdRK0RRb05Dand2ZEhJK1BDOWthWFkrSUNJN0RRcG1iSFZ6YUNncE93MEtmUTBLZlEwS2ZRMEtmUTBLZlEwS2ZRPT0iKTsNCmV2YWwgKCRrbmlsbXlzKTsNCn0NCg0KaWYgKCR4ID09ICJta2ZpbGUiKSB7DQppZiAoJG1rZmlsZSAhPSAkZCkgew0KICBpZiAoZmlsZV9leGlzdHMoJG1rZmlsZSkpIHtlY2hvICI8Yj5NYWtlIEZpbGUgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSkuIlwiPC9iPjogb2JqZWN0IGFscmVhZHkgZXhpc3RzISI7fQ0KICBlbHNlaWYgKCFmb3BlbigkbWtmaWxlLCJ3IikpIHtlY2hvICI8Yj5NYWtlIEZpbGUgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSkuIlwiPC9iPjogYWNjZXNzIGRlbmllZCEiO30NCiAgZWxzZSB7JHggPSAiZiI7ICRkID0gZGlybmFtZSgkbWtmaWxlKTsgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fSAkZiA9IGJhc2VuYW1lKCRta2ZpbGUpO30NCn0NCmVsc2UgeyR4ID0gJGRzcGFjdCA9ICJscyI7fQ0KDQp9DQppZiAoJHggPT0gImNobW9kIikgew0KICAkbW9kZSA9IGZpbGVwZXJtcygkZC4kZik7DQogIGlmICghJG1vZGUpIHtlY2hvICI8Yj5DaGFuZ2UgZmlsZS1tb2RlIHdpdGggZXJyb3I6PC9iPiBjYW4ndCBnZXQgY3VycmVudCB2YWx1ZS4iO30NCiAgZWxzZSB7DQogICAgJGZvcm0gPSBUUlVFOw0KICAgIGlmICgkY2htb2Rfc3VibWl0KQ0KICB7DQogICAkb2N0ZXQgPSAiMCIuYmFzZV9jb252ZXJ0KCgkY2htb2Rfb1siciJdPzE6MCkuKCRjaG1vZF9vWyJ3Il0/MTowKS4oJGNobW9kX29bIngiXT8xOjApLigkY2htb2RfZ1siciJdPzE6MCkuKCRjaG1vZF9nWyJ3Il0/MTowKS4oJGNobW9kX2dbIngiXT8xOjApLigkY2htb2Rfd1siciJdPzE6MCkuKCRjaG1vZF93WyJ3Il0/MTowKS4oJGNobW9kX3dbIngiXT8xOjApLDIsOCk7DQogICBpZiAoY2htb2QoJGQuJGYsJG9jdGV0KSkgeyR4ID0gImxzIjsgJGZvcm0gPSBGQUxTRTsgJGVyciA9ICIiO30NCiAgIGVsc2UgeyRlcnIgPSAiQ2FuJ3QgY2htb2QgdG8gIi4kb2N0ZXQuIi4iO30NCiAgfQ0KICBpZiAoJGZvcm0pDQogIHsNCiAgICRwZXJtcyA9IHBhcnNlX3Blcm1zKCRtb2RlKTsNCiAgIGVjaG8gIjxiPkNoYW5naW5nIGZpbGUtbW9kZSAoIi4kZC4kZi4iKSwgIi52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iICgiLnN1YnN0cihkZWNvY3QoZmlsZXBlcm1zKCRkLiRmKSksLTQsNCkuIik8L2I+PGJyPiIuKCRlcnI/IjxiPkVycm9yOjwvYj4gIi4kZXJyOiIiKS4iPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkZCkuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGYpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPWNobW9kPjx0YWJsZSBhbGlnbj1sZWZ0IHdpZHRoPTMwMCBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTU+PHRyPjx0ZD48Yj5Pd25lcjwvYj48YnI+PGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfb1tyXSB2YWx1ZT0xIi4oJHBlcm1zWyJvIl1bInIiXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1JlYWQ8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1jaG1vZF9vW3ddIHZhbHVlPTEiLigkcGVybXNbIm8iXVsidyJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7V3JpdGU8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3hdIHZhbHVlPTEiLigkcGVybXNbIm8iXVsieCJdPyIgY2hlY2tlZCI6IiIpLiI+ZVhlY3V0ZTwvdGQ+PHRkPjxiPkdyb3VwPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9nW3JdIHZhbHVlPTEiLigkcGVybXNbImciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbd10gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbeF0gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PHRkPjxiPldvcmxkPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF93W3JdIHZhbHVlPTEiLigkcGVybXNbInciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbd10gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbeF0gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PC90cj48dHI+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWNobW9kX3N1Ym1pdCB2YWx1ZT1cIlNhdmVcIj48L3RkPjwvdHI+PC90YWJsZT48L2Zvcm0+IjsNCiAgfQ0KfQ0KfQ0KaWYgKCR4ID09ICJ1cGxvYWQiKSB7DQogICR1cGxvYWRtZXNzID0gIiI7DQogICR1cGxvYWRwYXRoID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR1cGxvYWRwYXRoKTsNCiAgaWYgKGVtcHR5KCR1cGxvYWRwYXRoKSkgeyR1cGxvYWRwYXRoID0gJGQ7fQ0KICBlbHNlaWYgKHN1YnN0cigkdXBsb2FkcGF0aCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR1cGxvYWRwYXRoIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICBpZiAoIWVtcHR5KCRzdWJtaXQpKSB7DQogICAgZ2xvYmFsICRfRklMRVM7DQogICAgJHVwbG9hZGZpbGUgPSAkX0ZJTEVTWyJ1cGxvYWRmaWxlIl07DQogICAgaWYgKCFlbXB0eSgkdXBsb2FkZmlsZVsidG1wX25hbWUiXSkpIHsNCiAgICAgIGlmIChlbXB0eSgkdXBsb2FkZmlsZW5hbWUpKSB7JGRlc3RpbiA9ICR1cGxvYWRmaWxlWyJuYW1lIl07fQ0KICAgICAgZWxzZSB7JGRlc3RpbiA9ICR1c2VyZmlsZW5hbWU7fQ0KICAgICAgaWYgKCFtb3ZlX3VwbG9hZGVkX2ZpbGUoJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0sJHVwbG9hZHBhdGguJGRlc3RpbikpIHsNCiAgICAgICAgJHVwbG9hZG1lc3MgLj0gIkVycm9yIHVwbG9hZGluZyBmaWxlICIuJHVwbG9hZGZpbGVbIm5hbWUiXS4iIChjYW4ndCBjb3B5IFwiIi4kdXBsb2FkZmlsZVsidG1wX25hbWUiXS4iXCIgdG8gXCIiLiR1cGxvYWRwYXRoLiRkZXN0aW4uIlwiITxicj4iOw0KICAgICAgfQ0KICAgICAgZWxzZSB7ICR1cGxvYWRtZXNzIC49ICJGaWxlIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSE8YnI+Ii4kdXBsb2FkcGF0aC4kZGVzdGluOyB9DQogICAgfQ0KICAgIGVsc2VpZiAoIWVtcHR5KCR1cGxvYWR1cmwpKSB7DQogICAgICBpZiAoIWVtcHR5KCR1cGxvYWRmaWxlbmFtZSkpIHskZGVzdGluID0gJHVwbG9hZGZpbGVuYW1lO30NCiAgICAgIGVsc2Ugew0KICAgICAgICAkZGVzdGluID0gZXhwbG9kZSgiLyIsJGRlc3Rpbik7DQogICAgICAgICRkZXN0aW4gPSAkZGVzdGluW2NvdW50KCRkZXN0aW4pLTFdOw0KICAgICAgICBpZiAoZW1wdHkoJGRlc3RpbikpIHsNCiAgICAgICAgICAkaSA9IDA7DQogICAgICAgICAgJGIgPSAiIjsNCiAgICAgICAgICB3aGlsZShmaWxlX2V4aXN0cygkdXBsb2FkcGF0aC4kZGVzdGluKSkgew0KICAgICAgICAgICAgaWYgKCRpID4gMCkgeyRiID0gIl8iLiRpO30NCiAgICAgICAgICAgICRkZXN0aW4gPSAidXBsb2FkIi4kYjsNCiAgICAgICAgICAgICRpKys7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBpZiAoKCFlcmVnaSgiaHR0cDovLyIsJHVwbG9hZHVybCkpIGFuZCAoIWVyZWdpKCJodHRwczovLyIsJHVwbG9hZHVybCkpIGFuZCAoIWVyZWdpKCJmdHA6Ly8iLCR1cGxvYWR1cmwpKSkge2VjaG8gIjxiPkluY29ycmVjdCBVUkwhPC9iPiI7fQ0KICAgICAgZWxzZSB7DQogICAgICAgICRzdCA9IGdldG1pY3JvdGltZSgpOw0KICAgICAgICAkY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkdXBsb2FkdXJsKTsNCiAgICAgICAgJGR0ID0gcm91bmQoZ2V0bWljcm90aW1lKCktJHN0LDQpOw0KICAgICAgICBpZiAoISRjb250ZW50KSB7JHVwbG9hZG1lc3MgLj0gICJDYW4ndCBkb3dubG9hZCBmaWxlISI7fQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICBpZiAoJGZpbGVzdGVhbHRoKSB7JHN0YXQgPSBzdGF0KCR1cGxvYWRwYXRoLiRkZXN0aW4pO30NCiAgICAgICAgICAkZnAgPSBmb3BlbigkdXBsb2FkcGF0aC4kZGVzdGluLCJ3Iik7DQogICAgICAgICAgaWYgKCEkZnApIHskdXBsb2FkbWVzcyAuPSAiRXJyb3Igd3JpdGluZyB0byBmaWxlICIuaHRtbHNwZWNpYWxjaGFycygkZGVzdGluKS4iITxicj4iO30NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGZ3cml0ZSgkZnAsJGNvbnRlbnQsc3RybGVuKCRjb250ZW50KSk7DQogICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgIGlmICgkZmlsZXN0ZWFsdGgpIHt0b3VjaCgkdXBsb2FkcGF0aC4kZGVzdGluLCRzdGF0WzldLCRzdGF0WzhdKTt9DQogICAgICAgICAgICAkdXBsb2FkbWVzcyAuPSAiRmlsZSBzYXZlZCBmcm9tICIuJHVwbG9hZHVybC4iICEiOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICBlbHNlIHsgZWNobyAiTm8gZmlsZSB0byB1cGxvYWQhIjsgfQ0KICB9DQogIGlmICgkbWluaWZvcm0pIHsNCiAgICBlY2hvICI8Yj4iLiR1cGxvYWRtZXNzLiI8L2I+IjsNCiAgICAkeCA9ICJscyI7DQogIH0NCiAgZWxzZSB7DQogICAgZWNobyAiPHRhYmxlPjx0cj48dGQgY29sc3Bhbj0yIGNsYXNzPWJhcmhlYWRlcj4iLg0KICAgICAgICAgIi46IEZpbGUgVXBsb2FkIDouPC90ZD4iLg0KICAgICAgICAgIjx0ZCBjb2xzcGFuPTI+Ii4kdXBsb2FkbWVzcy4iPC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD48Zm9ybSBlbmN0eXBlPVwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIGFjdGlvbj1cIiIuJHN1cmwuIng9dXBsb2FkJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIiBtZXRob2Q9UE9TVD4iLg0KICAgICAgICAgIkZyb20gWW91ciBDb21wdXRlcjo8L3RkPjx0ZD48aW5wdXQgbmFtZT1cInVwbG9hZGZpbGVcIiB0eXBlPVwiZmlsZVwiPjwvdGQ+PC90cj4iLg0KICAgICAgICAgIjx0cj48dGQ+RnJvbSBVUkw6PC90ZD48dGQ+PGlucHV0IG5hbWU9XCJ1cGxvYWR1cmxcIiB0eXBlPVwidGV4dFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR1cGxvYWR1cmwpLiJcIiBzaXplPVwiNzBcIj48L3RkPjwvdHI+Ii4NCiAgICAgICAgICI8dHI+PHRkPlRhcmdldCBEaXJlY3Rvcnk6PC90ZD48dGQ+PGlucHV0IG5hbWU9XCJ1cGxvYWRwYXRoXCIgc2l6ZT1cIjcwXCIgdmFsdWU9XCIiLiRkaXNwZC4iXCI+PC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD5UYXJnZXQgRmlsZSBOYW1lOjwvdGQ+PHRkPjxpbnB1dCBuYW1lPXVwbG9hZGZpbGVuYW1lIHNpemU9MjU+PC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVwbG9hZGF1dG9uYW1lIHZhbHVlPTEgaWQ9ZGY0PiBDb252ZXJ0IGZpbGUgbmFtZSB0byBsb3dlcmNhc2U8L3RkPjwvdHI+Ii4NCiAgICAgICAgICI8dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIlVwbG9hZFwiPiIuDQogICAgICAgICAiPC9mb3JtPjwvdGQ+PC90cj48L3RhYmxlPiI7DQogIH0NCn0NCmlmICgkeCA9PSAiZGVsZXRlIikgew0KICAkZGVsZXJyID0gIiI7DQogIGZvcmVhY2ggKCRhY3Rib3ggYXMgJHYpIHsNCiAgICAkcmVzdWx0ID0gRkFMU0U7DQogICAgJHJlc3VsdCA9IGZzX3Jtb2JqKCR2KTsNCiAgICBpZiAoISRyZXN1bHQpIHskZGVsZXJyIC49ICJDYW4ndCBkZWxldGUgIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iPGJyPiI7fQ0KICB9DQogIGlmICghZW1wdHkoJGRlbGVycikpIHtlY2hvICI8Yj5EZWxldGluZyB3aXRoIGVycm9yczo8L2I+PGJyPiIuJGRlbGVycjt9DQogICR4ID0gImxzIjsNCn0NCmlmICghJHVzZWZzYnVmZikgew0KICBpZiAoKCR4ID09ICJwYXN0ZSIpIG9yICgkeCA9PSAiY29weSIpIG9yICgkeCA9PSAiY3V0Iikgb3IgKCR4ID09ICJ1bnNlbGVjdCIpKSB7ZWNobyAiPGNlbnRlcj48Yj5Tb3JyeSwgYnVmZmVyIGlzIGRpc2FibGVkLiBGb3IgZW5hYmxlLCBzZXQgZGlyZWN0aXZlIFwiXCR1c2Vmc2J1ZmZcIiBhcyBUUlVFLjwvY2VudGVyPiI7fQ0KfQ0KZWxzZSB7DQogIGlmICgkeCA9PSAiY29weSIpIHskZXJyID0gIiI7ICRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkYWN0Ym94KTsgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICR4ID0gImxzIjsgfQ0KICBlbHNlaWYgKCR4ID09ICJjdXQiKSB7JHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjdXQiXSwkYWN0Ym94KTsgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICR4ID0gImxzIjt9DQogIGVsc2VpZiAoJHggPT0gInVuc2VsZWN0Iikge2ZvcmVhY2ggKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJHYsJGFjdGJveCkpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9fSBmb3JlYWNoICgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJHYsJGFjdGJveCkpIHt1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pO319IGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyAkeCA9ICJscyI7fQ0KICBpZiAoJGFjdGVtcHR5YnVmZikgeyRzZXNzX2RhdGFbImNvcHkiXSA9ICRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXkoKTsgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7fQ0KICBlbHNlaWYgKCRhY3RwYXN0ZWJ1ZmYpIHsNCiAgICAkcHN0ZXJyID0gIiI7DQogICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7DQogICAgICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICAgICBpZiAoIWZzX2NvcHlfb2JqKCR2LCR0bykpIHskcHN0ZXJyIC49ICJDYW4ndCBjb3B5ICIuJHYuIiB0byAiLiR0by4iITxicj4iO30NCiAgICAgIGlmICgkY29weV91bnNldCkge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pO30NCiAgICB9DQogICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHsNCiAgICAgICR0byA9ICRkLmJhc2VuYW1lKCR2KTsNCiAgICAgIGlmICghZnNfbW92ZV9vYmooJHYsJHRvKSkgeyRwc3RlcnIgLj0gIkNhbid0IG1vdmUgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTsNCiAgICB9DQogICAgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7DQogICAgaWYgKCFlbXB0eSgkcHN0ZXJyKSkge2VjaG8gIjxiPlBhc3Rpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iLiRwc3RlcnI7fQ0KICAgICR4ID0gImxzIjsNCiAgfQ0KICBlbHNlaWYgKCRhY3RhcmNidWZmKSB7DQogICAgJGFyY2VyciA9ICIiOw0KICAgIGlmIChzdWJzdHIoJGFjdGFyY2J1ZmZfcGF0aCwtNyw3KSA9PSAiLnRhci5neiIpIHskZXh0ID0gIi50YXIuZ3oiO30NCiAgICBlbHNlIHskZXh0ID0gIi50YXIuZ3oiO30NCiAgICBpZiAoJGV4dCA9PSAiLnRhci5neiIpIHskY21kbGluZSA9ICJ0YXIgY2Z6diI7fQ0KICAgICRjbWRsaW5lIC49ICIgIi4kYWN0YXJjYnVmZl9wYXRoOw0KICAgICRvYmplY3RzID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCRzZXNzX2RhdGFbImN1dCJdKTsNCiAgICBmb3JlYWNoKCRvYmplY3RzIGFzICR2KSB7DQogICAgICAkdiA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdik7DQogICAgICBpZiAoc3Vic3RyKCR2LDAsc3RybGVuKCRkKSkgPT0gJGQpIHskdiA9IGJhc2VuYW1lKCR2KTt9DQogICAgICBpZiAoaXNfZGlyKCR2KSkgew0KICAgICAgICBpZiAoc3Vic3RyKCR2LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHYgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAgICR2IC49ICIqIjsNCiAgICAgIH0NCiAgICAgICRjbWRsaW5lIC49ICIgIi4kdjsNCiAgICB9DQogICAgJHRtcCA9IHJlYWxwYXRoKCIuIik7DQogICAgY2hkaXIoJGQpOw0KICAgICRyZXQgPSBteXNoZWxsZXhlYygkY21kbGluZSk7DQogICAgY2hkaXIoJHRtcCk7DQogICAgaWYgKGVtcHR5KCRyZXQpKSB7JGFyY2VyciAuPSAiQ2FuJ3QgY2FsbCBhcmNoaXZhdG9yICgiLmh0bWxzcGVjaWFsY2hhcnMoc3RyMm1pbmkoJGNtZGxpbmUsNjApKS4iKSE8YnI+Ijt9DQogICAgJHJldCA9IHN0cl9yZXBsYWNlKCJcclxuIiwiXG4iLCRyZXQpOw0KICAgICRyZXQgPSBleHBsb2RlKCJcbiIsJHJldCk7DQogICAgaWYgKCRjb3B5X3Vuc2V0KSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fX0NCiAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikgew0KICAgICAgaWYgKGluX2FycmF5KCR2LCRyZXQpKSB7ZnNfcm1vYmooJHYpO30NCiAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogICAgfQ0KICAgIGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgIGlmICghZW1wdHkoJGFyY2VycikpIHtlY2hvICI8Yj5BcmNoaXZhdGlvbiBlcnJvcnM6PC9iPjxicj4iLiRhcmNlcnI7fQ0KICAgICR4ID0gImxzIjsNCiAgfQ0KICBlbHNlaWYgKCRhY3RwYXN0ZWJ1ZmYpIHsNCiAgICAkcHN0ZXJyID0gIiI7DQogICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7DQogICAgICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICAgICBpZiAoIWZzX2NvcHlfb2JqKCR2LCRkKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgICAgaWYgKCRjb3B5X3Vuc2V0KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fQ0KICAgIH0NCiAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikgew0KICAgICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOw0KICAgICAgaWYgKCFmc19tb3ZlX29iaigkdiwkZCkpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAiLiR0by4iITxicj4iO30NCiAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogICAgfQ0KICAgIGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgIGlmICghZW1wdHkoJHBzdGVycikpIHtlY2hvICI8Yj5QYXN0aW5nIHdpdGggZXJyb3JzOjwvYj48YnI+Ii4kcHN0ZXJyO30NCiAgICAkeCA9ICJscyI7DQogIH0NCn0NCmlmICgkeCA9PSAiY21kIikgew0KICBAY2hkaXIoJGNoZGlyKTsNCiAgaWYgKCFlbXB0eSgkc3VibWl0KSkgew0KICAgIGVjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPi46IFJlc3VsdCBvZiBDb21tYW5kIEV4ZWN1dGlvbiA6LjwvZGl2PiI7DQogICAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7DQogICAgQGNoZGlyKCRkKTsNCiAgICAkcmV0ID0gbXlzaGVsbGV4ZWMoJGNtZCk7DQogICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KICAgIGlmICgkY21kX3R4dCkgew0KICAgICAgJHJvd3MgPSBjb3VudChleHBsb2RlKCJcclxuIiwkcmV0KSkrMTsNCiAgICAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDsgfQ0KICAgICAgaWYgKCRtc2llKSB7ICRjb2xzID0gMTEzOyB9DQogICAgICBlbHNlIHsgJGNvbHMgPSAxMTc7fQ0KICAgICAgZWNobyAiPGRpdiBhbGlnbj1sZWZ0PjxwcmU+Ii5odG1sc3BlY2lhbGNoYXJzKCRyZXQpLiI8L3ByZT48L2Rpdj4iOw0KICAgIH0NCiAgICBlbHNlIHtlY2hvICRyZXQuIjxicj4iO30NCiAgICBAY2hkaXIoJG9sZGRpcik7DQogIH0NCiAgZWxzZSB7DQogICAgZWNobyAiPGI+Q29tbWFuZCBFeGVjdXRpb248L2I+IjsNCiAgICBpZiAoZW1wdHkoJGNtZF90eHQpKSB7JGNtZF90eHQgPSBUUlVFO30NCiAgfQ0KfQ0KaWYgKCR4ID09ICJscyIpIHsNCiAgaWYgKGNvdW50KCRsc19hcnIpID4gMCkgeyAkbGlzdCA9ICRsc19hcnI7IH0NCiAgZWxzZSB7DQogICAgJGxpc3QgPSBhcnJheSgpOw0KICAgIGlmICgkaCA9IEBvcGVuZGlyKCRkKSkgew0KICAgICAgd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHskbGlzdFtdID0gJGQuJG87fQ0KICAgICAgY2xvc2VkaXIoJGgpOw0KICAgIH0NCiAgfQ0KICBpZiAoY291bnQoJGxpc3QpID09IDApIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz5DYW4ndCBvcGVuIGZvbGRlciAoIi5odG1sc3BlY2lhbGNoYXJzKCRkKS4iKSE8L2Rpdj4iO30NCiAgZWxzZSB7DQogICAgJG9iamVjdHMgPSBhcnJheSgpOw0KICAgICR2ZCA9ICJmIjsgDQogICAgaWYgKCR2ZCA9PSAiZiIpIHsNCiAgICAgICRvYmplY3RzWyJoZWFkIl0gPSBhcnJheSgpOw0KICAgICAgJG9iamVjdHNbImZvbGRlcnMiXSA9IGFycmF5KCk7DQogICAgICAkb2JqZWN0c1sibGlua3MiXSA9IGFycmF5KCk7DQogICAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5KCk7DQogICAgICBmb3JlYWNoICgkbGlzdCBhcyAkdikgew0KICAgICAgICAkbyA9IGJhc2VuYW1lKCR2KTsNCiAgICAgICAgJHJvdyA9IGFycmF5KCk7DQogICAgICAgIGlmICgkbyA9PSAiLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIkNVUkRJUiI7fQ0KICAgICAgICBlbHNlaWYgKCRvID09ICIuLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIlVQRElSIjt9DQogICAgICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkgew0KICAgICAgICAgIGlmIChpc19saW5rKCR2KSkgeyR0eXBlID0gIkxJTksiO30NCiAgICAgICAgICBlbHNlIHskdHlwZSA9ICJESVIiO30NCiAgICAgICAgICAkcm93W10gPSAkdjsNCiAgICAgICAgICAkcm93W10gPSAkdHlwZTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYoaXNfZmlsZSgkdikpIHskcm93W10gPSAkdjsgJHJvd1tdID0gZmlsZXNpemUoJHYpO30NCiAgICAgICAgJHJvd1tdID0gZmlsZW10aW1lKCR2KTsNCiAgICAgICAgaWYgKCEkd2luKSB7DQogICAgICAgICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCR2KSk7DQogICAgICAgICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCR2KSk7DQogICAgICAgICAgJHJvd1tdID0gKCRvd1sibmFtZSJdPyRvd1sibmFtZSJdOmZpbGVvd25lcigkdikpLiIvIi4oJGdyWyJuYW1lIl0/JGdyWyJuYW1lIl06ZmlsZWdyb3VwKCR2KSk7DQogICAgICAgIH0NCiAgICAgICAgJHJvd1tdID0gZmlsZXBlcm1zKCR2KTsNCiAgICAgICAgaWYgKCgkbyA9PSAiLiIpIG9yICgkbyA9PSAiLi4iKSkgeyRvYmplY3RzWyJoZWFkIl1bXSA9ICRyb3c7fQ0KICAgICAgICBlbHNlaWYgKGlzX2xpbmsoJHYpKSB7JG9iamVjdHNbImxpbmtzIl1bXSA9ICRyb3c7fQ0KICAgICAgICBlbHNlaWYgKGlzX2RpcigkdikpIHskb2JqZWN0c1siZm9sZGVycyJdW10gPSAkcm93O30NCiAgICAgICAgZWxzZWlmIChpc19maWxlKCR2KSkgeyRvYmplY3RzWyJmaWxlcyJdW10gPSAkcm93O30NCiAgICAgICAgJGkrKzsNCiAgICAgIH0NCiAgICAgICRyb3cgPSBhcnJheSgpOw0KICAgICAgJHJvd1tdID0gIjxiPk5hbWU8L2I+IjsNCiAgICAgICRyb3dbXSA9ICI8Yj5TaXplPC9iPiI7DQogICAgICAkcm93W10gPSAiPGI+RGF0ZSBNb2RpZmllZDwvYj4iOw0KICAgICAgaWYgKCEkd2luKSB7JHJvd1tdID0gIjxiPk93bmVyL0dyb3VwPC9iPiI7fQ0KICAgICAgJHJvd1tdID0gIjxiPlBlcm1zPC9iPiI7DQogICAgICAkcm93W10gPSAiPGI+QWN0aW9uPC9iPiI7DQogICAgICAkcGFyc2Vzb3J0ID0gcGFyc2Vzb3J0KCRzb3J0KTsNCiAgICAgICRzb3J0ID0gJHBhcnNlc29ydFswXS4kcGFyc2Vzb3J0WzFdOw0KICAgICAgJGsgPSAkcGFyc2Vzb3J0WzBdOw0KICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHBhcnNlc29ydFsxXSA9ICJkIjt9DQogICAgICAkeSA9ICIgPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZzb3J0PSIuJGsuKCRwYXJzZXNvcnRbMV0gPT0gImEiPyJkIjoiYSIpLiJcIj4iOw0KICAgICAgJHkgLj0gIjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNvcnRfIi4oJHNvcnRbMV0gPT0gImEiPyJhc2MiOiJkZXNjIikuIlwiIGhlaWdodD1cIjlcIiB3aWR0aD1cIjE0XCIgYWx0PVwiIi4oJHBhcnNlc29ydFsxXSA9PSAiYSI/IkFzYy4iOiJEZXNjIikuIlwiIGJvcmRlcj1cIjBcIj48L2E+IjsNCiAgICAgICRyb3dbJGtdIC49ICR5Ow0KICAgICAgZm9yKCRpPTA7JGk8Y291bnQoJHJvdyktMTskaSsrKSB7DQogICAgICAgIGlmICgkaSAhPSAkaykgeyRyb3dbJGldID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImc29ydD0iLiRpLiRwYXJzZXNvcnRbMV0uIlwiPiIuJHJvd1skaV0uIjwvYT4iO30NCiAgICAgIH0NCiAgICAgICR2ID0gJHBhcnNlc29ydFswXTsNCiAgICAgIHVzb3J0KCRvYmplY3RzWyJmb2xkZXJzIl0sICJ0YWJzb3J0Iik7DQogICAgICB1c29ydCgkb2JqZWN0c1sibGlua3MiXSwgInRhYnNvcnQiKTsNCiAgICAgIHVzb3J0KCRvYmplY3RzWyJmaWxlcyJdLCAidGFic29ydCIpOw0KICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gPT0gImQiKSB7DQogICAgICAgICRvYmplY3RzWyJmb2xkZXJzIl0gPSBhcnJheV9yZXZlcnNlKCRvYmplY3RzWyJmb2xkZXJzIl0pOw0KICAgICAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5X3JldmVyc2UoJG9iamVjdHNbImZpbGVzIl0pOw0KICAgICAgfQ0KICAgICAgJG9iamVjdHMgPSBhcnJheV9tZXJnZSgkb2JqZWN0c1siaGVhZCJdLCRvYmplY3RzWyJmb2xkZXJzIl0sJG9iamVjdHNbImxpbmtzIl0sJG9iamVjdHNbImZpbGVzIl0pOw0KICAgICAgJHRhYiA9IGFycmF5KCk7DQogICAgICAkdGFiWyJjb2xzIl0gPSBhcnJheSgkcm93KTsNCiAgICAgICR0YWJbImhlYWQiXSA9IGFycmF5KCk7DQogICAgICAkdGFiWyJmb2xkZXJzIl0gPSBhcnJheSgpOw0KICAgICAgJHRhYlsibGlua3MiXSA9IGFycmF5KCk7DQogICAgICAkdGFiWyJmaWxlcyJdID0gYXJyYXkoKTsNCiAgICAgICRpID0gMDsNCiAgICAgIGZvcmVhY2ggKCRvYmplY3RzIGFzICRhKSB7DQogICAgICAgICR2ID0gJGFbMF07DQogICAgICAgICRvID0gYmFzZW5hbWUoJHYpOw0KICAgICAgICAkZGlyID0gZGlybmFtZSgkdik7DQogICAgICAgIGlmICgkZGlzcF9mdWxscGF0aCkgeyRkaXNwcGF0aCA9ICR2O30NCiAgICAgICAgZWxzZSB7JGRpc3BwYXRoID0gJG87fQ0KICAgICAgICAkZGlzcHBhdGggPSBzdHIybWluaSgkZGlzcHBhdGgsNjApOw0KICAgICAgICBpZiAoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY3V0Il0pKSB7JGRpc3BwYXRoID0gIjxzdHJpa2U+Ii4kZGlzcHBhdGguIjwvc3RyaWtlPiI7fQ0KICAgICAgICBlbHNlaWYgKGluX2FycmF5KCR2LCRzZXNzX2RhdGFbImNvcHkiXSkpIHskZGlzcHBhdGggPSAiPHU+Ii4kZGlzcHBhdGguIjwvdT4iO30NCiAgICAgICAgZm9yZWFjaCAoJHJlZ3hwX2hpZ2hsaWdodCBhcyAkcikgew0KICAgICAgICAgIGlmIChlcmVnKCRyWzBdLCRvKSkgew0KICAgICAgICAgICAgaWYgKCghaXNfbnVtZXJpYygkclsxXSkpIG9yICgkclsxXSA+IDMpKSB7JHJbMV0gPSAwOyBvYl9jbGVhbigpOyBlY2hvICJXYXJuaW5nISBDb25maWd1cmF0aW9uIGVycm9yIGluIFwkcmVneHBfaGlnaGxpZ2h0WyIuJGsuIl1bMF0gLSB1bmtub3duIGNvbW1hbmQuIjsgYm9nZWxleGl0KCk7fQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICRyWzFdID0gcm91bmQoJHJbMV0pOw0KICAgICAgICAgICAgICAkaXNkaXIgPSBpc19kaXIoJHYpOw0KICAgICAgICAgICAgICBpZiAoKCRyWzFdID09IDApIG9yICgoJHJbMV0gPT0gMSkgYW5kICEkaXNkaXIpIG9yICgoJHJbMV0gPT0gMikgYW5kICEkaXNkaXIpKSB7DQogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRyWzJdKSkgeyRyWzJdID0gIjxiPiI7ICRyWzNdID0gIjwvYj4iO30NCiAgICAgICAgICAgICAgICAkZGlzcHBhdGggPSAkclsyXS4kZGlzcHBhdGguJHJbM107DQogICAgICAgICAgICAgICAgaWYgKCRyWzRdKSB7YnJlYWs7fQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICR1byA9IHVybGVuY29kZSgkbyk7DQogICAgICAgICR1ZCA9IHVybGVuY29kZSgkZGlyKTsNCiAgICAgICAgJHV2ID0gdXJsZW5jb2RlKCR2KTsNCiAgICAgICAgJHJvdyA9IGFycmF5KCk7DQogICAgICAgIGlmICgkbyA9PSAiLiIpIHsNCiAgICAgICAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1zbWFsbF9kaXJcIiBib3JkZXI9XCIwXCI+Jm5ic3A7Ii4kby4iPC9hPiI7DQogICAgICAgICAgJHJvd1tdID0gIkNVUkRJUiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZWlmICgkbyA9PSAiLi4iKSB7DQogICAgICAgICAgJHJvd1tdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUocmVhbHBhdGgoJGQuJG8pKS4iJnNvcnQ9Ii4kc29ydC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X2xua1wiIGJvcmRlcj1cIjBcIj4mbmJzcDsiLiRvLiI8L2E+IjsNCiAgICAgICAgICAkcm93W10gPSAiVVBESVIiOw0KICAgICAgICB9DQogICAgICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkgew0KICAgICAgICAgIGlmIChpc19saW5rKCR2KSkgew0KICAgICAgICAgICAgJGRpc3BwYXRoIC49ICIgPT4gIi5yZWFkbGluaygkdik7DQogICAgICAgICAgICAkdHlwZSA9ICJMSU5LIjsNCiAgICAgICAgICAgICRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIuJHV2LiImc29ydD0iLiRzb3J0LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfbG5rXCIgYm9yZGVyPVwiMFwiPiZuYnNwO1siLiRkaXNwcGF0aC4iXTwvYT4iOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICR0eXBlID0gIkRJUiI7DQogICAgICAgICAgICAkcm93W10gPSAgIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWxzJmQ9Ii4kdXYuIiZzb3J0PSIuJHNvcnQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNtYWxsX2RpclwiIGJvcmRlcj1cIjBcIj4mbmJzcDtbIi4kZGlzcHBhdGguIl08L2E+IjsNCiAgICAgICAgICB9DQogICAgICAgICAgJHJvd1tdID0gJHR5cGU7DQogICAgICAgIH0NCiAgICAgICAgZWxzZWlmKGlzX2ZpbGUoJHYpKSB7DQogICAgICAgICAgJGV4dCA9IGV4cGxvZGUoIi4iLCRvKTsNCiAgICAgICAgICAkYyA9IGNvdW50KCRleHQpLTE7DQogICAgICAgICAgJGV4dCA9ICRleHRbJGNdOw0KICAgICAgICAgICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOw0KICAgICAgICAgICRyb3dbXSA9ICAiPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIuJHVvLiImZD0iLiR1ZC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0XyIuJGV4dC4iXCIgYm9yZGVyPVwiMFwiPiZuYnNwOyIuJGRpc3BwYXRoLiI8L2E+IjsNCiAgICAgICAgICAkcm93W10gPSB2aWV3X3NpemUoJGFbMV0pOw0KICAgICAgICB9DQogICAgICAgICRyb3dbXSA9IGRhdGUoImQubS5ZIEg6aTpzIiwkYVsyXSk7DQogICAgICAgIGlmICghJHdpbikgeyRyb3dbXSA9ICRhWzNdO30NCiAgICAgICAgJHJvd1tdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWNobW9kJmY9Ii4kdW8uIiZkPSIuJHVkLiJcIj48Yj4iLnZpZXdfcGVybXNfY29sb3IoJHYpLiI8L2I+PC9hPiI7DQogICAgICAgIGlmICgkbyA9PSAiLiIpIHskY2hlY2tib3ggPSAiPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJhY3Rib3hbXVwiIG9uY2xpY2s9XCJsc19yZXZlcnNlX2FsbCgpO1wiPiI7ICRpLS07fQ0KICAgICAgICBlbHNlIHskY2hlY2tib3ggPSAiPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJhY3Rib3hbXVwiIGlkPVwiYWN0Ym94Ii4kaS4iXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiJcIj4iO30NCiAgICAgICAgaWYgKGlzX2RpcigkdikpIHskcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9ZCZkPSIuJHV2LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfZGl6XCIgYWx0PVwiSW5mb1wiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Ii4kY2hlY2tib3g7fQ0KICAgICAgICBlbHNlIHskcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIuJHVvLiImZnQ9aW5mbyZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfZGl6XCIgYWx0PVwiSW5mb1wiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxNlwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIuJHVvLiImZnQ9ZWRpdCZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1jaGFuZ2VcIiBhbHQ9XCJDaGFuZ2VcIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTlcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLiR1by4iJmZ0PWRvd25sb2FkJmQ9Ii4kdWQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWRvd25sb2FkXCIgYWx0PVwiRG93bmxvYWRcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyIuJGNoZWNrYm94O30NCiAgICAgICAgaWYgKCgkbyA9PSAiLiIpIG9yICgkbyA9PSAiLi4iKSkgeyR0YWJbImhlYWQiXVtdID0gJHJvdzt9DQogICAgICAgIGVsc2VpZiAoaXNfbGluaygkdikpIHskdGFiWyJsaW5rcyJdW10gPSAkcm93O30NCiAgICAgICAgZWxzZWlmIChpc19kaXIoJHYpKSB7JHRhYlsiZm9sZGVycyJdW10gPSAkcm93O30NCiAgICAgICAgZWxzZWlmIChpc19maWxlKCR2KSkgeyR0YWJbImZpbGVzIl1bXSA9ICRyb3c7fQ0KICAgICAgICAkaSsrOw0KICAgICAgfQ0KICAgIH0NCiAgICAkdGFibGUgPSBhcnJheV9tZXJnZSgkdGFiWyJjb2xzIl0sJHRhYlsiaGVhZCJdLCR0YWJbImZvbGRlcnMiXSwkdGFiWyJsaW5rcyJdLCR0YWJbImZpbGVzIl0pOw0KICAgIGVjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPlsrXSAiOw0KICAgIGlmICghZW1wdHkoJGZ4X2luZm9oZWFkKSkgeyBlY2hvICRmeF9pbmZvaGVhZDsgfQ0KICAgIGVsc2UgeyBlY2hvICJEaXJlY3RvcnkgTGlzdCAoIi5jb3VudCgkdGFiWyJmaWxlcyJdKS4iIGZpbGVzIGFuZCAiLihjb3VudCgkdGFiWyJmb2xkZXJzIl0pK2NvdW50KCR0YWJbImxpbmtzIl0pKS4iIGZvbGRlcnMpIjsgfQ0KICAgIGVjaG8gIiBbK108L2Rpdj5cbiI7DQogICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1QgbmFtZT1cImxzX2Zvcm1cIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPVwiIi4kZHNwYWN0LiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSIuJGQuIj4iLg0KICAgICAgICAgIjx0YWJsZSBjbGFzcz1leHBsb3Jlcj4iOw0KICAgIGZvcmVhY2goJHRhYmxlIGFzICRyb3cpIHsNCiAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgZm9yZWFjaCgkcm93IGFzICR2KSB7ZWNobyAiPHRkPiIuJHYuIjwvdGQ+Ijt9DQogICAgICBlY2hvICI8L3RyPlxyXG4iOw0KICAgIH0NCiAgICBlY2hvICI8L3RhYmxlPiIuDQogICAgICAgICAiPHNjcmlwdD4iLg0KICAgICAgICAgImZ1bmN0aW9uIGxzX3NldGNoZWNrYm94YWxsKHN0YXR1cykgeyIuDQogICAgICAgICAiIHZhciBpZCA9IDE7IHZhciBudW0gPSAiLihjb3VudCgkdGFibGUpLTIpLiI7Ii4NCiAgICAgICAgICIgd2hpbGUgKGlkIDw9IG51bSkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZCA9IHN0YXR1czsgaWQrKzsgfSIuDQogICAgICAgICAifSIuDQogICAgICAgICAiZnVuY3Rpb24gbHNfcmV2ZXJzZV9hbGwoKSB7Ii4NCiAgICAgICAgICIgdmFyIGlkID0gMTsgdmFyIG51bSA9ICIuKGNvdW50KCR0YWJsZSktMikuIjsiLg0KICAgICAgICAgIiB3aGlsZSAoaWQgPD0gbnVtKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkID0gIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkOyBpZCsrOyB9Ii4NCiAgICAgICAgICJ9Ii4NCiAgICAgICAgICI8L3NjcmlwdD4iLg0KICAgICAgICAgIjxkaXYgYWxpZ249XCJyaWdodFwiPiIuDQogICAgICAgICAiPGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibHNfc2V0Y2hlY2tib3hhbGwodHJ1ZSk7XCIgdmFsdWU9XCJTZWxlY3QgYWxsXCI+Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibHNfc2V0Y2hlY2tib3hhbGwoZmFsc2UpO1wiIHZhbHVlPVwiVW5zZWxlY3QgYWxsXCI+Ii4NCiAgICAgICAgICI8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1hcnJvd19sdHJcIiBib3JkZXI9XCIwXCI+IjsNCiAgICBpZiAoY291bnQoYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCRzZXNzX2RhdGFbImN1dCJdKSkgPiAwIGFuZCAoJHVzZWZzYnVmZikpIHsNCiAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWFjdGFyY2J1ZmYgdmFsdWU9XCJQYWNrIGJ1ZmZlciB0byBhcmNoaXZlXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFjdGFyY2J1ZmZfcGF0aFwiIHZhbHVlPVwiZnhfYXJjaGl2ZV8iLnN1YnN0cihtZDUocmFuZCgxLDEwMDApLnJhbmQoMSwxMDAwKSksMCw1KS4iLnRhci5nelwiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPVwiYWN0cGFzdGVidWZmXCIgdmFsdWU9XCJQYXN0ZVwiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPVwiYWN0ZW1wdHlidWZmXCIgdmFsdWU9XCJFbXB0eSBidWZmZXJcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgIH0NCiAgICBlY2hvICI8c2VsZWN0IG5hbWU9eD48b3B0aW9uIHZhbHVlPVwiIi4keC4iXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOw0KICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9ZGVsZXRlIi4oJGRzcGFjdCA9PSAiZGVsZXRlIj8iIHNlbGVjdGVkIjoiIikuIj5EZWxldGU8L29wdGlvbj4iOw0KICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9Y2htb2QiLigkZHNwYWN0ID09ICJjaG1vZCI/IiBzZWxlY3RlZCI6IiIpLiI+Q2hhbmdlLW1vZGU8L29wdGlvbj4iOw0KICAgIGlmICgkdXNlZnNidWZmKSB7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPWN1dCIuKCRkc3BhY3QgPT0gImN1dCI/IiBzZWxlY3RlZCI6IiIpLiI+Q3V0PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9Y29weSIuKCRkc3BhY3QgPT0gImNvcHkiPyIgc2VsZWN0ZWQiOiIiKS4iPkNvcHk8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT11bnNlbGVjdCIuKCRkc3BhY3QgPT0gInVuc2VsZWN0Ij8iIHNlbGVjdGVkIjoiIikuIj5VbnNlbGVjdDwvb3B0aW9uPiI7DQogICAgfQ0KICAgIGVjaG8gIjwvc2VsZWN0PiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIkNvbmZpcm1cIj48L2Rpdj4iOw0KICAgIGVjaG8gIjwvZm9ybT4iOw0KICB9DQp9DQppZiAoJHggPT0gInRvb2xzIikgDQp7DQoNCn0NCmlmICgkeCA9PSAicGhwZnN5cyIpIHsNCiAgZWNobyAiPGRpdiBhbGlnbj1sZWZ0PiI7DQogICRmc2Z1bmMgPSAkcGhwZnN5c2Z1bmM7DQogIGlmICgkZnNmdW5jPT0iY29weSIpIHsNCiAgICBpZiAoIWNvcHkoJGFyZzEsICRhcmcyKSkgeyBlY2hvICJGYWlsZWQgdG8gY29weSAkYXJnMS4uLlxuIjt9DQogICAgZWxzZSB7IGVjaG8gIjxiPlN1Y2Nlc3MhPC9iPiAkYXJnMSBjb3BpZWQgdG8gJGFyZzJcbiI7IH0NCiAgfQ0KICBlbHNlaWYgKCRmc2Z1bmM9PSJyZW5hbWUiKSB7DQogICAgaWYgKCFyZW5hbWUoJGFyZzEsICRhcmcyKSkgeyBlY2hvICJGYWlsZWQgdG8gcmVuYW1lL21vdmUgJGFyZzEhXG4iO30NCiAgICBlbHNlIHsgZWNobyAiPGI+U3VjY2VzcyE8L2I+ICRhcmcxIHJlbmFtZWQvbW92ZWQgdG8gJGFyZzJcbiI7IH0NCiAgfQ0KICBlbHNlaWYgKCRmc2Z1bmM9PSJjaG1vZCIpIHsNCiAgICBpZiAoIWNobW9kKCRhcmcxLCRhcmcyKSkgeyBlY2hvICJGYWlsZWQgdG8gY2htb2QgJGFyZzEhXG4iO30NCiAgICBlbHNlIHsgZWNobyAiPGI+UGVybSBmb3IgJGFyZzEgY2hhbmdlZCB0byAkYXJnMiE8L2I+XG4iOyB9DQogIH0NCiAgZWxzZWlmICgkZnNmdW5jPT0icmVhZCIpIHsNCiAgICAkaGFzaWwgPSBAZmlsZV9nZXRfY29udGVudHMoJGFyZzEpOw0KICAgIGVjaG8gIjxiPkZpbGVuYW1lOjwvYj4gJGFyZzE8YnI+IjsNCiAgICBlY2hvICI8dGV4dGFyZWEgY29scz0xNTAgcm93cz0yMD4iOw0KICAgIGVjaG8gJGhhc2lsOw0KICAgIGVjaG8gIjwvdGV4dGFyZWE+XG4iOw0KICB9DQogIGVsc2VpZiAoJGZzZnVuYz09IndyaXRlIikgew0KICAgIGlmKEBmaWxlX3B1dF9jb250ZW50cygkZC4kYXJnMSwkYXJnMikpIHsNCiAgICAgIGVjaG8gIjxiPlNhdmVkITwvYj4gIi4kZC4kYXJnMTsNCiAgICB9DQogICAgZWxzZSB7IGVjaG8gIjxkaXYgY2xhc3M9ZnhlcnJtc2c+Q291bGRuJ3Qgd3JpdGUgdG8gJGFyZzEhPC9kaXY+IjsgfQ0KICB9DQogIGVsc2VpZiAoJGZzZnVuYz09ImRvd25sb2FkYmluIikgew0KICAgICRoYW5kbGUgPSBmb3BlbigkYXJnMSwgInJiIik7DQogICAgJGNvbnRlbnRzID0gJyc7DQogICAgd2hpbGUgKCFmZW9mKCRoYW5kbGUpKSB7DQogICAgICAkY29udGVudHMgLj0gZnJlYWQoJGhhbmRsZSwgODE5Mik7DQogICAgfQ0KICAgICRyID0gQGZvcGVuKCRkLiRhcmcyLCd3Jyk7DQogICAgaWYgKGZ3cml0ZSgkciwkY29udGVudHMpKSB7IGVjaG8gIjxiPlN1Y2Nlc3MhPC9iPiAkYXJnMSBzYXZlZCB0byAiLiRkLiRhcmcyLiIgKCIudmlld19zaXplKGZpbGVzaXplKCRkLiRhcmcyKSkuIikiOyB9DQogICAgZWxzZSB7IGVjaG8gIjxkaXYgY2xhc3M9ZnhlcnJtc2c+Q291bGRuJ3Qgd3JpdGUgdG8gIi4kZC4kYXJnMi4iITwvZGl2PiI7IH0NCiAgICBmY2xvc2UoJHIpOw0KICAgIGZjbG9zZSgkaGFuZGxlKTsNCiAgfQ0KICBlbHNlaWYgKCRmc2Z1bmM9PSJkb3dubG9hZCIpIHsNCiAgICAkdGV4dCA9IGltcGxvZGUoJycsIGZpbGUoJGFyZzEpKTsNCiAgICBpZiAoJHRleHQpIHsNCiAgICAgICRyID0gQGZvcGVuKCRkLiRhcmcyLCd3Jyk7DQogICAgICBpZiAoZndyaXRlKCRyLCR0ZXh0KSkgeyBlY2hvICI8Yj5TdWNjZXNzITwvYj4gJGFyZzEgc2F2ZWQgdG8gIi4kZC4kYXJnMi4iICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkZC4kYXJnMikpLiIpIjsgfQ0KICAgICAgZWxzZSB7IGVjaG8gIjxkaXYgY2xhc3M9ZnhlcnJtc2c+Q291bGRuJ3Qgd3JpdGUgdG8gIi4kZC4kYXJnMi4iITwvZGl2PiI7IH0NCiAgICAgIGZjbG9zZSgkcik7DQogICAgfQ0KICAgIGVsc2UgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPkNvdWxkbid0IGRvd25sb2FkIGZyb20gJGFyZzEhPC9kaXY+Ijt9DQogIH0NCiAgZWxzZWlmICgkZnNmdW5jPT0nbWtkaXInKSB7DQogICAgJHRoZWRpciA9ICRkLiRhcmcxOw0KICAgIGlmICgkdGhlZGlyICE9ICRkKSB7DQogICAgICBpZiAoZmlsZV9leGlzdHMoJHRoZWRpcikpIHsgZWNobyAiPGI+QWxyZWFkeSBleGlzdHM6PC9iPiAiLmh0bWxzcGVjaWFsY2hhcnMoJHRoZWRpcik7IH0NCiAgICAgIGVsc2VpZiAoIW1rZGlyKCR0aGVkaXIpKSB7IGVjaG8gIjxiPkFjY2VzcyBkZW5pZWQ6PC9iPiAiLmh0bWxzcGVjaWFsY2hhcnMoJHRoZWRpcik7IH0NCiAgICAgIGVsc2UgeyBlY2hvICI8Yj5EaXIgY3JlYXRlZDo8L2I+ICIuaHRtbHNwZWNpYWxjaGFycygkdGhlZGlyKTt9DQogICAgfQ0KICAgIGVsc2UgeyBlY2hvICJDb3VsZG4ndCBjcmVhdGUgY3VycmVudCBkaXI6PGI+ICR0aGVkaXI8L2I+IjsgfQ0KICB9DQogIGVsc2VpZiAoJGZzZnVuYz09J2Z3cml0YWJsZWRpcicpIHsNCiAgICBmdW5jdGlvbiByZWN1cnNlX2RpcigkZGlyLCRtYXhfZGlyKSB7DQogICAgICBnbG9iYWwgJGRpcl9jb3VudDsNCiAgICAgICRkaXJfY291bnQrKzsNCiAgICAgIGlmKCAkY2RpciA9IEBkaXIoJGRpcikgKSB7DQogICAgICAgIHdoaWxlKCAkZW50cnkgPSAkY2Rpci0+IHJlYWQoKSApIHsNCiAgICAgICAgICBpZiggJGVudHJ5ICE9ICcuJyAmJiAkZW50cnkgIT0gJy4uJyApIHsNCiAgICAgICAgICAgIGlmKGlzX2RpcigkZGlyLiRlbnRyeSkgJiYgaXNfd3JpdGFibGUoJGRpci4kZW50cnkpICkgew0KICAgICAgICAgICAgIGlmICgkZGlyX2NvdW50ID4gJG1heF9kaXIpIHsgcmV0dXJuOyB9DQogICAgICAgICAgICAgIGVjaG8gIlsiLiRkaXJfY291bnQuIl0gIi4kZGlyLiRlbnRyeS4iXG4iOw0KICAgICAgICAgICAgICByZWN1cnNlX2RpcigkZGlyLiRlbnRyeS5ESVJFQ1RPUllfU0VQQVJBVE9SLCRtYXhfZGlyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJGNkaXItPmNsb3NlKCk7DQogICAgICB9DQogICAgfQ0KICAgIGlmICghJGFyZzEpIHsgJGFyZzEgPSAkZDsgfQ0KICAgIGlmICghJGFyZzIpIHsgJGFyZzIgPSAxMDsgfQ0KICAgIGVjaG8gIjxiPldyaXRhYmxlIGRpcmVjdG9yaWVzIChNYXg6ICRhcmcyKSBpbjo8L2I+ICRhcmcxPGJyPiI7DQogICAgZWNobyAiPHByZT4iOw0KICAgIHJlY3Vyc2VfZGlyKCRhcmcxLCRhcmcyKTsNCiAgICBlY2hvICI8L3ByZT4iOw0KICAgICR0b3RhbCA9ICRkaXJfY291bnQgLSAxOw0KICAgIGVjaG8gIjxiPkZvdW5kczo8L2I+ICIuJHRvdGFsLiIgb2YgPGI+TWF4PC9iPiAkYXJnMiI7DQogIH0NCiAgZWxzZSB7DQogICAgaWYgKCEkYXJnMSkgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPk5vIG9wZXJhdGlvbiEgUGxlYXNlIGZpbGwgcGFyYW1ldGVyIFtBXSE8L2Rpdj5cbiI7IH0NCiAgICBlbHNlIHsNCiAgICAgIGlmICgkaGFzaWwgPSAkZnNmdW5jKCRhcmcxKSkgew0KICAgICAgICBlY2hvICI8Yj5SZXN1bHQgb2YgJGZzZnVuYyAkYXJnMTo8L2I+PGJyPiI7DQogICAgICAgIGlmICghaXNfYXJyYXkoJGhhc2lsKSkgeyBlY2hvICIkaGFzaWxcbiI7IH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgZWNobyAiPHByZT4iOw0KICAgICAgICAgIGZvcmVhY2ggKCRoYXNpbCBhcyAkdikgeyBlY2hvICR2LiJcbiI7IH0NCiAgICAgICAgICBlY2hvICI8L3ByZT4iOw0KICAgICAgICB9DQogICAgICB9DQogICAgICBlbHNlIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz4kZnNmdW5jICRhcmcxIGZhaWxlZCE8L2Rpdj5cbiI7IH0NCiAgICB9DQogIH0NCiAgZWNobyAiPC9kaXY+XG4iOw0KfQ0KDQppZiAoJHggPT0gInByb2Nlc3NlcyIpIHsNCiAgZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXI+LjogUHJvY2Vzc2VzIDouPC9kaXY+IjsNCiAgaWYgKCEkd2luKSB7ICRoYW5kbGVyID0gInBzIC1hdXgiLigkZ3JlcD8iIHwgZ3JlcCAnIi5hZGRzbGFzaGVzKCRncmVwKS4iJyI6IiIpOyB9DQogIGVsc2UgeyAkaGFuZGxlciA9ICJ0YXNrbGlzdCI7IH0NCiAgJHJldCA9IG15c2hlbGxleGVjKCRoYW5kbGVyKTsNCiAgaWYgKCEkcmV0KSB7IGVjaG8gIkNhbid0IGV4ZWN1dGUgXCIiLiRoYW5kbGVyLiJcIiEiOyB9DQogIGVsc2Ugew0KICAgIGlmIChlbXB0eSgkcHJvY2Vzc2VzX3NvcnQpKSB7JHByb2Nlc3Nlc19zb3J0ID0gJHNvcnRfZGVmYXVsdDt9DQogICAgJHBhcnNlc29ydCA9IHBhcnNlc29ydCgkcHJvY2Vzc2VzX3NvcnQpOw0KICAgIGlmICghaXNfbnVtZXJpYygkcGFyc2Vzb3J0WzBdKSkgeyRwYXJzZXNvcnRbMF0gPSAwO30NCiAgICAkayA9ICRwYXJzZXNvcnRbMF07DQogICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7DQogICAgICAkeSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImFcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1zb3J0X2Rlc2NcIiBib3JkZXI9XCIwXCI+PC9hPiI7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgJHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJkXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF9hc2NcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGJvcmRlcj1cIjBcIj48L2E+IjsNCiAgICB9DQogICAgJHJldCA9IGh0bWxzcGVjaWFsY2hhcnMoJHJldCk7DQogICAgaWYgKCEkd2luKSB7DQogICAgICBpZiAoJHBpZCkgew0KICAgICAgICBpZiAoaXNfbnVsbCgkc2lnKSkgeyRzaWcgPSA5O30NCiAgICAgICAgZWNobyAiU2VuZGluZyBzaWduYWwgIi4kc2lnLiIgdG8gIyIuJHBpZC4iLi4uICI7DQogICAgICAgIGlmIChwb3NpeF9raWxsKCRwaWQsJHNpZykpIHtlY2hvICJPSy4iO30NCiAgICAgICAgZWxzZSB7ZWNobyAiRVJST1IuIjt9DQogICAgICB9DQogICAgICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAiLCRyZXQpO30NCiAgICAgICRzdGFjayA9IGV4cGxvZGUoIlxuIiwkcmV0KTsNCiAgICAgICRoZWFkID0gZXhwbG9kZSgiICIsJHN0YWNrWzBdKTsNCiAgICAgIHVuc2V0KCRzdGFja1swXSk7DQogICAgICBmb3IoJGk9MDskaTxjb3VudCgkaGVhZCk7JGkrKykgew0KICAgICAgICBpZiAoJGkgIT0gJGspIHskaGVhZFskaV0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRpLiRwYXJzZXNvcnRbMV0uIlwiPjxiPiIuJGhlYWRbJGldLiI8L2I+PC9hPiI7fQ0KICAgICAgfQ0KICAgICAgJHByY3MgPSBhcnJheSgpOw0KICAgICAgZm9yZWFjaCAoJHN0YWNrIGFzICRsaW5lKSB7DQogICAgICAgIGlmICghZW1wdHkoJGxpbmUpKSB7DQogICAgICAgICAgZWNobyAiPHRyPiI7DQogICAgICAgICAgJGxpbmUgPSBleHBsb2RlKCIgIiwkbGluZSk7DQogICAgICAgICAgJGxpbmVbMTBdID0gam9pbigiICIsYXJyYXlfc2xpY2UoJGxpbmUsMTApKTsNCiAgICAgICAgICAkbGluZSA9IGFycmF5X3NsaWNlKCRsaW5lLDAsMTEpOw0KICAgICAgICAgIGlmICgkbGluZVswXSA9PSBnZXRfY3VycmVudF91c2VyKCkpIHskbGluZVswXSA9ICI8Zm9udCBjb2xvcj1saW1lPiIuJGxpbmVbMF0uIjwvZm9udD4iO30NCiAgICAgICAgICAkbGluZVtdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PXByb2Nlc3NlcyZkPSIudXJsZW5jb2RlKCRkKS4iJnBpZD0iLiRsaW5lWzFdLiImc2lnPTlcIj48dT5LSUxMPC91PjwvYT4iOw0KICAgICAgICAgICRwcmNzW10gPSAkbGluZTsNCiAgICAgICAgICBlY2hvICI8L3RyPiI7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogICAgZWxzZSB7DQogICAgICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAiLCRyZXQpO30NCiAgICAgIHdoaWxlIChlcmVnKCI9IiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiPSIsIiIsJHJldCk7fQ0KICAgICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KICAgICAgJHN0YWNrID0gZXhwbG9kZSgiXG4iLCRyZXQpOw0KICAgICAgdW5zZXQoJHN0YWNrWzBdLCRzdGFja1syXSk7DQogICAgICAkc3RhY2sgPSBhcnJheV92YWx1ZXMoJHN0YWNrKTsNCiAgICAgICRzdGFja1swXT1zdHJfcmVwbGFjZSgiSW1hZ2UgTmFtZSIsIkltYWdlTmFtZSIsJHN0YWNrWzBdKTsNCiAgICAgICRzdGFja1swXT1zdHJfcmVwbGFjZSgiU2Vzc2lvbiBOYW1lIiwiU2Vzc2lvbk5hbWUiLCRzdGFja1swXSk7DQogICAgICAkc3RhY2tbMF09c3RyX3JlcGxhY2UoIk1lbSBVc2FnZSIsIk1lbW9yeVVzYWdlIiwkc3RhY2tbMF0pOw0KICAgICAgJGhlYWQgPSBleHBsb2RlKCIgIiwkc3RhY2tbMF0pOw0KICAgICAgJHN0YWNrID0gYXJyYXlfc2xpY2UoJHN0YWNrLDEpOw0KICAgICAgJGhlYWQgPSBhcnJheV92YWx1ZXMoJGhlYWQpOw0KICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7ICR5ID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kay4iYVwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNvcnRfZGVzY1wiIGJvcmRlcj1cIjBcIj48L2E+IjsgfQ0KICAgICAgZWxzZSB7ICR5ID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kay4iZFwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNvcnRfYXNjXCIgYm9yZGVyPVwiMFwiPjwvYT4iOyB9DQogICAgICBpZiAoJGsgPiBjb3VudCgkaGVhZCkpIHskayA9IGNvdW50KCRoZWFkKS0xO30NCiAgICAgIGZvcigkaT0wOyRpPGNvdW50KCRoZWFkKTskaSsrKSB7DQogICAgICAgIGlmICgkaSAhPSAkaykgeyAkaGVhZFskaV0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRpLiRwYXJzZXNvcnRbMV0uIlwiPjxiPiIudHJpbSgkaGVhZFskaV0pLiI8L2I+PC9hPiI7IH0NCiAgICAgIH0NCiAgICAgICRwcmNzID0gYXJyYXkoKTsNCiAgICAgIHVuc2V0KCRzdGFja1swXSk7DQogICAgICBmb3JlYWNoICgkc3RhY2sgYXMgJGxpbmUpIHsNCiAgICAgICAgaWYgKCFlbXB0eSgkbGluZSkpIHsNCiAgICAgICAgICAkbGluZSA9IGV4cGxvZGUoIiAiLCRsaW5lKTsNCiAgICAgICAgICAkbGluZVs0XSA9IHN0cl9yZXBsYWNlKCIuIiwiIiwkbGluZVs0XSk7DQogICAgICAgICAgJGxpbmVbNF0gPSBpbnR2YWwoJGxpbmVbNF0pICogMTAyNDsNCiAgICAgICAgICB1bnNldCgkbGluZVs1XSk7DQogICAgICAgICAgJHByY3NbXSA9ICRsaW5lOw0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICAgICRoZWFkWyRrXSA9ICI8Yj4iLiRoZWFkWyRrXS4iPC9iPiIuJHk7DQogICAgJHYgPSAkcHJvY2Vzc2VzX3NvcnRbMF07DQogICAgdXNvcnQoJHByY3MsInRhYnNvcnQiKTsNCiAgICBpZiAoJHByb2Nlc3Nlc19zb3J0WzFdID09ICJkIikgeyRwcmNzID0gYXJyYXlfcmV2ZXJzZSgkcHJjcyk7fQ0KICAgICR0YWIgPSBhcnJheSgpOw0KICAgICR0YWJbXSA9ICRoZWFkOw0KICAgICR0YWIgPSBhcnJheV9tZXJnZSgkdGFiLCRwcmNzKTsNCiAgICBlY2hvICI8dGFibGUgY2xhc3M9ZXhwbG9yZXI+IjsNCiAgICBmb3JlYWNoKCR0YWIgYXMgJGk9PiRrKSB7DQogICAgICBlY2hvICI8dHI+IjsNCiAgICAgIGZvcmVhY2goJGsgYXMgJGo9PiR2KSB7DQogICAgICAgIGlmICgkd2luIGFuZCAkaSA+IDAgYW5kICRqID09IDQpIHskdiA9IHZpZXdfc2l6ZSgkdik7fQ0KICAgICAgICBlY2hvICI8dGQ+Ii4kdi4iPC90ZD4iOw0KICAgICAgfQ0KICAgICAgZWNobyAiPC90cj4iOw0KICAgIH0NCiAgICBlY2hvICI8L3RhYmxlPiI7DQogIH0NCn0NCg0KaWYgKCR4ID09ICJmIikgew0KICBlY2hvICI8ZGl2IGFsaWduPWxlZnQ+IjsNCiAgaWYgKCghaXNfcmVhZGFibGUoJGQuJGYpIG9yIGlzX2RpcigkZC4kZikpIGFuZCAkZnQgIT0gImVkaXQiKSB7DQogICAgaWYgKGZpbGVfZXhpc3RzKCRkLiRmKSkge2VjaG8gIjxjZW50ZXI+PGI+UGVybWlzaW9uIGRlbmllZCAoIi5odG1sc3BlY2lhbGNoYXJzKCRkLiRmKS4iKSE8L2I+PC9jZW50ZXI+Ijt9DQogICAgZWxzZSB7ZWNobyAiPGNlbnRlcj48Yj5GaWxlIGRvZXMgbm90IGV4aXN0cyAoIi5odG1sc3BlY2lhbGNoYXJzKCRkLiRmKS4iKSE8L2I+PGJyPjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1lZGl0JmQ9Ii51cmxlbmNvZGUoJGQpLiImYz0xXCI+PHU+Q3JlYXRlPC91PjwvYT48L2NlbnRlcj4iO30NCiAgfQ0KICBlbHNlIHsNCiAgICAkciA9IEBmaWxlX2dldF9jb250ZW50cygkZC4kZik7DQogICAgJGV4dCA9IGV4cGxvZGUoIi4iLCRmKTsNCiAgICAkYyA9IGNvdW50KCRleHQpLTE7DQogICAgJGV4dCA9ICRleHRbJGNdOw0KICAgICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOw0KICAgICRyZnQgPSAiIjsNCiAgICBmb3JlYWNoKCRmdHlwZXMgYXMgJGs9PiR2KSB7aWYgKGluX2FycmF5KCRleHQsJHYpKSB7JHJmdCA9ICRrOyBicmVhazt9fQ0KICAgIGlmIChlcmVnaSgic2Vzc18oLiopIiwkZikpIHskcmZ0ID0gInBocHNlc3MiO30NCiAgICBpZiAoZW1wdHkoJGZ0KSkgeyRmdCA9ICRyZnQ7fQ0KICAgICRhcnIgPSBhcnJheSgNCiAgICAgICAgYXJyYXkoImluZm8iLCJpbmZvIiksDQogICAgICAgIGFycmF5KCJodG1sIiwiaHRtbCIpLA0KICAgICAgICBhcnJheSgidHh0IiwidHh0IiksDQogICAgICAgIGFycmF5KCJDb2RlIiwiY29kZSIpLA0KICAgICAgICBhcnJheSgiU2Vzc2lvbiIsInBocHNlc3MiKSwNCiAgICAgICAgYXJyYXkoImV4ZSIsImV4ZSIpLA0KICAgICAgICBhcnJheSgiU0RCIiwic2RiIiksDQogICAgICAgIGFycmF5KCJpbWciLCJpbWciKSwNCiAgICAgICAgYXJyYXkoImluaSIsImluaSIpLA0KICAgICAgICBhcnJheSgiZG93bmxvYWQiLCJkb3dubG9hZCIpLA0KICAgICAgICBhcnJheSgibm90ZXBhZCIsIm5vdGVwYWQiKSwNCiAgICAgICAgYXJyYXkoImVkaXQiLCJlZGl0IikNCiAgICApOw0KICAgIGVjaG8gIjxiPlZpZXdpbmcgZmlsZTombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfIi4kZXh0LiJcIiBib3JkZXI9XCIwXCI+Jm5ic3A7Ii4kZi4iICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkZC4kZikpLiIpICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyIudmlld19wZXJtc19jb2xvcigkZC4kZikuIjwvYj48YnI+U2VsZWN0IGFjdGlvbi9maWxlLXR5cGU6PGJyPiI7DQogICAgZm9yZWFjaCgkYXJyIGFzICR0KSB7DQogICAgICBpZiAoJHRbMV0gPT0gJHJmdCkge2VjaG8gIiA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Zm9udCBjb2xvcj1saW1lPiIuJHRbMF0uIjwvZm9udD48L2E+Ijt9DQogICAgICBlbHNlaWYgKCR0WzFdID09ICRmdCkge2VjaG8gIiA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj48dT4iLiR0WzBdLiI8L3U+PC9iPjwvYT4iO30NCiAgICAgIGVsc2Uge2VjaG8gIiA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj4iLiR0WzBdLiI8L2I+PC9hPiI7fQ0KICAgICAgZWNobyAiICg8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJndoaXRlPTEmZD0iLnVybGVuY29kZSgkZCkuIlwiIHRhcmdldD1cIl9ibGFua1wiPis8L2E+KSB8IjsNCiAgICB9DQogICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0KICAgIGlmICgkZnQgPT0gImluZm8iKSB7DQogICAgICBlY2hvICI8Yj5JbmZvcm1hdGlvbjo8L2I+PHRhYmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9Mj48dHI+PHRkPjxiPlBhdGg8L2I+PC90ZD48dGQ+ICIuJGQuJGYuIjwvdGQ+PC90cj48dHI+PHRkPjxiPlNpemU8L2I+PC90ZD48dGQ+ICIudmlld19zaXplKGZpbGVzaXplKCRkLiRmKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1ENTwvYj48L3RkPjx0ZD4gIi5tZDVfZmlsZSgkZC4kZikuIjwvdGQ+PC90cj4iOw0KICAgICAgaWYgKCEkd2luKSB7DQogICAgICAgIGVjaG8gIjx0cj48dGQ+PGI+T3duZXIvR3JvdXA8L2I+PC90ZD48dGQ+ICI7DQogICAgICAgICRvdyA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkZC4kZikpOw0KICAgICAgICAkZ3IgPSBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJGQuJGYpKTsNCiAgICAgICAgZWNobyAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCRkLiRmKSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJGQuJGYpKTsNCiAgICAgIH0NCiAgICAgIGVjaG8gIjx0cj48dGQ+PGI+UGVybXM8L2I+PC90ZD48dGQ+PGEgaHJlZj1cIiIuJHN1cmwuIng9Y2htb2QmZj0iLnVybGVuY29kZSgkZikuIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iPC9hPjwvdGQ+PC90cj48dHI+PHRkPjxiPkNyZWF0ZSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlY3RpbWUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+QWNjZXNzIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVhdGltZSgkZC4kZikpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZW10aW1lKCRkLiRmKSkuIjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAkZmkgPSBmb3BlbigkZC4kZiwicmIiKTsNCiAgICAgIGlmICgkZmkpIHsNCiAgICAgICAgaWYgKCRmdWxsaGV4ZHVtcCkge2VjaG8gIjxiPkZVTEwgSEVYRFVNUDwvYj4iOyAkc3RyID0gZnJlYWQoJGZpLGZpbGVzaXplKCRkLiRmKSk7fQ0KICAgICAgICBlbHNlIHtlY2hvICI8Yj5IRVhEVU1QIFBSRVZJRVc8L2I+IjsgJHN0ciA9IGZyZWFkKCRmaSwkaGV4ZHVtcF9saW5lcyokaGV4ZHVtcF9yb3dzKTt9DQogICAgICAgICRuID0gMDsNCiAgICAgICAgJGEwID0gIjAwMDAwMDAwPGJyPiI7DQogICAgICAgICRhMSA9ICIiOw0KICAgICAgICAkYTIgPSAiIjsNCiAgICAgICAgZm9yICgkaT0wOyAkaTxzdHJsZW4oJHN0cik7ICRpKyspIHsNCiAgICAgICAgICAkYTEgLj0gc3ByaW50ZigiJTAyWCIsb3JkKCRzdHJbJGldKSkuIiAiOw0KICAgICAgICAgIHN3aXRjaCAob3JkKCRzdHJbJGldKSkgew0KICAgICAgICAgICAgY2FzZSAwOiAgJGEyIC49ICI8Zm9udD4wPC9mb250PiI7IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAzMjoNCiAgICAgICAgICAgIGNhc2UgMTA6DQogICAgICAgICAgICBjYXNlIDEzOiAkYTIgLj0gIiZuYnNwOyI7IGJyZWFrOw0KICAgICAgICAgICAgZGVmYXVsdDogJGEyIC49IGh0bWxzcGVjaWFsY2hhcnMoJHN0clskaV0pOw0KICAgICAgICAgIH0NCiAgICAgICAgICAkbisrOw0KICAgICAgICAgIGlmICgkbiA9PSAkaGV4ZHVtcF9yb3dzKSB7DQogICAgICAgICAgICAkbiA9IDA7DQogICAgICAgICAgICBpZiAoJGkrMSA8IHN0cmxlbigkc3RyKSkgeyRhMCAuPSBzcHJpbnRmKCIlMDhYIiwkaSsxKS4iPGJyPiI7fQ0KICAgICAgICAgICAgJGExIC49ICI8YnI+IjsNCiAgICAgICAgICAgICRhMiAuPSAiPGJyPiI7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjx0YWJsZSBib3JkZXI9MSBiZ2NvbG9yPSM2NjY2NjY+Ii4NCiAgICAgICAgICAgICAiPHRyPjx0ZCBiZ2NvbG9yPSM2NjY2NjY+Ii4kYTAuIjwvdGQ+Ii4NCiAgICAgICAgICAgICAiPHRkIGJnY29sb3I9IzAwMDAwMD4iLiRhMS4iPC90ZD4iLg0KICAgICAgICAgICAgICI8dGQgYmdjb2xvcj0jMDAwMDAwPiIuJGEyLiI8L3RkPiIuDQogICAgICAgICAgICAgIjwvdHI+PC90YWJsZT48YnI+IjsNCiAgICAgIH0NCiAgICAgIA0KICAgZWNobyAiPGI+SEVYRFVNUDo8L2I+PG5vYnI+IFs8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZmdWxsaGV4ZHVtcD0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5GdWxsPC9hPl0gWzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5QcmV2aWV3PC9hPl08YnI+PGI+QmFzZTY0OiA8L2I+DQogICAgICAgIDxub2JyPls8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCI+RW5jb2RlPC9hPl0mbmJzcDs8L25vYnI+DQogICAgICAgIDxub2JyPls8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9MiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+K2NodW5rPC9hPl0mbmJzcDs8L25vYnI+DQogICAgICAgIDxub2JyPls8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9MyZkPSIudXJsZW5jb2RlKCRkKS4iXCI+K2NodW5rK3F1b3RlczwvYT5dJm5ic3A7PC9ub2JyPg0KICAgICAgICA8bm9icj5bPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mYmFzZTY0PTQmZD0iLnVybGVuY29kZSgkZCkuIlwiPkRlY29kZTwvYT5dJm5ic3A7PC9ub2JyPg0KICAgICAgICA8UD4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJodG1sIikgew0KICAgaWYgKCR3aGl0ZSkge0BvYl9jbGVhbigpO30NCiAgIGVjaG8gJHI7DQogICBpZiAoJHdoaXRlKSB7Ym9nZWxleGl0KCk7fQ0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJ0eHQiKSB7ZWNobyAiPHByZT4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3ByZT4iO30NCiAgZWxzZWlmICgkZnQgPT0gImluaSIpIHtlY2hvICI8cHJlPiI7IHZhcl9kdW1wKHBhcnNlX2luaV9maWxlKCRkLiRmLFRSVUUpKTsgZWNobyAiPC9wcmU+Ijt9DQogIGVsc2VpZiAoJGZ0ID09ICJwaHBzZXNzIikgew0KICAgZWNobyAiPHByZT4iOw0KICAgJHYgPSBleHBsb2RlKCJ8Iiwkcik7DQogICBlY2hvICR2WzBdLiI8YnI+IjsNCiAgIHZhcl9kdW1wKHVuc2VyaWFsaXplKCR2WzFdKSk7DQogICBlY2hvICI8L3ByZT4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJleGUiKSB7DQogICAkZXh0ID0gZXhwbG9kZSgiLiIsJGYpOw0KICAgJGMgPSBjb3VudCgkZXh0KS0xOw0KICAgJGV4dCA9ICRleHRbJGNdOw0KICAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7DQogICAkcmZ0ID0gIiI7DQogICBmb3JlYWNoKCRleGVmdHlwZXMgYXMgJGs9PiR2KQ0KICAgew0KICAgIGlmIChpbl9hcnJheSgkZXh0LCR2KSkgeyRyZnQgPSAkazsgYnJlYWs7fQ0KICAgfQ0KICAgJGNtZCA9IHN0cl9yZXBsYWNlKCIlZiUiLCRmLCRyZnQpOw0KICAgZWNobyAiPGI+RXhlY3V0ZSBmaWxlOjwvYj48Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPWNtZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiY21kXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGNtZCkuIlwiIHNpemU9XCIiLihzdHJsZW4oJGNtZCkrMikuIlwiPjxicj5EaXNwbGF5IGluIHRleHQtYXJlYTxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiY21kX3R4dFwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGQpLiJcIj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiRXhlY3V0ZVwiPjwvZm9ybT4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJzZGIiKSB7ZWNobyAiPHByZT4iOyB2YXJfZHVtcCh1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRyKSkpOyBlY2hvICI8L3ByZT4iO30NCiAgZWxzZWlmICgkZnQgPT0gImNvZGUiKSB7DQogICAgaWYgKGVyZWcoInBocCIuIkJCIDIuKC4qKSBhdXRvLWdlbmVyYXRlZCBjb25maWcgZmlsZSIsJHIpKSB7DQogICAgICAkYXJyID0gZXhwbG9kZSgiXG4iLCRyKTsNCiAgICAgIGlmIChjb3VudCgkYXJyID09IDE4KSkgew0KICAgICAgICBpbmNsdWRlKCRkLiRmKTsNCiAgICAgICAgZWNobyAiPGI+cGhwQkIgY29uZmlndXJhdGlvbiBpcyBkZXRlY3RlZCBpbiB0aGlzIGZpbGUhPGJyPiI7DQogICAgICAgIGlmICgkZGJtcyA9PSAibXlzcWw0IikgeyRkYm1zID0gIm15c3FsIjt9DQogICAgICAgIGlmICgkZGJtcyA9PSAibXlzcWwiKSB7ZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9c3FsJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYmhvc3QpLiImc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkZGJ1c2VyKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYnBhc3N3ZCkuIiZzcWxfcG9ydD0zMzA2JnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJGRibmFtZSkuIlwiPjxiPjx1PkNvbm5lY3QgdG8gREI8L3U+PC9iPjwvYT48YnI+PGJyPiI7fQ0KICAgICAgICBlbHNlIHtlY2hvICJCdXQsIHlvdSBjYW4ndCBjb25uZWN0IHRvIGZvcnVtIHNxbC1iYXNlLCBiZWNhdXNlIGRiLXNvZnR3YXJlPVwiIi4kZGJtcy4iXCIgaXMgbm90IHN1cHBvcnRlZCBieSAiLiRzaF9uYW1lLiIuIFBsZWFzZSwgcmVwb3J0IHVzIGZvciBmaXguIjt9DQogICAgICAgIGVjaG8gIlBhcmFtZXRlcnMgZm9yIG1hbnVhbCBjb25uZWN0Ojxicj4iOw0KICAgICAgICAkY2ZndmFycyA9IGFycmF5KCJkYm1zIj0+JGRibXMsImRiaG9zdCI9PiRkYmhvc3QsImRibmFtZSI9PiRkYm5hbWUsImRidXNlciI9PiRkYnVzZXIsImRicGFzc3dkIj0+JGRicGFzc3dkKTsNCiAgICAgICAgZm9yZWFjaCAoJGNmZ3ZhcnMgYXMgJGs9PiR2KSB7ZWNobyBodG1sc3BlY2lhbGNoYXJzKCRrKS4iPSciLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiInPGJyPiI7fQ0KICAgICAgICBlY2hvICI8L2I+PGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0KICAgICAgfQ0KICAgIH0NCiAgICBlY2hvICI8ZGl2IHN0eWxlPVwiYm9yZGVyIDogMHB4IHNvbGlkICNGRkZGRkY7IHBhZGRpbmc6IDFlbTsgbWFyZ2luLXRvcDogMWVtOyBtYXJnaW4tYm90dG9tOiAxZW07IG1hcmdpbi1yaWdodDogMWVtOyBtYXJnaW4tbGVmdDogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAiLiRoaWdobGlnaHRfYmFja2dyb3VuZCAuIjtcIj4iOw0KICAgIGlmICghZW1wdHkoJHdoaXRlKSkge0BvYl9jbGVhbigpO30NCiAgICBoaWdobGlnaHRfZmlsZSgkZC4kZik7DQogICAgaWYgKCFlbXB0eSgkd2hpdGUpKSB7Ym9nZWxleGl0KCk7fQ0KICAgIGVjaG8gIjwvZGl2PiI7DQogIH0NCiAgZWxzZWlmICgkZnQgPT0gImRvd25sb2FkIikgew0KICAgIEBvYl9jbGVhbigpOw0KICAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiLmZpbGVzaXplKCRkLiRmKSk7DQogICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuJGYuIlwiOyIpOw0KICAgIGVjaG8gJHI7DQogICAgZXhpdDsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAibm90ZXBhZCIpIHsNCiAgICBAb2JfY2xlYW4oKTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbiIpOw0KICAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLiRmLiIudHh0XCI7Iik7DQogICAgZWNobygkcik7DQogICAgZXhpdDsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiaW1nIikgew0KICAgICRpbmYgPSBnZXRpbWFnZXNpemUoJGQuJGYpOw0KICAgIGlmICghJHdoaXRlKSB7DQogICAgICBpZiAoZW1wdHkoJGltZ3NpemUpKSB7JGltZ3NpemUgPSA1MDt9DQogICAgICAkd2lkdGggPSAkaW5mWzBdLzEwMCokaW1nc2l6ZTsNCiAgICAgICRoZWlnaHQgPSAkaW5mWzFdLzEwMCokaW1nc2l6ZTsNCiAgICAgIGVjaG8gIjxjZW50ZXI+PGI+U2l6ZTo8L2I+Jm5ic3A7IjsNCiAgICAgICRzaXplcyA9IGFycmF5KCIxMDAiKTsNCiAgICAgIGZvcmVhY2ggKCRzaXplcyBhcyAkdikgew0KICAgICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW1nJmQ9Ii51cmxlbmNvZGUoJGQpLiImaW1nc2l6ZT0iLiR2LiJcIj4iOw0KICAgICAgICBpZiAoJGltZ3NpemUgIT0gJHYgKSB7ZWNobyAkdjt9DQogICAgICAgIGVsc2Uge2VjaG8gIjx1PiIuJHYuIjwvdT4iO30NCiAgICAgICAgZWNobyAiPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgICB9DQogICAgICBlY2hvICI8YnI+PGJyPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW1nJndoaXRlPTEmZD0iLnVybGVuY29kZSgkZCkuIlwiIHdpZHRoPVwiIi4kd2lkdGguIlwiIGhlaWdodD1cIiIuJGhlaWdodC4iXCIgYm9yZGVyPVwiMVwiPjwvY2VudGVyPiI7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgQG9iX2NsZWFuKCk7DQogICAgICAkZXh0ID0gZXhwbG9kZSgkZiwiLiIpOw0KICAgICAgJGV4dCA9ICRleHRbY291bnQoJGV4dCktMV07DQogICAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogIi4kaW5mWyJtaW1lIl0pOw0KICAgICAgcmVhZGZpbGUoJGQuJGYpOw0KICAgICAgZXhpdDsNCiAgICB9DQogIH0NCiAgZWxzZWlmICgkZnQgPT0gImVkaXQiKSB7DQogICBpZiAoIWVtcHR5KCRzdWJtaXQpKQ0KICAgew0KICAgIGlmICgkZmlsZXN0ZWFsdGgpIHskc3RhdCA9IHN0YXQoJGQuJGYpO30NCiAgICAkZnAgPSBmb3BlbigkZC4kZiwidyIpOw0KICAgIGlmICghJGZwKSB7ZWNobyAiPGI+Q2FuJ3Qgd3JpdGUgdG8gZmlsZSE8L2I+Ijt9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgZWNobyAiPGI+U2F2ZWQhPC9iPiI7DQogICAgIGZ3cml0ZSgkZnAsJGVkaXRfdGV4dCk7DQogICAgIGZjbG9zZSgkZnApOw0KICAgICBpZiAoJGZpbGVzdGVhbHRoKSB7dG91Y2goJGQuJGYsJHN0YXRbOV0sJHN0YXRbOF0pO30NCiAgICAgJHIgPSAkZWRpdF90ZXh0Ow0KICAgIH0NCiAgIH0NCiAgICRyb3dzID0gY291bnQoZXhwbG9kZSgiXHJcbiIsJHIpKTsNCiAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDt9DQogICBpZiAoJHJvd3MgPiAzMCkgeyRyb3dzID0gMzA7fQ0KICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9ZWRpdCZkPSIudXJsZW5jb2RlKCRkKS4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2F2ZVwiPiZuYnNwOzxpbnB1dCB0eXBlPVwicmVzZXRcIiB2YWx1ZT1cIlJlc2V0XCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibG9jYXRpb24uaHJlZj0nIi5hZGRzbGFzaGVzKCRzdXJsLiJ4PWxzJmQ9Ii5zdWJzdHIoJGQsMCwtMSkpLiInO1wiIHZhbHVlPVwiQmFja1wiPjxicj48dGV4dGFyZWEgbmFtZT1cImVkaXRfdGV4dFwiIGNvbHM9XCIxMjJcIiByb3dzPVwiIi4kcm93cy4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRyKS4iPC90ZXh0YXJlYT48L2Zvcm0+IjsNCiAgfQ0KICBlbHNlaWYgKCFlbXB0eSgkZnQpKSB7ZWNobyAiPGNlbnRlcj48Yj5NYW51YWxseSBzZWxlY3RlZCB0eXBlIGlzIGluY29ycmVjdC4gSWYgeW91IHRoaW5rLCBpdCBpcyBtaXN0YWtlLCBwbGVhc2Ugc2VuZCB1cyB1cmwgYW5kIGR1bXAgb2YgXCRHTE9CQUxTLjwvYj48L2NlbnRlcj4iO30NCiAgZWxzZSB7ZWNobyAiPGNlbnRlcj48Yj5Vbmtub3duIGV4dGVuc2lvbiAoIi4kZXh0LiIpLCBwbGVhc2UsIHNlbGVjdCB0eXBlIG1hbnVhbGx5LjwvYj48L2NlbnRlcj4iO30NCn0NCmVjaG8gIjwvZGl2PlxuIjsNCn0NCn0NCmVsc2Ugew0KQG9iX2NsZWFuKCk7DQokaW1hZ2VzID0gYXJyYXkoDQoiYXJyb3dfbHRyIj0+DQoiUjBsR09EbGhKZ0FXQUlBQkFQLy8vd0FBQUNINUJBSG9Bd0VBTEFBQUFBQW1BQllBQUFJdmpJK3B5KzBQRjRpMGdWdnp1VnhYRG5vUVNJclVaR1pvZXJLZjI4S2pQTlBPYWt1NVJmWit1UXNLaDhSaW9nQUFPdz09IiwNCiJiYWNrIj0+DQoiUjBsR09EbGhGQUFVQUtJQUFBQUFBUC8vLzkzZDNjREF3SWFHaGdRRUJQLy8vd0FBQUNINUJBRUFBQVlBTEFBQUFBQVVBQlFBQUFNOCIuDQoiYUxyYy9qREtTV1dwalZ5c1NOaVlKNENVT0JKb3FqbmlJTHp3dXpMdFlOLzN6QlNFcmY2a0JXK2dLUmlQUmdoUGgrRUZLMG1PVUVxdCIuDQoiV2cwSkFEcz0iLA0KImJ1ZmZlciI9Pg0KIlIwbEdPRGxoRkFBVUFLSUFBQUFBQVAvLy8vajQrTjNkM2N6TXpMS3lzb2FHaHYvLy95SDVCQUVBQUFjQUxBQUFBQUFVQUJRQUFBTm8iLg0KImVMcmNyaWJHOTB5NEYxQW11NStOaFkya3hsMkNNS3dyUVJTR3VWanA0TG13REFXcWlBR0ZYQ2hnK3hoblJCK3B0TE9oYWkxY3JFbUQiLg0KIkRsd3Y0Y0VDNDZtaTJZZ0pRS2F4c0VHREZubkd3V0RURXpqOWpyUFJkYmh1RzhDci8ySU5aSU9FaFhzYkR3a0FPdz09IiwNCiJjaGFuZ2UiPT4NCiJSMGxHT0RsaEZBQVVBTVFmQUwzaGo3blgrcHFvMWVqeS9mN1lBY1RiKzh2aCs2RnRINTZXWnR2ci9SQVFFWmVjeDlMbC9QWDYvdjMrIi4NCiIvM2VIdDZxODhlSHUvWmtmSDN5VnlJdVF0KzcyL2tPbTk5Zm8vUDhBWm01N3JrR1M0SGV6NnBpbDlvZXAzR1ptWnYvLy95SDVCQUVBIi4NCiJBQjhBTEFBQUFBQVVBQlFBQUFXZjRDZU9aR21lNk5tdExPdWxYK2M0VFZOVlE3ZTlxRnpmZzRIRm9ua2RKQTVTNTRjYlJBb0Z5RU9DIi4NCiJ3U2lVdG1Za2tyZ3dPQWVBNXpycWFMbGRCaU5NSUplRDI2NlhZVGdRRG01Ung4bWRHK29BYlNZZGFINEdhM2M4SkJNSmFYUUdCUWdBIi4NCiJDSGtqRTRhUWtRMEFsU0lUYW4rWkFRcWtpaVFQajFBRkFhTUtFS1lqRDM5UXJLd0tBYThuR1FLOEFndS9DeFRDc0NNZXhzZkl4akRMIi4NCiJ6TXNoQURzPSIsDQoiZGVsZXRlIj0+DQoiUjBsR09EbGhGQUFVQU9aWkFQejgvTlBGeU5nSExzMFlPdlB6OC9iMjlzYWNwTlhWMWZYMTljd1hPZkR3OEtlbnAvbjUrZXRnZXVucCIuDQoiNmRjR0xNTXBSdXJxNnBLU2t0dmIyKy92Nysxd2gzUjBkUG5QMTdpQWlweHllbDlmWDdkamNzY1NNOTNkM1pHUmtlRXNUZXZkNExDdyIuDQoic0dSa1pHcE9VK0lmUStFUU5vaDZmZEljUGVIaDRZV0ZoYkpRWXZMeTh1aSt4bTV1YnN4Y2NPeDhrY000VXRZOVdlQWRRWW1KaWZXdiIuDQoidkh4OGZNbkp5Y00zVWYzdjhyUnVlOThPTmJPenM5WUZLNVNVbEtZb1ArVGs1TjBvU3VmbjU3WkdXc1FyUjlrSUw1Q1FrT1BqNDJWbCIuDQoiWmVBUE51ZEFYOXNLTVB2NysxNVFVNXVibTM5L2Y4ZTV1NHhpYXRyYTJ1Ykt6OFBEdytwZmVlOS9sTUswdDgxcmZkOEFLZi8vL3dBQSIuDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINSIuDQoiQkFFQUFGa0FMQUFBQUFBVUFCUUFBQWVzZ0ZtQ2c0U0Zob2VJaGlVZklJbUlNbGdRQjQ2R0xBbFlRa2FGVlZoU0FJWkxUNWNiRVlJNCIuDQoiU1RvNU14T2ZoUXdCQTFnWUNoY2tRQmsxT3dpSUFMQUNMa2d4SmlsVEJJNjlSRmhERmg0SERKUlpWRmdQUEZCUjBGa05XRGRNSEE4RyIuDQoiQlpUYU1DSVNWZ01DNElrVldDY2FQU2k5Nk9xR05GaEtJMDRkZ3IwUVdGY0tETDNBNHVPSWpWWlpBQnhRSVdEQkxrSUVRclJvUXNIUSIuDQoiandWRkhCZ2lFR1FGSWdRYXNZa2NTYkpRSUFBNyIsDQoiZG93bmxvYWQiPT4NCiJSMGxHT0RsaEZBQVVBTE1JQUFEL0FBQ0FBSUFBQU1EQXdIOS9mLzhBQVAvLy93QUFBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUNINUJBRUFBQWdBTEFBQUFBQVVBQlFBQUFST0VNbEpxNzA0VXlHT3ZrTGhmVlU0a3BPSlNweDVuRjlZaUN0TGYwU3VIN3B1Ii4NCiJFWU9nY0Jna3dBaUdwSEtaekIySnhBREFTUUZDaWRRSnNNZmRHcXNESm5PUWxYVFAzOHByeldiWDNxZ0lBRHM9IiwNCiJmb3J3YXJkIj0+DQoiUjBsR09EbGhGQUFVQVBJQUFBQUFBUC8vLzkzZDNjREF3SWFHaGdRRUJQLy8vd0FBQUNINUJBRUFBQVlBTEFBQUFBQVVBQlFBQUFNOCIuDQoiYUxyYy9qREsyUXA5eFY1V2lONUc1MEZaYVJMRDZJaEU2NkxwdDNSRGJkOUNRRlNFNFArK1FXN0hlN1VLUGgwSXFWdzJsMFJRU0VxdCIuDQoiV3FzSkFEcz0iLA0KImhvbWUiPT4NCiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vK3JxNnQzZDNjek16TEt5c29hR2htWm1aZ1FFQlAvLy93QUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUNINUJBRUFBQWtBTEFBQUFBQVVBQlFBQUFSK01NazVUVFdJNmlweU1vTzNjVVdSZ2VKb0NDYUxvS08wbXEwWnhqTlNCRFdTIi4NCiJrcnFBc0xmSjdZUUJsNHRpUkNZRlNwUE1kUlJDb1FPaUw0aThDZ1pnazA5V2ZXTEJZWkhCNlVXakNlcXV3RURIdU9FVkszUXRnTi9qIi4NCiJWd01yQkRadmdGK0NoSGFHZVlpQ0JRWUhDSDhWQkphV2RBZVNsNVlpVzUrZ29CSVJBRHM9IiwNCiJtb2RlIj0+DQoiUjBsR09EbGhIUUFVQUxNQUFBQUFBUC8vLzZDZ3BOM2QzY3pNeklhR2htWm1abDlmWC8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFkQUJRQUFBU0JFTWxKcTcwNDYxbTYvK0FIWk1VZ25HaXFuaU5XSEhBc3ozRjdGVUd1NzN4TyIuDQoiMkJaY3dHRG9FWGsvVXE0SUNBQ2VRNmZ6bVhUbG5zMGRkbGU5OWI3Y0Z2WXBFUjU1WjEwWHkxbEt0OHdwb0lzQUNyZGFxQnBZRVlLLyIuDQoiZEgxTFJXaUVlMHBSVFhCdlZId1VkM282ZUQ2T0hBU1htSm1hbUpVU1k1K2dueHVqcEJJUkFEcz0iLA0KInNlYXJjaCI9Pg0KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8rcnE2dDNkM2N6TXpNREF3TEt5c29hR2huZDNkMlptWmw5ZlgwMU5UU2twS1FRRUJQLy8iLg0KIi93QUFBQ0g1QkFFQUFBNEFMQUFBQUFBVUFCUUFBQVNuME1sNXFqMHo1eHI2K0paR2VVWnBISXFSTk9JUmZJWWl5K2E2dmNPcEhPYXAiLg0KInM1SUtRY2N6OFhnSzRFR2dRcVdNdmtyU3NjeWxob2FGVm11WkxnVURBblp4RUJNT0RTbnJraGlTQ1o0Q0dyVVdNQStMTER4dVNIc0QiLg0KIkFrTjRDM3NmQlgxMFZIYUJKNFFmQTRlSVU0cGlqUWNGbUNWb05rRmxnZ2NNUlNjTlNVQ2RKeWhvRGFzTlo1TVREVnNYQndsdmlSbXIiLg0KIkNicTdDNnNJcnFhd3JLd1R2NjhpeUE2ckRoRUFPdz09IiwNCiJzZXR1cCI9Pg0KIlIwbEdPRGxoRkFBVUFNUUFBQUFBQVAvLy8vajQrT1BqNDkzZDNjek16TURBd0xLeXNwYVdsb2FHaG5kM2QyWm1abDlmWDAxTlRVSkMiLg0KIlFod2NIUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUEiLg0KIkFCQUFMQUFBQUFBVUFCUUFBQVdWSUNTS2lrS1dhRG11U2hDVWJqek13RW9HaFZ2c2ZIRUVOUllPZ2VnbGprZWcwUEY0S0JJRlJNSUIiLg0KInFDYUNKNGVJR1FWb0lWV3NUZlFvWE1mb1VmbU1acmdaMkdORFBHSUk3Z0pETFlFcndHMXZnVzhDQ1F0emdIaUpBbmFGaHl0MmR3UUUiLg0KIk93Y01ab1owa0pLVWxaZU9kUUtiUGdlZGpabWhuQWNKbHFhSXFVZXNtSWlrcEVpeG55Smh1bFVNaGcyNGFTTzZZeUVBT3c9PSIsDQoic21hbGxfZGlyIj0+DQoiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzV5Y0FNN09ZLy8vblAvL3p2L09uUGYzOS8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFUQUJBQUFBUlJFTWxKcTcwNDZ5cDZCeHNpSEVWQkVBS1lDVVByRHA3SGxYUmRFb01xQ2VicCIuDQoiLzRZY2hmZnpHUWhINFlSWVBCMkRPbEhQaUt3cWQxUHE4eXJWVmczUVllSDVSWUs1ckpmYUZVVUEzdkI0ZkJJQkFEcz0iLA0KInNtYWxsX3VuayI9Pg0KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQUllcDNCRTltbGxpYzNCNWlWcGpkTXZoL01MYyt5MVUiLg0KInA5UG0vR1Z1ZmM3ai9NelYvOVhtL0VPbTk5Ym4vTmpwL2E3USt0VG0vTEhTK2VYdy90M3IvTm5wL2Rqby9OcnEvZmo3Lzl2cS9OZm8iLg0KIi9NYmUrOHJoL01uZys3alcrcnZZK3I3Wis3WFI5ZERrL05Iay9OTGwvTFRVK3JuWCs4emkvTGJWKytmeC9lNzIvdkgzL3ZMNC91MzEiLg0KIi9lMzEvdUR1L2R6ci9PcnovZUh1L2ZYNi92SDQvdi8vLy92Ky8zZXo2dmY3Ly9UNS9rR1M0UHY5LzdYVitySFQrci9iK3J6YSt2UDQiLg0KIi91ejAvdXJ6L3U3MS91dnovZFRuL00vay9OM3MvZHZyL2NqZys4UGQrOEhjK3NmZis4VGUrL0QyL3JYSThySEY4YnJNODdmSjhubVAiLg0KIndyM044Ni9EOEt2QjhGOW5lRUZvdEVCbnRFTnB0RU5wdFN4VXB4MUlvRGxmclRSY3JaZWV5WmFjeHBtaHpJdVJ0cFdaeEl1T3VLcXoiLg0KIjlaT1d3WDZJczNXSXU1aW0wN3JKOUoydDJaZWswbTU3cnBxbzFuS0N0VVZydFlpcjN2ZjYvNDZ2NFl1dTRXWnZmcjdQNnNQUzZzRFEiLg0KIjY2WEI2Y2paOGEvSzc5L3MvZGJuL2V6ei9jemQ5bU4waktUQjZhaS83Nlc5N25pWHoyR0N3VjZBd1Vkc3RYeVZ5R1NEd25tWXo0aW8iLg0KIjI0T2kxYTNCNDVTeTRhZTk0NENjejRTajFuMkdsZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBam5BQ3RWQ2tDdzRKeEpBUVFxRkJqQXhvME1OR3FzQUJRQWg2Q0ZBM25rME1IaVJSRVZEaHpzb0xRd0FKMGdUNFRvZWNTSEFZTXoiLg0KImFRZ29ETkNDU0I0RUFuSW1DaVNCalV5R0xvYmdYQlRwa0FBNUk2cGdtU2tEejVjdU1Tejh5V2xBeW9DWkZHYjRTUUtoQVNNQlhKcE0iLg0KInVTclFFUXdrR2pZa1FDVEF5NkFsVU1oV2tsUUJ3NE1FaGdTQTZYUGdSeFM1aWk0MEtMRmdpNEJHVEVLQXNDS1hpaEVTQ3pyc2dTUUMiLg0KInlJa1VWK1NxT1lMQ0E0Y3NBdXA4Nk9HRGtOdzRCcFE0T2FCRmdCMFRFeUlVS3FEd1RSczRhOXlNQ1NPbURCb3ladTRzSktDZ3dJRGoiLg0KInlBc29rQmtRQURzPSIsDQoibXVsdGlwYWdlIj0+IlIwbEdPRGxoQ2dBTUFKRURBUC8vLy8vM21RQUFBQUFBQUNINUJBRUFBQU1BTEFBQUFBQUtBQXdBQUFJajNJUiIuDQoicEpoQ09Ebm92aWRBb3ZCZE16emtpeGxYZGxJMm9acEpXRXNTeXdMelJVQUFBT3c9PSIsDQoic29ydF9hc2MiPT4NCiJSMGxHT0RsaERnQUpBS0lBQUFBQUFQLy8vOVRReUlDQWdQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBT0FBa0FBQU1hIi4NCiJTTHJjUGNFOUdLVWFRbFE1c041UGxvRkxKMzVPb0s2cTVTWUFPdz09IiwNCiJzb3J0X2Rlc2MiPT4NCiJSMGxHT0RsaERnQUpBS0lBQUFBQUFQLy8vOVRReUlDQWdQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBT0FBa0FBQU1iIi4NCiJTTHJjT2pCQ0I0VVZJVGd5THQ1Y2gybWdTSlpEQmk3cDZoSUpBRHM9IiwNCiJzcWxfYnV0dG9uX2Ryb3AiPT4NCiJSMGxHT0RsaENRQUxBUGNBQUFBQUFJQUFBQUNBQUlDQUFBQUFnSUFBZ0FDQWdJQ0FnTURBd1A4QUFBRC9BUC8vQUFBQS8vOEEvd0QvIi4NCiIvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFBenpBQXovd0JtIi4NCiJBQUJtTXdCbVpnQm1tUUJtekFCbS93Q1pBQUNaTXdDWlpnQ1ptUUNaekFDWi93RE1BQURNTXdETVpnRE1tUURNekFETS93RC9BQUQvIi4NCiJNd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpNQW1UTUF6RE1BL3pNekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tIi4NCiJaak5tbVRObXpETm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQL016UC9aalAvIi4NCiJtVFAvekRQLy8yWUFBR1lBTTJZQVptWUFtV1lBekdZQS8yWXpBR1l6TTJZelptWXptV1l6ekdZei8yWm1BR1ptTTJabVptWm1tV1ptIi4NCiJ6R1ptLzJhWkFHYVpNMmFaWm1hWm1XYVp6R2FaLzJiTUFHYk1NMmJNWm1iTW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvIi4NCiIvNWtBQUprQU01a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVpsbXpKbG0vNW1aIi4NCiJBSm1aTTVtWlpwbVptWm1aekptWi81bk1BSm5NTTVuTVpwbk1tWm5NekpuTS81bi9BSm4vTTVuL1pwbi9tWm4vekpuLy84d0FBTXdBIi4NCiJNOHdBWnN3QW1jd0F6TXdBLzh3ekFNd3pNOHd6WnN3em1jd3p6TXd6Lzh4bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5WkFNeVpNOHlaIi4NCiJac3labWN5WnpNeVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBIi4NCiJtZjhBelA4QS8vOHpBUDh6TS84elp2OHptZjh6elA4ei8vOW1BUDltTS85bVp2OW1tZjltelA5bS8vK1pBUCtaTS8rWlp2K1ptZitaIi4NCiJ6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8vL0FQLy9NLy8vWnYvL21mLy96UC8vL3lINUJBRUFBQkFBTEFBQUFBQUpBQXNBIi4NCiJBQWc0QVA4SlJFRlE0RCtDQ0JPaTRNYXdJVGVGQ2cvaVFoRVB4Y1NCbEZDb1E1Rng0TVNLdjFCZ1JHR01vMGlKRkMyZWhIalNvTXQvIi4NCiJBUUVBT3c9PSIsDQoic3FsX2J1dHRvbl9lbXB0eSI9Pg0KIlIwbEdPRGxoQ1FBS0FQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLg0KIi8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLg0KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLg0KIk13RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFaak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm0iLg0KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLg0KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLg0KInpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVovMmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8iLg0KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLg0KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLg0KIk04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pac3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVoiLg0KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLg0KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLg0KInpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00vLy8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBSkFBb0EiLg0KIkFBZ2pBUDhKUkVGUTREK0NDQk9pTU1oUW9jS0RFQmN1akVpUm9zU0JGakZlbk9od1lVQUFPdz09IiwNCiJzcWxfYnV0dG9uX2luc2VydCI9Pg0KIlIwbEdPRGxoRFFBTUFQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLg0KIi8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLg0KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLg0KIk13RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFaak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm0iLg0KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLg0KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLg0KInpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVovMmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8iLg0KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLg0KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLg0KIk04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pac3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVoiLg0KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLg0KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLg0KInpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00vLy8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBTkFBd0EiLg0KIkFBZ3pBRkVJSEVpd29NR0RDQkg2VzBndG9VQi8vMUJFTk9pUDJzS0VDek5lTklpcVkwZC9GQmYreTBqUjQ4ZVFHVWM2SkJnUUFEcz0iLA0KInVwIj0+DQoiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLy9qNCtPUGo0OTNkM2N6TXpMS3lzb2FHaGsxTlRmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUjBNTWxKcTczNG5zMVBua2NnamdYd2hjTlFySVZobUZvbnp4d1FqbmllMjdqZyIuDQoiKzRRZ3kzWGdCWDRJb0hEbE1oUnZnZ0ZpR2lTd1dzNVh5RGZ0V3BsRUorOUhRQ3l4MmMxWUVEUmZ3d2Z4dG9wNHA1M1B3TEtPanZ2ViIuDQoiSVh0ZGd3Z2RQR2RZZm5nMUlWZUphVElBa3BPVWxaWWZIeEVBT3c9PSIsDQoid3JpdGUiPT4NCiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vOTNkM2N6TXpMS3lzb2FHaG1abVpsOWZYd1FFQlAvLy93QUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUNINUJBRUFBQWtBTEFBQUFBQVVBQlFBQUFSME1NbEpxeXpGYWxxRVFKdUdFUVNDbldnNkZvZ3BrSEFNRjRIQUpzV2g3L3plIi4NCiJFUVlRTFVBc0dnTTBXd3QzYkNKZlFTRngxMHl5QmxKbjhSZkVNZ005WCszcUhXcTVpRUQ1eUNzTUNsMTExa25EcHVYZllscytJSzYxIi4NCiJMWGQrV1dFSExVZC9Ub0pGWlFPT2o1Q1JqaUNCbFphWElCRUFPdz09IiwNCiJleHRfYXNwIj0+DQoiUjBsR09EZGhFQUFRQUxNQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnTURBd0lDQWdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuDQoiLy8vLy95d0FBQUFBRUFBUUFBQUVTdkRJU2FzRjJONkRNTkFTOEJ4ZmwxVWlPWlllOWFVd2dwRFRxNnFQL0lYME96N0FYVS8xZVJnSSIuDQoiRDZIUGh6alNlTFlkWWFic0RDV01ad2hnM1dXdEtLNFFyTUhvaENBUytoQUJBRHM9IiwNCiJleHRfbXAzIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzRDQWdNREF3SUNBQVAvL0FBQUFBQUFBQUFOVSIuDQoiYUdyUzdpdUtRR3NZSXFwcDZRaVpSRFFXWUFJTFFRU0EyZzJvNFFvQVNIR3d2QmJBTjNHWDFxWEErcjFhQlFIUlpITUVEU1lDejNmYyIuDQoiSUd0R1Q4d0FVd2x0endXTldSVjNMRG54WU0xdWI2R25lRHdCQURzPSIsDQoiZXh0X2F2aSI9Pg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd1A4QUFBQUFBQUFBQUFBQUFBTk0iLg0KIldGclM3aXVLUUdzWUlxcHA2UWlaMUZGQUNZaWpCNFJNcWpiWTAxRHdXZzQ0Z0FzclA1UUZrMjRIdU9oT0RKd1NVL0loQllUY2p4ZTQiLg0KIlBZWEN5ZytWMmk0NFhlUm1TZllxc0doQUFnQTciLA0KImV4dF9jZ2kiPT4NCiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXdBTEFBQUFBQVFBQkFBaGdBQUFKdHFDSGQzZDdpTkdhK0hNdTdlcjlHaUM2K0lPT3U5Ii4NCiJEa0pBUHF5RlFxbC9OL0RsaHN5eWZlNjdBZi9TRlAvOGtmLzlsRDlFVHYvUEN2L2NRLy9lTnYvWElmL1pLUC9SRHYvYkxmL2NNYWg2Ii4NCiJMUFBZUnZ6Z1Irdmd4N3lWTXYvbFV2L21Udi9mT2YvTUF2L21jZi9OQS8vcWlmL01BUC9URmYveHA3dVpWZi9XSVAvT0JxdC9Idi9TIi4NCiJFdi9oUCs3T09QL1dIdi93YkhOZlA0VnpWN3VQRnYvcFYvL3JYZi95Y2YvemR2LzBlVU5KV0VOS1dzeWtJazlSV015dFAvLzRpRXBRIi4NCiJYdi85cWZicHRQL3VaOTNHaU5xNlhXcFJKLy9pUXY3d3NxdUVRdi9qUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZWVnRXlDZzB3QmhJZUhBWXFJakFFd2hveUVBUVFYQkpDUmhRTXVBNWVTaW9vR0l3YWZpNFVNIi4NCiJCYWdORkJNY0RSNEZRd3dCQWdFR1NCQkVGU3d4TmhBeUdnNldBa3dDQkFndkZpVWlPQkVnTlVjN3c0SUNORDhQS0NGQU9pMEpQTktEIi4NCiJBa1VuR1RrUk53TVMzNE1CSkJnZFJrSkxDRDdxZ2dFUEt4c0pLaVlUQndlSmtqaFFrazdBaHhROUZxZ0xNR0JHa0c4S0ZDZzhKS0FpIi4NCiJSWXRNQWdFQU93PT0iLA0KImV4dF9jbWQiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQWNBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdBQUFnSUNBQVAvL0FBQUFBQU5JIi4NCiJlTHJjSnpES0NZZTkrQW9nQnZsZytHMmRTQVFBaXBJRDVYSkRJTSswek5KRmtkTDNEQmc2SG14V01FQUFoVmxQQmhnWWRyWWhEUUNOIi4NCiJkbXJZQU1uMW9ucS9ZS3BqdkVnQUFEcz0iLA0KImV4dF9jcHAiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ3YvLy93QUFBQUFBZ0lDQWdNREF3QUFBQUFBQUFBQUFBQU5DIi4NCiJXTFBjOVhDQVNTY1o4TWxLaWNvYkJ3UmtFSWtWWVdxVDRGSUNvSjV2N2M2czNjcXJBcndpbkUvMzQ5RmlOb0Z3NDRydGxxaE9MNFJhIi4NCiJFcTdZckxERTdhNFNBRHM9IiwNCiJleHRfaW5pIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzhEQXdJQ0FnSUNBQVAvL0FBQUFBQUFBQUFOTCIuDQoiYUFyQjNpb2FOa0s5TU5iSHM2bEJLSW9Db0kxb1VKNE40RENxcVlCcHVNNmhxOFAzaHdvRWdVM21hd0VMQkVhUEZpQVVBTWdZeTNWTSIuDQoiU25FamdQVmFySEVIZ3JCNDNKdnN6c1FFQURzPSIsDQoiZXh0X2RpeiI9Pg0KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQVAvLy8xNXBoY2ZiNk5Mcy83UGMvK1AwLzNKK2w5YnMiLg0KIi81Mm51cWpLNS9uLy8vai8vLzcvLy9yLy8wdHJsc1BuLzhubi84blo1dHJtNzludS84L3EvOVh0Lzl6dy85M3cvK2oxLzlIci8rRHYiLg0KIi9kN3YvNzNIME1qVTM5enUvOWJyLzhuZTh0WG4rSzYvejhYai9MalY3ZERwLzZLNHk4YmwvNU80Mk96Mi83SFc5SnU5MnUvOS84VDMiLg0KIi8rTC8vKzcrLyt2Ni8rLzYvOUg0LytYNi8rWGw1UHovLysvdDdmWDA4dkQvLyszLy8vUC8vL0gvLy9QNy84bnEvOGZwLzhUbDk4enIiLg0KIi8rL3o5dlQ0KytuMS9iL2svZG55LzlIdi8rdjQvOS8wLzlmdy84L3UvOHZ0LysvMDl4VXZYaFF0VzRLVHMyVjFrdzRvVlRkWXBEWlgiLg0KInBWeHFobHhxaUV4a2ltS0J0TVBMMkZ0dmoyT1Y2YU91d3BxbHVseU4zY25PMXdBQVhRQUFaU004akU1WGpnQUFid0FBZVVSQllnQUEiLg0KImRBQUFkelpFYUU5d3dEWllwbVZ2aVI0OWpHMTJrQ2hGbWdZdWo2KzF4ZUxuN056ajZwbTIwb2VxeXBTMjEyU0pyYUN5eFpXeXo3UFciLg0KIjljL28vODduLzhEWDdNSFk3cS9LNUxmWDlhckIxc3JsLzIrZnpxMjkwVTE0cTdmQ3o2ZTJ5WHVtMzBGamxDbEhjNGVYcjZiSStiVEsiLg0KIjRyZlcrTlhlNk9ieS81U3Z6V1NIciticjhXdUtyUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBamdBQ3NKckRSSFNJQ0RRN0lNWERnSng4RXZadUljYlBCb29ad2JCd09NQWZNbVl3QkNBMnNFY05CakpDTVlBVExJT0xpb2tvY20iLg0KIkMxUXNrQUNsQ3hjR0JqN0VzTkhvUUFjaVNDQzFtTkFtakpnR0dFQlFvQkhpZ0tFTkJqaGNDQkFJelJvR0Zrd1FNTktueWdnUlNSQWciLg0KIjJCSHBEQlVlZXdSVjBQREhDcDRCU2dqdzBaR0h6SlFjRVZENElFSEp6WWtCZm80c2VZR2xEQndnVENBQVl2RkU0S0VCSllJNFVyUEYiLg0KIkN5SUlLK3dvWWpNd1FRSTZDb3I4bUtFbnhSMG5BaFlLakhKRlFZRUNrcVNrU2ExNjRJTTZMaExScnIzd3dhQkN1M2tQRktDbGRrQUEiLg0KIk93PT0iLA0KImV4dF9kb2MiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vOERBd0FBQS80Q0FnQUFBQUFBQUFBQUFBQU5SIi4NCiJXRXJjcnJDUVFDc2xRQTJ3T3dkWGtJRldOVkJBK25tZTRBWkN1b2xuUndrd0Y5UWdFT1BBRkcyMUErWjRzUUhPOTRyMWVKUlRKVm1xIi4NCiJNSU9yclBTV1daUmN6YTZrYW9sQkNPQjBXb3hSdWQwSkFEcz0iLA0KImV4dF9leGUiPT4NCiJSMGxHT0RsaEV3QU9BS0lBQUFBQUFQLy8vd0FBdmNiR3hvU0VoUC8vL3dBQUFBQUFBQ0g1QkFFQUFBVUFMQUFBQUFBVEFBNEFBQU03Ii4NCiJXTFRjVGlXU1FhdXRCRVExaFArZ2wyMVRLQVFBaW83UzhMeGFHOHgwUGJPY3JRZjR0TnU5d2E4V0hOS0tSbDRzbCt5OVlCdUFkRXF0Ii4NCiJ4aElBT3c9PSIsDQoiZXh0X2giPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ3YvLy93QUFBQUFBZ0lDQWdNREF3QUFBQUFBQUFBQUFBQU5CIi4NCiJXTFBjOVhDQVNTY1o4TWxLQ2NBUlJ3VmtFQUtDSUJLbU5xVnJxN3dwYk1tYmJiT25yZ0k4RitxM3c5R09RT01RR1p5Sk9zcG5Na0tvIi4NCiJXcS9Oa25iYlNnQUFPdz09IiwNCiJleHRfaHBwIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWd2Ly8vd0FBQUFBQWdJQ0FnTURBd0FBQUFBQUFBQUFBQUFORiIuDQoiV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUFHQ0lBS0VxYUZxcGJabm1rNDIvZDQzeXJvS21MQURsUEJpczZMd0tOQUZqN2pmYVdWUiIuDQoiVXFVYWduYkxkWmErWUZjQ0FEcz0iLA0KImV4dF9odGFjY2VzcyI9Pg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVA4QUFQOEEvd0FBZ0lBQWdQLy9BQUFBQUFBQUFBTTYiLg0KIldFWFcvazZSQUdzam1Gb1lnTkJiRXdqREIyNWRHWnpWQ0tnc1I4TGhTbnByUFE0MDZwYWZta0R3VXVtSXZKQm9SQUFBbEV1REV3cEoiLg0KIkFBQTciLA0KImV4dF9odG1sIj0+DQoiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzJ0cm5NM1AvRkJWaHJQTzlsNkl0b3l0MHloZ2srWHkvV0dwNHNYbC9pNlo0bWZkL0hOeiIuDQoiYy8vLy95SDVCQUVBQUE4QUxBQUFBQUFUQUJBQUFBU1Q4TWwzcXExbTZubUMvNEdoYkZvWEpFTzFDQU5EU29jaUdrYkFDSGkyMFUzUCIuDQoiS0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNpa3VrU3dXNGp5bWN1cFlGZ0lCcUwvTUs4S0JEayIuDQoiQmt4MkJYV0RmWDhURERhRkRBMEtCQWQ5Zm5JS0hYWUlCSmdIQlFPSGNnK1ZDaWtWQTV3THBZZ2JCS3VyRHF5c254TU9zN1Mxc3hJUiIuDQoiQURzPSIsDQoiZXh0X2pwZyI9Pg0KIlIwbEdPRGxoRUFBUUFETUFBQ0g1QkFFQUFBa0FMQUFBQUFBUUFCQUFnd0FBQVAvLy84REF3SUNBZ0lDQUFQOEFBQUQvQUlBQUFBQ0EiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJjY01oSms3MGo2SzNGdUZiR2JVTHdKY1VoamdIZ0FrVXFFZ0pORUVBZ3hFY2kiLg0KIkNpOEFMc0FMYVhDR0pLNW8xQUdTQnNJQWNBQmdqZ0NFd0FNRVhwMEJCTUxsL0E2eDVXWnRQZlEyZzYrMGo4VngrN2I0L05acWdmdGQiLg0KIkZ4RUFPdz09IiwNCiJleHRfanMiPT4NCiJSMGxHT0RkaEVBQVFBQ0lBQUN3QUFBQUFFQUFRQUlMLy8vOEFBQUNBZ0lEQXdNRC8vd0NBZ0FBQUFBQUFBQUFEVUNpNjNDRWd4aWJIIi4NCiJrMEFRc0cyMDBBUVVKQmdBb01paGo1ZG1JeG5NSnh0cXExZGRFMEVXT2hzRzE2bTlNb29BaVNXRW1UaXVDNFR3MkJCMEw4RmdJQWhzIi4NCiJhMDBBallZQmJjL285SGpObmlVQUFEcz0iLA0KImV4dF9sbmsiPT4NCiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRkFBTEFBQUFBQVFBQkFBaGdBQUFBQmlBR1BMTW1YTU0weS9KbGZGTEZTNksxckdMV2pPIi4NCiJOU211RlRXekdrQzVJRzNUT28vMVhFN0FKeDJvRDVYN1lvVHFVWXJ3VjMvbFRIVGFRWG5mUm1ER01ZWHJVaktRSHdBTUFHZk5SSHppIi4NCiJVd3c1Q0FBcUFET1pHa2FzTFhMWVFnaElCQk4zRFZHMk5XblBSbkRXUndCT0FCNXdGUUJCQUFBK0FGRzNOQWs1QlNHSEVVcXdNQUJrIi4NCiJBQUFnQUFBd0FBQmZBRGUwR3hlTEN4WmNERUs2SVV1eEtGakZMRTNBSjJISE1SS2lDUVdDQWdCbUFCcHREZytIQ0JaZURBcUZCV0RHIi4NCiJNeW1VRlFwV0JqMmZKaGR2RFFoT0JDNlhGM2ZkUjBPNklSMk9Ed0FaQUhQWlFDU1JFZ0FTQURhWEh3QUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZVpnRkJRUEFHRmhvY0Fnb0k3T2c4SkNnc0VCUUlXUFFDSmdrQ09rSktVUDVlWVVENlBrWk01Ii4NCiJOS0NLVURNeU5UZzNBZ2cyUzVlcVVFcEpEZ2NEQ0F4TVQwNmhnazI2dkF3VUZVaER0WXBDdXdaQnlCTVJSTXlDUndNR1JrVWcweElmIi4NCiIxbEFlQmlFQUdSZ1hFZzB0NFN3cm9DWWxEUkFuNFNtcEtDb1FKQy9ocVZBdU5Hemc4RTlSS0JFallCUzBKU2hHaDRVTW9ZQVNCaVVRIi4NCiJBRHM9IiwNCiJleHRfbG9nIj0+DQoiUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFnQUxBQUFBQUFRQUJBQWcvLy8vd0FBQU1EQXdJQ0FnSUNBQUFBQWdBQUEvLy8vQUFBQSIuDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUlFFS0V3SzZVeUJ6QzQ3NWdFQWx0SmtsTFJBV3piQ2xSaHJLNEx5NXlnNy93TiIuDQoiekxVYUxHQlFCVjJFZ0ZMVjR4RU9TU1d0OWdRUUJwUnBxeG9WTmFQS2tGYjVFaC9MbVVHekY1cUUzK0VNSWdJQU93PT0iLA0KImV4dF9waHAiPT4NCiJSMGxHT0RsaEVBQVFBSUFCQUFBQUFQLy8veXdBQUFBQUVBQVFBQUFDSmtRZW9NdWExdEJ4cUxIMzdIVTZhcnhaWUxkSVpNbWQwT3FwYUdleVlwcUpsUkcvcmx3QUFEcz0iLA0KImV4dF9wbCI9Pg0KIlIwbEdPRGxoRkFBVUFLTC9BUC80LzhEQXdIOS9BUC80QUwrL3Z3QUFBQUFBQUFBQUFDSDVCQUVBQUFFQUxBQUFBQUFVQUJRQVFBTW8iLg0KIkdMcmMzZ09BTVlSNE9PdWRyZWVnUmxCV1NKMWxxSzVzNjRMaldGM2NRTWpwSnBEZjYvL0FCQUE3IiwNCiJleHRfc3dmIj0+DQoiUjBsR09EbGhGQUFVQU1RUkFQK2NuUDlTVXM0QUFQK2NBUC9PQUlRQUFQOWpBTTVqbk02Y1k4NmNuS1hPOThiZXhwd0FBUDh4QVAvTyIuDQoibkFBQUFQLy8vLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQSIuDQoiQUJFQUxBQUFBQUFVQUJRQUFBVjdZQ1NPWkdtZTZQbXNiTXVxVUN6UDBBUEx6aEFidVBuUUF3ZUU1MmcwZkRLQ01HZ29PbTRRQjRHQSIuDQoiR0JnYVQyZ01RWWdWalVmU1QzWW9GR0tCUmdCcVBqZ1lERUZ4WFJwREdFSUE0eEFRUU5SMU5Ib01FQUFDQUJGaEl6OHJDbmNNQUdnQyIuDQoiTnlzTGtET1RTQ3NKTkRKYW5UVXFMcU0yS2FhbnFCRWhBRHM9IiwNCiJleHRfdGFyIj0+DQoiUjBsR09EbGhFQUFRQUdZQUFDSDVCQUVBQUVzQUxBQUFBQUFRQUJBQWhnQUFBQmxPQUZnZEFGQUFBSVlDVXdBOFp3QThaOURZNEpJQyIuDQoiV3YvLy93Q0lXQkUyQUFBeVVKaWNxSVNIbDRDQUFQRDQvK0RnOFBYNi81T1hwTDdIMCsvMi9hR21zVEl5TXRUYzVQLy9zZkw1LzhYRiIuDQoiSGdCWXB3QlVsZ0JXbjFCUUFHOGFJQUJRaFJiZm13RGNrditIMTFub3VFTGxyaXppcGYrVjNuUEEvNDBDVXptbS93QTRYaFZEQUFHRCIuDQoiVXlXZC8waXQvMXUxLzNOekFQOTUwUDk5MG1PNS83djE0WXp2elhMcndvWEkvNXZTLzdEay93QlhvdjlzeXZSandPaGF0UUNIVjE3cCIuDQoidW8wR1VRQlduUCsrOExtNUFQK2o1UUJVbEFDS1dnQTRiakpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWVlZ0FLQ2c0U0ZTeFlORXc0Z01nU09qNDhERkFjSEVVSVpSRVlvSkRRelBUNC9Bd2NRQ1FrZyIuDQoiR3dpcHFxa3FBeElhRlJnWER3TzF0cmNBdWJxN3ZJZUpEaXdoQmNQRXhBeVRsU0VaT3pvNUtUVXhNQ3N2REtPbFNSc2NIRHdlSGtNZCIuDQoiSFVjTXI3R3pCdWZvNkF5ODdMdStpaTBmQWZQMDlBdklFUjhaTmpjNFFTVW1Ub2dZc2NCYUFpVkZrQ2hZeUJDSWl3WGtaRDJvUjNGQiIuDQoidTR0TEFnRUFPdz09IiwNCiJleHRfdHh0Ij0+DQoiUjBsR09EbGhFd0FRQUtJQUFBQUFBUC8vLzhiR3hvU0VoUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQVRBQkFBQUFOSiIuDQoiU0FyRTNsREpGa2E5MXJLcEEvRGdKM0pCYVo2bHNDa1c2cXFrQjRqekY4QlM2NTQ0VzlaQVc0K2cyNlZXeEY5d2Rvd1ptem5sRXVwNyIuDQoiVXBQV0czSWc2SHEvWG1SanVad2tBQUE3IiwNCiJleHRfd3JpIj0+DQoiUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFnQUxBQUFBQUFRQUJBQWcvLy8vd0FBQUlDQWdNREF3SUNBQUFBQWdBQUEvLy8vQUFBQSIuDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUlJVTWhKa2IwQzZLMkh1RWlSY2RzQWZLRXhra0RnQm9WeHN0d0FBeXBkdW9hbyIuDQoiYTRTWFQwYzRCRjByVWhGQUVBUVFJOWRtZWJSRVc4eVhDNk54MlFJN0xyWWJ0cEpaTnN4Z3pXNm5MZHE0OWhJQkFEcz0iLA0KImV4dF94bWwiPT4NCiJSMGxHT0RsaEVBQVFBRVFBQUNINUJBRUFBQkFBTEFBQUFBQVFBQkFBaFAvLy93QUFBUEh4OFlhR2hqTm1tYWJLOEFBQW1RQUFnQUNBIi4NCiJnRE9aQURObS96T1ovelAvLzhEQXdEUE0vd0FBL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFWazRDQ09wQWlkMEFDc2JOc01xTnF1QWlBMEFKelNkbDhId01CT1VLZ2hFQXBiRVNCVUZRd0FCSUN4Ii4NCiJPQUFNeGViVGhtQTRFb2NhdGduWUtoYUpoeFVySUJOcmg3anl0L1BaYSswaFljL24wMlY0ZHpadWZZVi9QSUdKYm9LQlFrR1BrRUVRIi4NCiJJUUE3Ig0KKTsNCiRpbWdlcXVhbHMgPSBhcnJheSgNCiAgImV4dF90YXIiPT5hcnJheSgiZXh0X3RhciIsImV4dF9yMDAiLCJleHRfYWNlIiwiZXh0X2FyaiIsImV4dF9ieiIsImV4dF9iejIiLCJleHRfdGJ6IiwiZXh0X3RiejIiLCJleHRfdGd6IiwiZXh0X3V1IiwiZXh0X3h4ZSIsImV4dF96aXAiLCJleHRfY2FiIiwiZXh0X2d6IiwiZXh0X2lzbyIsImV4dF9saGEiLCJleHRfbHpoIiwiZXh0X3BiayIsImV4dF9yYXIiLCJleHRfdXVmIiksDQogICJleHRfcGhwIj0+YXJyYXkoImV4dF9waHAiLCJleHRfcGhwMyIsImV4dF9waHA0IiwiZXh0X3BocDUiLCJleHRfcGh0bWwiLCJleHRfc2h0bWwiLCJleHRfaHRtIiksDQogICJleHRfanBnIj0+YXJyYXkoImV4dF9qcGciLCJleHRfZ2lmIiwiZXh0X3BuZyIsImV4dF9qcGVnIiwiZXh0X2pmaWYiLCJleHRfanBlIiwiZXh0X2JtcCIsImV4dF9pY28iLCJleHRfdGlmIiwidGlmZiIpLA0KICAiZXh0X2h0bWwiPT5hcnJheSgiZXh0X2h0bWwiLCJleHRfaHRtIiksDQogICJleHRfYXZpIj0+YXJyYXkoImV4dF9hdmkiLCJleHRfbW92IiwiZXh0X212aSIsImV4dF9tcGciLCJleHRfbXBlZyIsImV4dF93bXYiLCJleHRfcm0iKSwNCiAgImV4dF9sbmsiPT5hcnJheSgiZXh0X2xuayIsImV4dF91cmwiKSwNCiAgImV4dF9pbmkiPT5hcnJheSgiZXh0X2luaSIsImV4dF9jc3MiLCJleHRfaW5mIiksDQogICJleHRfZG9jIj0+YXJyYXkoImV4dF9kb2MiLCJleHRfZG90IiksDQogICJleHRfanMiPT5hcnJheSgiZXh0X2pzIiwiZXh0X3ZicyIpLA0KICAiZXh0X2NtZCI9PmFycmF5KCJleHRfY21kIiwiZXh0X2JhdCIsImV4dF9waWYiKSwNCiAgImV4dF93cmkiPT5hcnJheSgiZXh0X3dyaSIsImV4dF9ydGYiKSwNCiAgImV4dF9zd2YiPT5hcnJheSgiZXh0X3N3ZiIsImV4dF9mbGEiKSwNCiAgImV4dF9tcDMiPT5hcnJheSgiZXh0X21wMyIsImV4dF9hdSIsImV4dF9taWRpIiwiZXh0X21pZCIpLA0KICAiZXh0X2h0YWNjZXNzIj0+YXJyYXkoImV4dF9odGFjY2VzcyIsImV4dF9odHBhc3N3ZCIsImV4dF9odCIsImV4dF9odGEiLCJleHRfc28iKQ0KKTsgIA0KDQppZiAoISRnZXRhbGwpIHsNCiAgaGVhZGVyKCJDb250ZW50LXR5cGU6IGltYWdlL2dpZiIpOw0KICBoZWFkZXIoIkNhY2hlLWNvbnRyb2w6IHB1YmxpYyIpOw0KICBoZWFkZXIoIkV4cGlyZXM6ICIuZGF0ZSgiciIsbWt0aW1lKDAsMCwwLDEsMSwyMDMwKSkpOw0KICBoZWFkZXIoIkNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9Ii4oNjAqNjAqMjQqNykpOw0KICBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIuZGF0ZSgiciIsZmlsZW10aW1lKF9fRklMRV9fKSkpOw0KICBmb3JlYWNoKCRpbWdlcXVhbHMgYXMgJGs9PiR2KSB7aWYgKGluX2FycmF5KCRpbWcsJHYpKSB7JGltZyA9ICRrOyBicmVhazt9fQ0KICBpZiAoZW1wdHkoJGltYWdlc1skaW1nXSkpIHskaW1nID0gInNtYWxsX3VuayI7fQ0KICBpZiAoaW5fYXJyYXkoJGltZywkZXh0X3RhcikpIHskaW1nID0gImV4dF90YXIiO30NCiAgZWNobyBiYXNlNjRfZGVjb2RlKCRpbWFnZXNbJGltZ10pOw0KfQ0KZWxzZSB7DQogIGZvcmVhY2goJGltZ2VxdWFscyBhcyAkYT0+JGIpIHtmb3JlYWNoICgkYiBhcyAkZCkge2lmICgkYSAhPSAkZCkge2lmICghZW1wdHkoJGltYWdlc1skZF0pKSB7ZWNobygiV2FybmluZyEgUmVtb3ZlIFwkaW1hZ2VzWyIuJGQuIl08YnI+Iik7fX19fQ0KICBuYXRzb3J0KCRpbWFnZXMpOw0KICAkayA9IGFycmF5X2tleXMoJGltYWdlcyk7DQogIGVjaG8gICI8Y2VudGVyPiI7DQogIGZvcmVhY2ggKCRrIGFzICR1KSB7ZWNobyAkdS4iOjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPSIuJHUuIlwiIGJvcmRlcj1cIjFcIj48YnI+Ijt9DQogIGVjaG8gIjwvY2VudGVyPiI7DQp9DQpleGl0Ow0KfQ0KDQppZiAoJHggPT0gImtvbmFrIikgew0KICAkaXAgPSAkX1NFUlZFUlsiUkVNT1RFX0FERFIiXTsNCiAgJG1zZyA9ICRfUE9TVFsnYmFja2Njb25ubXNnJ107DQogICRlbXNnID0gJF9QT1NUWydiYWNrY2Nvbm5tc2dlJ107DQogIGVjaG8oIjxjZW50ZXI+PGI+WyYjODIyNDtdIEJBQ0tDT05ORUNUIC0gU0FOSlVOR0FOIEpJV0EgVEVBTSBbJiM4MjI0O108L2I+PC9icj48L2JyPjxmb3JtIG5hbWU9Zm9ybSBtZXRob2Q9UE9TVD5Ib3N0OjxpbnB1dCB0eXBlPXRleHQgbmFtZT1iYWNrY29ubmVjdGlwIHNpemU9MTUgdmFsdWU9JGlwPiBQb3J0OiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9YmFja2Nvbm5lY3Rwb3J0IHNpemU9MTUgdmFsdWU9MjEyMTI+IFVzZTogPHNlbGVjdCBzaXplPTEgbmFtZT11c2U+PG9wdGlvbiB2YWx1ZT1QZXJsPlBMPC9vcHRpb24+PC9zZWxlY3Q+IDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1Db25uZWN0PjwvZm9ybT5rYWxhaWFuIHJ1biBkb2xvIGRpIGNvbnNvbGUgYXR3IHNlcnZlciBrYWxhaWFuIDxiPm5jIC1sdnAyMTIxMjwvYj4sIGRhbiBtYXN1a25hIGlwIHNhbWEgcG9ydG55YSBwZCBrZWR1YSBrb2xvbSBkaSBhdGFzLiA8Yj5iYXJ1IGthbGlhbiBrbGlrIGNvbm5lY3RueWE8L2I+Jzxicj48YnI+PC9jZW50ZXI+Iik7DQogIGVjaG8oIiRtc2ciKTsNCiAgZWNobygiJGVtc2ciKTsNCg0KfQ0KDQppZiAoJHggPT0gImNQIil7DQoJaWYgKCRfR0VUWydnbyddID09ICdnbycpeyANCiAgICBzZXRfdGltZV9saW1pdCgwKTsNCgkjIyMjIyMjIyMjIyMjIyMjIyMNCglAJHBhc3N3ZD1mb3BlbignL2V0Yy9wYXNzd2QnLCdyJyk7DQoJaWYgKCEkcGFzc3dkKSB7DQoJICAgZWNobyAiWy1dIEVycm9yIDogY291ZG4ndCByZWFkIC9ldGMvcGFzc3dkIjsNCgkgICBleGl0Ow0KCX0NCgkkcGF0aF90b19wdWJsaWM9YXJyYXkoKTsNCgkkdXNlcnM9YXJyYXkoKTsNCgkkcGF0aHRvY29uZj1hcnJheSgpOw0KCSRpPTA7DQoJDQoJd2hpbGUoIWZlb2YoJHBhc3N3ZCkpIHsNCgkgICRzdHI9ZmdldHMoJHBhc3N3ZCk7DQoJICBpZiAoJGk+MzUpIHsNCgkJJHBvcz1zdHJwb3MoJHN0ciwiOiIpOw0KCQkkdXNlcm5hbWU9c3Vic3RyKCRzdHIsMCwkcG9zKTsNCgkJJGRpcno9Ii9ob21lLyR1c2VybmFtZS9wdWJsaWNfaHRtbC8iOw0KCQlpZiAoKCR1c2VybmFtZSE9IiIpKSB7DQoJCQlpZiAoaXNfcmVhZGFibGUoJGRpcnopKSB7DQoJCQkJYXJyYXlfcHVzaCgkdXNlcnMsJHVzZXJuYW1lKTsNCgkJCQlhcnJheV9wdXNoKCRwYXRoX3RvX3B1YmxpYywkZGlyeik7DQoJCQl9DQoJCX0NCgkgIH0NCgkgICRpKys7DQoJfQ0KCSMjIyMjIyMjIyMjIyMjIyMjIyMNCgkNCgkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoJZnVuY3Rpb24gcmVhZF9kaXIoJHBhdGgsJHVzZXJuYW1lKSB7DQoJCWlmICgkaGFuZGxlID0gb3BlbmRpcigkcGF0aCkpIHsNCgkJCXdoaWxlIChmYWxzZSAhPT0gKCRmaWxlID0gcmVhZGRpcigkaGFuZGxlKSkpIHsNCgkJCQkgICRmcGF0aD0iJHBhdGgkZmlsZSI7DQoJCQkJICBpZiAoKCRmaWxlIT0nLicpIGFuZCAoJGZpbGUhPScuLicpKSB7DQoJCQkJCSBpZiAoaXNfcmVhZGFibGUoJGZwYXRoKSkgew0KCQkJCQkJJGRyPSIkZnBhdGgvIjsNCgkJCQkJCWlmIChpc19kaXIoJGRyKSkgew0KCQkJCQkJICAgcmVhZF9kaXIoJGRyLCR1c2VybmFtZSk7DQoJCQkJCQl9DQoJCQkJCQllbHNlIHsNCgkJCQkJCQkgaWYgKCgkZmlsZT09J2NvbmZpZy5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0nY29uZmlndXJhdGlvbi5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0nd3AtY29uZmlnLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdjb25maWcuaW5jLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdkYXRhYmFzZS5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0nY29uZi5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0nc2V0dGluZ3MucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J3NldHRpbmcucGhwJykNCgkJCQkJCW9yICgkZmlsZT09J2luYy5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0nY29ybi5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0nY29uZmlncy5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0na29uZmlnLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdkYmNvbmYucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2tvbmVrc2kucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2RiY29uZmlnLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdkYi5pbmMucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2RiX2Nvbm5lY3QucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2RiY29ubmVjdC5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0nZGItY29ubmVjdC5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0nY29uZmlndXJlLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdnbG9iYWwucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2Nvbm5lY3QucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2RiLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdjb25mX2RiLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdkYXRhYmFzZS5pbmMucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2RhdGFiYXNlLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdjb25uZWN0aW9uLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdjb25uZWN0aW9ucy5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0nY29uZmlndXJlLmNsYXNzLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdjb25maWcuY2xhc3MucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2NvbmZpZ3VyYXRpb24uY2xhc3MucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2RiLmNsYXNzLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdmaWxlX21hbmFnZXIucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J0xvY2FsU2V0dGluZ3MucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2ZpbGVtYW5hZ2VyLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdtYW5hZ2VyLnBocCcpDQogICAgICAgICAgICAgICAgICAgICAgICBvciAoJGZpbGU9PSdtYW5hZ2Vycy5waHAnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgb3IgKCRmaWxlPT0nY29ubmVjdC5pbmMucGhwJykNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yICgkZmlsZT09J2RiY29ubmVjdC5pbmMucGhwJykpIA0KCQkJCQkJCQkgew0KCQkJCQkJCQkkcGFzcz1nZXRfcGFzcygkZnBhdGgpOw0KCQkJCQkJCQlpZiAoJHBhc3MhPScnKSB7DQoJCQkJCQkJCSAgIGVjaG8gIlsrXSAkZnBhdGhcbiRwYXNzXG4iOw0KCQkJCQkJCQkgICBmdHBfY2hlY2soJHVzZXJuYW1lLCRwYXNzKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCSB9DQoJCQkJCQl9DQoJCQkJCSB9DQoJCQkJICB9DQoJCQl9DQoJCX0NCgl9DQoJDQoJZnVuY3Rpb24gZ2V0X3Bhc3MoJGxpbmspIHsNCgkJQCRjb25maWc9Zm9wZW4oJGxpbmssJ3InKTsNCgkJd2hpbGUoIWZlb2YoJGNvbmZpZykpIHsNCgkJCSRsaW5lPWZnZXRzKCRjb25maWcpOw0KCQkJaWYgKHN0cnN0cigkbGluZSwncGFzcycpIG9yIHN0cnN0cigkbGluZSwncGFzc3dvcmQnKSBvciBzdHJzdHIoJGxpbmUsJ3B3ZCcpIG9yIHN0cnN0cigkbGluZSwna29kZScpIG9yIHN0cnN0cigkbGluZSwnbXlwYXNzd29yZCcpIG9yIHN0cnN0cigkbGluZSwncGFzc3dkJykpIHsNCgkJCQlpZiAoc3RycnBvcygkbGluZSwnIicpKQ0KCQkJCSAgICRwYXNzPXN1YnN0cigkbGluZSwoc3RycG9zKCRsaW5lLCc9JykrMyksKHN0cnJwb3MoJGxpbmUsJyInKS0oc3RycG9zKCRsaW5lLCc9JykrMykpKTsNCgkJCQllbHNlDQoJCQkJICAgJHBhc3M9c3Vic3RyKCRsaW5lLChzdHJwb3MoJGxpbmUsJz0nKSszKSwoc3RycnBvcygkbGluZSwiJyIpLShzdHJwb3MoJGxpbmUsJz0nKSszKSkpOw0KCQkJCXJldHVybiAkcGFzczsNCgkJCX0NCgkJfQ0KCX0NCgkNCglmdW5jdGlvbiBmdHBfY2hlY2soJGxvZ2luLCRwYXNzKSB7DQoJCSBAJGZ0cD1mdHBfY29ubmVjdCgnMTI3LjAuMC4xJyk7DQoJCSBpZiAoJGZ0cCkgew0KCQkJQCRyZXM9ZnRwX2xvZ2luKCRmdHAsJGxvZ2luLCRwYXNzKTsNCgkJCWlmICgkcmVzKSB7DQoJCQkgICBlY2hvICdba05hIGdBbl0gJy4kbG9naW4uJzonLiRwYXNzLiIgIFcwMHRcbiI7DQoJCQl9DQoJCQllbHNlIGZ0cF9xdWl0KCRmdHApOw0KCQkgfQ0KCX0NCgkNCgllY2hvICI8YnI+PGJyPiI7DQoJZWNobyAiPHRleHRhcmVhIG5hbWU9J21haW5fd2luZG93JyBjb2xzPTEwMCByb3dzPTIwPiI7DQoJDQoJZWNobyAiWytdIEZvdW5kICIuc2l6ZW9mKCR1c2VycykuIiBlbnRyeXMgaW4gL2V0Yy9wYXNzd2RcbiI7DQoJZWNobyAiWytdIEZvdW5kICIuc2l6ZW9mKCRwYXRoX3RvX3B1YmxpYykuIiByZWFkYWJsZSBwdWJsaWNfaHRtbCBkaXJlY3Rvcmllc1xuIjsNCgkNCgllY2hvICJbfl0gU2VhcmNoaW5nIGZvciBwYXNzd29yZHMgaW4gY29uZmlnLiogZmlsZXMuLi5cblxuIjsNCglmb3JlYWNoICgkdXNlcnMgYXMgJHVzZXIpIHsNCgkJCSRwYXRoPSIvaG9tZS8kdXNlci9wdWJsaWNfaHRtbC8iOw0KCQkJcmVhZF9kaXIoJHBhdGgsJHVzZXIpOw0KCX0NCgkNCgllY2hvICJcblsrXSBVZGFoXG4iOw0KCQ0KCWVjaG8gIjwvdGV4dGFyZWE+PGJyPiI7DQoJfWVsc2UNCgllY2hvICc8Y2VudGVyPmNQYW5lbCBTY2FuPGJyPjxhIGhyZWY9IicuJHN1cmwuJ3g9Y1AmZ289Z28iPk9LRTwvYT4gfHwgPGEgaHJlZj0iJy4kc3VybC4nIj5CQUNLIFRPIEhPTUU8L2E+PC9jZW50ZXI+JzsNCn0NCmlmICgkeCA9PSAibG9nZXJhc2VyIil7DQpAZXJyb3JfcmVwb3J0aW5nKDApOw0Kc2V0X3RpbWVfbGltaXQoMCk7DQpzeXN0ZW0oImNsZWFyIik7DQoNCnNsZWVwKDEpOyAgDQpwcmludCAiXG4gTG9ncyBFcmFzZXIgU3RhcnRlZC4uLi4uLi4uLi5cIS8iOw0Kc2xlZXAoMik7DQoNCnsNCg0KZXhlYygicm0gLXJmIC90bXAvbG9ncyIpOw0KZXhlYygicm0gLXJmIC9yb290Ly5rc2hfaGlzdG9yeSIpOw0KZXhlYygicm0gLXJmIC9yb290Ly5iYXNoX2hpc3RvcnkiKTsNCmV4ZWMoInJtIC1yZiAvcm9vdC8uYmFzaF9sb2dvdXQiKTsNCmV4ZWMoInJtIC1yZiAvdXNyL2xvY2FsL2FwYWNoZS9sb2dzIik7DQpleGVjKCJybSAtcmYgL3Vzci9sb2NhbC9hcGFjaGUvbG9nIik7DQpleGVjKCJybSAtcmYgL3Zhci9hcGFjaGUvbG9ncyIpOw0KZXhlYygicm0gLXJmIC92YXIvYXBhY2hlL2xvZyIpOw0KZXhlYygicm0gLXJmIC92YXIvcnVuL3V0bXAiKTsNCmV4ZWMoInJtIC1yZiAvdmFyL2xvZ3MiKTsNCmV4ZWMoInJtIC1yZiAvdmFyL2xvZyIpOw0KZXhlYygicm0gLXJmIC92YXIvYWRtIik7DQpleGVjKCJybSAtcmYgL2V0Yy93dG1wIik7DQpleGVjKCJybSAtcmYgL2V0Yy91dG1wIik7DQpleGVjKCJybSAtcmYgJEhJU1RGSUxFIik7DQpleGVjKCJybSAtcmYgL3Zhci9sb2cvbGFzdGxvZyIpOw0KZXhlYygicm0gLXJmIC92YXIvbG9nL3d0bXAiKTsNCg0Kc2hlbGxfZXhlYygicm0gLXJmIC90bXAvbG9ncyIpOw0Kc2hlbGxfZXhlYygicm0gLXJmIC9yb290Ly5rc2hfaGlzdG9yeSIpOw0Kc2hlbGxfZXhlYygicm0gLXJmIC9yb290Ly5iYXNoX2hpc3RvcnkiKTsNCnNoZWxsX2V4ZWMoInJtIC1yZiAvcm9vdC8uYmFzaF9sb2dvdXQiKTsNCnNoZWxsX2V4ZWMoInJtIC1yZiAvdXNyL2xvY2FsL2FwYWNoZS9sb2dzIik7DQpzaGVsbF9leGVjKCJybSAtcmYgL3Vzci9sb2NhbC9hcGFjaGUvbG9nIik7DQpzaGVsbF9leGVjKCJybSAtcmYgL3Zhci9hcGFjaGUvbG9ncyIpOw0Kc2hlbGxfZXhlYygicm0gLXJmIC92YXIvYXBhY2hlL2xvZyIpOw0Kc2hlbGxfZXhlYygicm0gLXJmIC92YXIvcnVuL3V0bXAiKTsNCnNoZWxsX2V4ZWMoInJtIC1yZiAvdmFyL2xvZ3MiKTsNCnNoZWxsX2V4ZWMoInJtIC1yZiAvdmFyL2xvZyIpOw0Kc2hlbGxfZXhlYygicm0gLXJmIC92YXIvYWRtIik7DQpzaGVsbF9leGVjKCJybSAtcmYgL2V0Yy93dG1wIik7DQpzaGVsbF9leGVjKCJybSAtcmYgL2V0Yy91dG1wIik7DQpzaGVsbF9leGVjKCJybSAtcmYgJEhJU1RGSUxFIik7DQpzaGVsbF9leGVjKCJybSAtcmYgL3Zhci9sb2cvbGFzdGxvZyIpOw0Kc2hlbGxfZXhlYygicm0gLXJmIC92YXIvbG9nL3d0bXAiKTsNCg0KcGFzc3RocnUoInJtIC1yZiAvdG1wL2xvZ3MiKTsNCnBhc3N0aHJ1KCJybSAtcmYgL3Jvb3QvLmtzaF9oaXN0b3J5Iik7DQpwYXNzdGhydSgicm0gLXJmIC9yb290Ly5iYXNoX2hpc3RvcnkiKTsNCnBhc3N0aHJ1KCJybSAtcmYgL3Jvb3QvLmJhc2hfbG9nb3V0Iik7DQpwYXNzdGhydSgicm0gLXJmIC91c3IvbG9jYWwvYXBhY2hlL2xvZ3MiKTsNCnBhc3N0aHJ1KCJybSAtcmYgL3Vzci9sb2NhbC9hcGFjaGUvbG9nIik7DQpwYXNzdGhydSgicm0gLXJmIC92YXIvYXBhY2hlL2xvZ3MiKTsNCnBhc3N0aHJ1KCJybSAtcmYgL3Zhci9hcGFjaGUvbG9nIik7DQpwYXNzdGhydSgicm0gLXJmIC92YXIvcnVuL3V0bXAiKTsNCnBhc3N0aHJ1KCJybSAtcmYgL3Zhci9sb2dzIik7DQpwYXNzdGhydSgicm0gLXJmIC92YXIvbG9nIik7DQpwYXNzdGhydSgicm0gLXJmIC92YXIvYWRtIik7DQpwYXNzdGhydSgicm0gLXJmIC9ldGMvd3RtcCIpOw0KcGFzc3RocnUoInJtIC1yZiAvZXRjL3V0bXAiKTsNCnBhc3N0aHJ1KCJybSAtcmYgJEhJU1RGSUxFIik7DQpwYXNzdGhydSgicm0gLXJmIC92YXIvbG9nL2xhc3Rsb2ciKTsNCnBhc3N0aHJ1KCJybSAtcmYgL3Zhci9sb2cvd3RtcCIpOw0KDQoNCnN5c3RlbSgicm0gLXJmIC90bXAvbG9ncyIpOw0Kc2xlZXAoMik7DQpwcmludCAiRGVsZXRlZCBbK10uLi4vdG1wL2xvZ3MgXG4iOw0Kc2xlZXAoMik7DQoNCnN5c3RlbSgicm0gLXJmIC9yb290Ly5iYXNoX2hpc3RvcnkiKTsNCnNsZWVwKDIpOw0KcHJpbnQgIkRlbGV0ZWQgWytdLi4uL3Jvb3QvLmJhc2hfaGlzdG9yeSBcbiI7DQoNCnN5c3RlbSgicm0gLXJmIC9yb290Ly5rc2hfaGlzdG9yeSIpOw0Kc2xlZXAoMik7DQpwcmludCAiRGVsZXRlZCBbK10uLi4vcm9vdC8ua3NoX2hpc3RvcnkgXG4iOw0KDQpzeXN0ZW0oInJtIC1yZiAvcm9vdC8uYmFzaF9sb2dvdXQiKTsNCnNsZWVwKDIpOw0KcHJpbnQgIkRlbGV0ZWQgWytdLi4uL3Jvb3QvLmJhc2hfbG9nb3V0IFxuIjsNCg0Kc3lzdGVtKCJybSAtcmYgL3Vzci9sb2NhbC9hcGFjaGUvbG9ncyIpOw0Kc2xlZXAoMik7DQpwcmludCJEZWxldGVkIFsrXS4uLi91c3IvbG9jYWwvYXBhY2hlL2xvZ3MgXG4iOw0KDQpzeXN0ZW0oInJtIC1yZiAvdXNyL2xvY2FsL2FwYWNoZS9sb2ciKTsNCnNsZWVwKDIpOw0KcHJpbnQiRGVsZXRlZCBbK10uLi4vdXNyL2xvY2FsL2FwYWNoZS9sb2cgXG4iOw0KDQpzeXN0ZW0oInJtIC1yZiAvdmFyL2FwYWNoZS9sb2dzIik7DQpzbGVlcCgyKTsNCnByaW50IkRlbGV0ZWQgWytdLi4uL3Zhci9hcGFjaGUvbG9ncyBcbiI7DQoNCnN5c3RlbSgicm0gLXJmIC92YXIvYXBhY2hlL2xvZyIpOw0Kc2xlZXAoMik7DQpwcmludCJEZWxldGVkIFsrXS4uLi92YXIvYXBhY2hlL2xvZyBcbiI7DQoNCnN5c3RlbSgicm0gLXJmIC92YXIvcnVuL3V0bXAiKTsNCnNsZWVwKDIpOw0KcHJpbnQiRGVsZXRlZCBbK10uLi4vdmFyL3J1bi91dG1wIFxuIjsNCg0Kc3lzdGVtKCJybSAtcmYgL3Zhci9sb2dzIik7DQpzbGVlcCgyKTsNCnByaW50IkRlbGV0ZWQgWytdLi4uL3Zhci9sb2dzIFxuIjsNCg0Kc3lzdGVtKCJybSAtcmYgL3Zhci9sb2ciKTsNCnNsZWVwKDIpOw0KcHJpbnQiRGVsZXRlZCBbK10uLi4vdmFyL2xvZyBcbiI7DQoNCnN5c3RlbSgicm0gLXJmIC92YXIvYWRtIik7DQpzbGVlcCgyKTsNCnByaW50IkRlbGV0ZWQgWytdLi4uL3Zhci9hZG0gXG4iOw0KDQpzeXN0ZW0oInJtIC1yZiAvZXRjL3d0bXAiKTsNCnNsZWVwKDIpOw0KcHJpbnQiRGVsZXRlZCBbK10uLi4vZXRjL3d0bXAgXG4iOw0KDQpzeXN0ZW0oInJtIC1yZiAvZXRjL3V0bXAiKTsNCnNsZWVwKDIpOw0KcHJpbnQiRGVsZXRlZCBbK10uLi4vZXRjL3V0bXAgXG4iOw0KDQpzeXN0ZW0oInJtIC1yZiAkSElTVEZJTEUiKTsNCnNsZWVwKDIpOw0KcHJpbnQiRGVsZXRlZCBbK10uLi4kSElTVEZJTEUgXG4iOyANCg0Kc3lzdGVtKCJybSAtcmYgL3Zhci9sb2cvbGFzdGxvZyIpOw0Kc2xlZXAoMik7DQpwcmludCJEZWxldGVkIFsrXS4uLi92YXIvbG9nL2xhc3Rsb2cgXG4iOw0KDQpzeXN0ZW0oInJtIC1yZiAvdmFyL2xvZy93dG1wIik7DQpzbGVlcCgyKTsNCnByaW50IkRlbGV0ZWQgWytdLi4uL3Zhci9sb2cvd3RtcCBcbiI7DQoNCnNsZWVwKDQpOw0KDQpwcmludCAiVGFrZSBDYXJlIG9mIHlvdXIgQXNzIHhEIC0gU0FOSlVOR0FOIEpJV0EgVEVBTVxuIjsNCg0KfQ0KfQ0KaWYgKCR4ID09ICJjcGFuZWxjcmFjayIpew0KZWNobyANCiI8aHRtbD4NCjxoZWFkPg0KPC9oZWFkPg0KPHN0eWxlPg0KYm9keXttYXJnaW46MHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtc2l6ZToxMHB4O2NvbG9yOiNGRkZGRkY7Zm9udC1mYW1pbHk6VmVyZGFuYSxBcmlhbDtiYWNrZ3JvdW5kLWNvbG9yOiMzYTNhM2E7c2Nyb2xsYmFyLWZhY2UtY29sb3I6ICMzMDMwMzA7c2Nyb2xsYmFyLWhpZ2hsaWdodC1jb2xvcjogIzVkNWQ1ZDtzY3JvbGxiYXItc2hhZG93LWNvbG9yOiAjMTIxMjEyO3Njcm9sbGJhci0zZGxpZ2h0LWNvbG9yOiAjM2EzYTNhO3Njcm9sbGJhci1hcnJvdy1jb2xvcjogIzlkOWQ5ZDtzY3JvbGxiYXItdHJhY2stY29sb3I6ICMzYTNhM2E7c2Nyb2xsYmFyLWRhcmtzaGFkb3ctY29sb3I6ICMzYTNhM2E7fQ0KaW5wdXQsDQoua2JydG0sc2VsZWN0e2JhY2tncm91bmQ6IzMwMzAzMDtjb2xvcjojRkZGRkZGO2ZvbnQtZmFtaWx5OlZlcmRhbmEsQXJpYWw7Zm9udC1zaXplOjEwcHg7dmVydGljYWwtYWxpZ246bWlkZGxlOyBoZWlnaHQ6MTg7IGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjNWQ1ZDVkOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICMxMjEyMTI7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICMxMjEyMTI7IGJvcmRlci10b3A6MXB4IHNvbGlkICM1ZDVkNWQ7fQ0KYnV0dG9ue2JhY2tncm91bmQtY29sb3I6ICM2NjY2NjY7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fQ0KYm9keSx0ZCx0aCB7IGZvbnQtZmFtaWx5OiB2ZXJkYW5hOyBjb2xvcjogI2Q5ZDlkOTsgZm9udC1zaXplOiAxMXB4O31ib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDt9DQphOmFjdGl2ZSB7IG91dGxpbmU6IG5vbmU7IH0NCmE6Zm9jdXMgeyAtbW96LW91dGxpbmUtc3R5bGU6IG5vbmU7IH0NCjwvc3R5bGU+DQogIDxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+DQogIDwhLS0NCiAgICAgICBBOmxpbmsge3RleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6I2NjY2NjYyB9DQogICAgICAgQTp2aXNpdGVkIHt0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiNjY2NjY2MgfQ0KICAgICAgIGE6aG92ZXIge3RleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6IzAwMDAwMH0NCiAgLS0+DQo8L3N0eWxlPiI7ID8+DQo8P3BocA0KDQpAaW5pX3NldCgnbWVtb3J5X2xpbWl0JywgMTAwMDAwMDAwMDAwMCk7DQokY29ubmVjdF90aW1lb3V0PTU7DQpAc2V0X3RpbWVfbGltaXQoMCk7DQokc3VibWl0ID0gJF9SRVFVRVNUWydzdWJtaXQnXTsNCiR1c2VycyA9ICRfUkVRVUVTVFsndXNlcnMnXTsNCiRwYXNzID0gJF9SRVFVRVNUWydwYXNzd29yZHMnXTsNCiR0YXJnZXQgPSAkX1JFUVVFU1RbJ3RhcmdldCddOw0KJG9wdGlvbiA9ICRfUkVRVUVTVFsnb3B0aW9uJ107DQokcGFnZSA9ICRfR0VUWydwYWdlJ107DQoNCmlmKCR0YXJnZXQgPT0gJycpew0KJHRhcmdldCA9ICdsb2NhbGhvc3QnOw0KfQ0KPz4NCg0KPD9waHANCiBwcmludCAiPGJyPjxicj48YnI+PGNlbnRlcj48VEFCTEUgc3R5bGU9J0JPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UnIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD0nNzAlJyBiZ0NvbG9yPSMzMDMwMzAgYm9yZGVyQ29sb3JMaWdodD0jNjY2NjY2IGJvcmRlcj0xPjx0cj48dGQgd2lkdGg9JzcwJSc+DQo8YnI+PGI+PGNlbnRlcj48YSBocmVmPSc/eD1jcGFuZWxjcmFjayZwYWdlPWJpbyc+IEFCT1VUIFRPT0xTIDwvYT4gLSA8YSBocmVmPSc/eD1jcGFuZWxjcmFjayZwYWdlPWNyYWNrJz4gQlJVVEUgPC9hPiAtIDxhIGhyZWY9Jz94PWNwYW5lbGNyYWNrJnBhZ2U9dXNlcnMnPiBHUkFCIFVTRVJTIDwvYT48YnI+PGJyPjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPiI7DQogaWYgKCAkcGFnZSA9PSAnYmlvJyApew0KcHJpbnQgDQoiPGJyPjxicj48VEFCTEUgc3R5bGU9J0JPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UnIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD0nNDAlJ2JnQ29sb3I9IzMwMzAzMCBib3JkZXJDb2xvckxpZ2h0PSM2NjY2NjYgYm9yZGVyPTE+PHRyPjx0ZD4NCjxicj48Yj5QbGVhc2UgZW50ZXIgeW91ciBVU0VSTkFNRSBhbmQgUEFTU1dPUkQgdG8gbG9nb248YnI+DQp1c2VyPGJyPg0KMjIwICtvazxicj4NCnBhc3MgKioqKioqKio8YnI+DQoyMjAgK29rIGxvZ2luIHN1Y2Nlc3NmdWw8YnI+DQpbIHJvb3RAc3luY2hyb25pemVyIF0jIGluZm88Yj48YnI+PGZvbnQgZmFjZT10YWhvbWE+PGJyPg0KPGZvbnQgY29sb3I9J3JlZCcgPiBjUGFuZWwgY3JhY2tlciB2ZXJzaW9uIDogMS4wIDwvZm9udD48Yj48YnI+PGJyPg0KUG93ZXJmdWwgdG9vbCAsIGZ0cCBhbmQgY1BhbmVsIGJydXRlIGZvcmNlciAsIHBocCA1LjIuOSBzYWZlX21vZGUgJiBvcGVuX2Jhc2VkaXIgYnlwYXNzZXIgLi4uIG1vcmUgc3R1ZmYgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV4dCB2ZXJzaW9uPGJyPg0KT3VyIHdlYnNpdGUgLCA8YSBocmVmPSdodHRwOi8vd3d3LnN5bmNocm9uaXplci50ayc+IHd3dy5zeW5jaHJvbml6ZXIudGs8L2E+PGJyPg0KPC9jZW50ZXI+PGJyPjwvdGQ+PC90cj48L3RhYmxlPiI7DQogfWVsc2VpZiggJHBhZ2UgPT0gJ2NyYWNrJyl7DQogLy8gQXJpYS1TZWN1cml0eSBUZWFtIFtQZXJzaWFuIFNlY3VyaXR5IE5ldHdvcmtdDQpAaW5pX3NldCgnbWVtb3J5X2xpbWl0JywgMTAwMDAwMDAwMDAwMCk7DQokY29ubmVjdF90aW1lb3V0PTU7DQpAc2V0X3RpbWVfbGltaXQoMCk7DQokc3VibWl0ID0gJF9SRVFVRVNUWydzdWJtaXQnXTsNCiR1c2VycyA9ICRfUkVRVUVTVFsndXNlcnMnXTsNCiRwYXNzID0gJF9SRVFVRVNUWydwYXNzd29yZHMnXTsNCiR0YXJnZXQgPSAkX1JFUVVFU1RbJ3RhcmdldCddOw0KJG9wdGlvbiA9ICRfUkVRVUVTVFsnb3B0aW9uJ107DQppZigkdGFyZ2V0ID09ICcnKXsNCiR0YXJnZXQgPSAnbG9jYWxob3N0JzsNCn0NCnByaW50ICIgPGRpdiBhbGlnbj0nY2VudGVyJz4NCjxmb3JtIG1ldGhvZD0ncG9zdCcgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICMwMDAwMDAnPjxicj48YnI+DQo8VEFCTEUgc3R5bGU9J0JPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UnIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD0nNDAlJyBiZ0NvbG9yPSMzMDMwMzAgYm9yZGVyQ29sb3JMaWdodD0jNjY2NjY2IGJvcmRlcj0xPjx0cj48dGQ+DQo8Yj4gVGFyZ2V0ICA6IDwvZm9udD48aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ndGFyZ2V0JyBzaXplPScxNicgdmFsdWU9ICR0YXJnZXQgc3R5bGU9J2JvcmRlcjogZm9udC1mYW1pbHk6VmVyZGFuYTsgZm9udC13ZWlnaHQ6Ym9sZDsnPjwvcD48L2ZvbnQ+PC9iPjwvcD4NCjxkaXYgYWxpZ249J2NlbnRlcic+PGJyPg0KPFRBQkxFIHN0eWxlPSdCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlJyBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9JzUwJScgYmdDb2xvcj0jMzAzMDMwIGJvcmRlckNvbG9yTGlnaHQ9IzY2NjY2NiBib3JkZXI9MT4NCjx0cj4NCjx0ZCBhbGlnbj0nY2VudGVyJz4NCjxiPlVzZXJuYW1lPC9iPjwvdGQ+DQo8dGQ+DQo8cCBhbGlnbj0nY2VudGVyJz4NCjxiPlBhc3N3b3JkPC9iPjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjxwIGFsaWduPSdjZW50ZXInPg0KPHRleHRhcmVhIHJvd3M9JzIwJyBuYW1lPSd1c2VycycgY29scz0nMjUnIHN0eWxlPSdib3JkZXI6IDJweCBzb2xpZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMwJz4kdXNlcnM8L3RleHRhcmVhPg0KPHRleHRhcmVhIHJvd3M9JzIwJyBuYW1lPSdwYXNzd29yZHMnIGNvbHM9JzI1JyBzdHlsZT0nYm9yZGVyOiAycHggc29saWQgIzFEMUQxRDsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgY29sb3I6I0MwQzBDMCc+JHBhc3M8L3RleHRhcmVhPjxicj4NCjxicj4gICAgICAgICAgICAgICAgICAgICAgICAgDQo8Yj5PcHRpb25zIDogPC9zcGFuPjxpbnB1dCBuYW1lPSdvcHRpb24nIHZhbHVlPSdjcGFuZWwnIHN0eWxlPSdmb250LXdlaWdodDogNzAwOycgY2hlY2tlZCB0eXBlPSdyYWRpbyc+IGNQYW5lbCANCjxpbnB1dCBuYW1lPSdvcHRpb24nIHZhbHVlPSdmdHAnIHN0eWxlPSdmb250LXdlaWdodDogNzAwOycgdHlwZT0ncmFkaW8nPiBmdHAgPT0+IDxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSdicnV0ZScgbmFtZT0nc3VibWl0JyA+PC9wPg0KPC90ZD48L3RyPjwvdGFibGU+PC90ZD48L3RyPjwvZm9ybT48cCBhbGlnbj0gJ2xlZnQnPiI7DQo/Pg0KPD9waHANCmZ1bmN0aW9uIGZ0cF9jaGVjaygkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl7DQokY2ggPSBjdXJsX2luaXQoKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICJmdHA6Ly8kaG9zdCIpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQkFTSUMpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZUUExJU1RPTkxZLCAxKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSUFdELCAiJHVzZXI6JHBhc3MiKTsNCmN1cmxfc2V0b3B0ICgkY2gsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsICR0aW1lb3V0KTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GQUlMT05FUlJPUiwgMSk7DQokZGF0YSA9IGN1cmxfZXhlYygkY2gpOw0KaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMjggKSB7DQoNCnByaW50ICI8Yj4gRXJyb3IgOiBDb25uZWN0aW9uIHRpbWVkIG91dCAsIG1ha2UgY29uZmlkZW5jZSBhYm91dCB2YWxpZGF0aW9uIG9mIHRhcmdldCAhPC9iPiI7DQpleGl0O30NCg0KZWxzZWlmICggY3VybF9lcnJubygkY2gpID09IDAgKXsNCg0KcHJpbnQgDQoiPGI+WyByb290QGg0a3VyZC5jb20gXSMgPC9iPg0KPGI+IEF0dGFja2luZyBoYXMgYmVlbiBkb25lICwgZm91bmQgdXNlcm5hbWUgLCA8Zm9udCBjb2xvcj0nI0ZGMDAwMCc+ICR1c2VyIDwvZm9udD4gYW5kIHBhc3N3b3JkICwgDQo8Zm9udCBjb2xvcj0nI0ZGMDAwMCc+ICRwYXNzIDwvZm9udD48L2I+PGJyPiI7fWN1cmxfY2xvc2UoJGNoKTt9DQoNCmZ1bmN0aW9uIGNwYW5lbF9jaGVjaygkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl7DQokY2ggPSBjdXJsX2luaXQoKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vJGhvc3Q6MjA4MiIpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQkFTSUMpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0QsICIkdXNlcjokcGFzcyIpOw0KY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsNCiRkYXRhID0gY3VybF9leGVjKCRjaCk7DQppZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAyOCApIHsgDQpwcmludCAiPGI+IEVycm9yIDogQ29ubmVjdGlvbiB0aW1lZCBvdXQgLCBtYWtlIGNvbmZpZGVuY2UgYWJvdXQgdmFsaWRhdGlvbiBvZiB0YXJnZXQgITwvYj4iOw0KZXhpdDt9DQplbHNlaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMCApew0KDQpwcmludCANCiI8Yj5bIHJvb3RAaDRrdXJkLmNvbSBdIyA8L2I+DQo8Yj5BdHRhY2tpbmcgaGFzIGJlZW4gZG9uZSAsIGZvdW5kIHVzZXJuYW1lICwgPGZvbnQgY29sb3I9JyNGRjAwMDAnPiAkdXNlciA8L2ZvbnQ+IGFuZCBwYXNzd29yZCAsIA0KPGZvbnQgY29sb3I9JyNGRjAwMDAnPiAkcGFzcyA8L2ZvbnQ+PC9iPjxicj4iO31jdXJsX2Nsb3NlKCRjaCk7fQ0KDQppZihpc3NldCgkc3VibWl0KSAmJiAhZW1wdHkoJHN1Ym1pdCkpew0KDQokdXNlcmxpc3QgPSBleHBsb2RlICgiXG4iICwgJHVzZXJzICk7DQokcGFzc2xpc3QgPSBleHBsb2RlICgiXG4iICwgJHBhc3MgKTsNCnByaW50ICI8Yj5bIHJvb3RAaDRrdXJkLmNvbSBdIyBBdHRhY2tpbmcgLi4uPC9mb250PjwvYj48YnI+IjsNCmZvcmVhY2ggKCR1c2VybGlzdCBhcyAkdXNlcikgew0KJF91c2VyID0gdHJpbSgkdXNlcik7DQpmb3JlYWNoICgkcGFzc2xpc3QgYXMgJHBhc3N3b3JkICkgew0KJF9wYXNzID0gdHJpbSgkcGFzc3dvcmQpOw0KaWYoJG9wdGlvbiA9PSAiZnRwIil7DQpmdHBfY2hlY2soJHRhcmdldCwkX3VzZXIsJF9wYXNzLCRjb25uZWN0X3RpbWVvdXQpOw0KfQ0KaWYgKCRvcHRpb24gPT0gImNwYW5lbCIpDQp7DQpjcGFuZWxfY2hlY2soJHRhcmdldCwkX3VzZXIsJF9wYXNzLCRjb25uZWN0X3RpbWVvdXQpOw0KfQ0KfQ0KfQ0KfQ0KfWVsc2VpZiAoICRwYWdlID09ICd1c2Vycycpew0KZWNobyAiPGJyPjxicj48VEFCTEUgc3R5bGU9J0JPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UnIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD0nNDAlJ2JnQ29sb3I9IzMwMzAzMCBib3JkZXJDb2xvckxpZ2h0PSM2NjY2NjYgYm9yZGVyPTE+PHRyPjx0ZD4iOw0KZWNobyAnPHA+PGZvcm0gbmFtZT0iZm9ybSIgYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZpbGUiIHNpemU9IjUwIiB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRmaWxlKS4nIj48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJoYXJkc3R5bGV6IiB2YWx1ZT0iZ3JhYiAhIj48L2Zvcm0+JzsNCiRmaWxlID0gJF9QT1NUWydmaWxlJ107DQokbGV2ZWw9MDsNCmlmKCFmaWxlX2V4aXN0cygiZmlsZToiKSkNCiAgICBAbWtkaXIoImZpbGU6Iik7DQpAY2hkaXIoImZpbGU6Iik7DQokbGV2ZWwrKzsNCg0KJGhhcmRzdHlsZSA9IEBleHBsb2RlKCIvIiwgJGZpbGUpOyAvLyBBIFIgSSBBIA0KDQpmb3IoJGE9MDskYTxjb3VudCgkaGFyZHN0eWxlKTskYSsrKXsNCiAgICBpZighZW1wdHkoJGhhcmRzdHlsZVskYV0pKXsNCiAgICAgICAgaWYoIWZpbGVfZXhpc3RzKCRoYXJkc3R5bGVbJGFdKSkgDQogICAgICAgICAgICBAbWtkaXIoJGhhcmRzdHlsZVskYV0pOw0KICAgICAgICBAY2hkaXIoJGhhcmRzdHlsZVskYV0pOw0KICAgICAgICAkbGV2ZWwrKzsNCiAgICB9DQp9DQp3aGlsZSgkbGV2ZWwtLSkgY2hkaXIoIi4uIik7DQokY2ggPSBjdXJsX2luaXQoKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICJmaWxlOmZpbGU6Ly8vIi4kZmlsZSk7DQplY2hvICI8dGV4dGFyZWEgcm93cz0nMzAnIGNvbHM9JzEyMCcgc3R5bGU9J2JvcmRlcjogMnB4IHNvbGlkICMxRDFEMUQ7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IGNvbG9yOiNDMEMwQzAnID4iOw0KaWYoRkFMU0U9PWN1cmxfZXhlYygkY2gpKQ0KZGllKCdTb3JyeS4uLiBGaWxlICcuaHRtbHNwZWNpYWxjaGFycygkZmlsZSkuJyBkb2VzbnQgZXhpc3RzIG9yIHlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMuJyk7DQplY2hvICcgPC90ZXh0YXJlYT4gPC9GT05UPic7DQpjdXJsX2Nsb3NlKCRjaCk7DQpwcmludCAnPC90YWJsZT4nOw0KfQ0KfQ0KaWYgKCR4ID09ICJjb25ma2lsbGVyIil7DQoNCiRoZWFkID0gJw0KPGh0bWw+DQo8aGVhZD4NCjwvc2NyaXB0Pg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KDQo8U1RZTEU+DQpib2R5IHsNCmZvbnQtZmFtaWx5OiBUYWhvbWENCn0NCnRyIHsNCkJPUkRFUjogZGFzaGVkIDFweCAjMzMzOw0KY29sb3I6ICNGRkY7DQp9DQp0ZCB7DQpCT1JERVI6IGRhc2hlZCAxcHggIzMzMzsNCmNvbG9yOiAjRkZGOw0KfQ0KLnRhYmxlMSB7DQpCT1JERVI6IDBweCBCbGFjazsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KY29sb3I6ICNGRkY7DQp9DQoudGQxIHsNCkJPUkRFUjogMHB4Ow0KQk9SREVSLUNPTE9SOiAjMzMzMzMzOw0KZm9udDogN3B0IFZlcmRhbmE7DQpjb2xvcjogR3JlZW47DQp9DQoudHIxIHsNCkJPUkRFUjogMHB4Ow0KQk9SREVSLUNPTE9SOiAjMzMzMzMzOw0KY29sb3I6ICNGRkY7DQp9DQp0YWJsZSB7DQpCT1JERVI6IGRhc2hlZCAxcHggIzMzMzsNCkJPUkRFUi1DT0xPUjogIzMzMzMzMzsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KY29sb3I6ICNGRkY7DQp9DQppbnB1dCB7DQpib3JkZXIJCQk6IGRhc2hlZCAxcHg7DQpib3JkZXItY29sb3IJCTogIzMzMzsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KZm9udDogOHB0IFZlcmRhbmE7DQpjb2xvcjogd2hpdGU7DQp9DQpzZWxlY3Qgew0KQk9SREVSLVJJR0hUOiAgQmxhY2sgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgI0RGMDAwMCAxcHggc29saWQ7DQpCT1JERVItTEVGVDogICAjREYwMDAwIDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006IEJsYWNrIDFweCBzb2xpZDsNCkJPUkRFUi1jb2xvcjogI0ZGRjsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KZm9udDogOHB0IFZlcmRhbmE7DQpjb2xvcjogUmVkOw0KfQ0Kc3VibWl0IHsNCkJPUkRFUjogIGJ1dHRvbmhpZ2hsaWdodCAycHggb3V0c2V0Ow0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQp3aWR0aDogMzAlOw0KY29sb3I6ICNGRkY7DQp9DQp0ZXh0YXJlYSB7DQpib3JkZXIJCQk6IGRhc2hlZCAxcHggIzMzMzsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KZm9udDogRml4ZWRzeXMgYm9sZDsNCmNvbG9yOiAjOTk5Ow0KfQ0KQk9EWSB7DQoJU0NST0xMQkFSLUZBQ0UtQ09MT1I6IEJsYWNrOyBTQ1JPTExCQVItSElHSExJR0hULWNvbG9yOiAjRkZGOyBTQ1JPTExCQVItU0hBRE9XLWNvbG9yOiAjRkZGOyBTQ1JPTExCQVItM0RMSUdIVC1jb2xvcjogI0ZGRjsgU0NST0xMQkFSLUFSUk9XLUNPTE9SOiBCbGFjazsgU0NST0xMQkFSLVRSQUNLLWNvbG9yOiAjRkZGOyBTQ1JPTExCQVItREFSS1NIQURPVy1jb2xvcjogI0ZGRg0KbWFyZ2luOiAxcHg7DQpjb2xvcjogd2hpdGU7DQpiYWNrZ3JvdW5kLWNvbG9yOiBCbGFjazsNCn0NCi5tYWluIHsNCm1hcmdpbgkJCTogLTI4N3B4IDBweCAwcHggLTQ5MHB4Ow0KQk9SREVSOiBkYXNoZWQgMXB4ICMzMzM7DQpCT1JERVItQ09MT1I6ICMzMzMzMzM7DQp9DQoudHQgew0KYmFja2dyb3VuZC1jb2xvcjogQmxhY2s7DQp9DQoNCkE6bGluayB7DQoJQ09MT1I6IFdoaXRlOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6dmlzaXRlZCB7DQoJQ09MT1I6IFdoaXRlOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6aG92ZXIgew0KCWNvbG9yOiBSZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTphY3RpdmUgew0KCWNvbG9yOiBSZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KPC9TVFlMRT4NCjxzY3JpcHQgbGFuZ3VhZ2U9XCdqYXZhc2NyaXB0XCc+DQpmdW5jdGlvbiBoaWRlX2RpdihpZCkNCnsNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ25vbmVcJzsNCiAgZG9jdW1lbnQuY29va2llPWlkK1wnPTA7XCc7DQp9DQpmdW5jdGlvbiBzaG93X2RpdihpZCkNCnsNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCc7DQogIGRvY3VtZW50LmNvb2tpZT1pZCtcJz0xO1wnOw0KfQ0KZnVuY3Rpb24gY2hhbmdlX2RpdnN0KGlkKQ0Kew0KICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPT0gXCdub25lXCcpDQogICAgc2hvd19kaXYoaWQpOw0KICBlbHNlDQogICAgaGlkZV9kaXYoaWQpOw0KfQ0KPC9zY3JpcHQ+JzsgPz4NCjxodG1sPg0KCTxoZWFkPg0KCQk8P3BocCANCgkJZWNobyAkaGVhZCA7DQoNCj8+DQo8Ym9keSBiZ2NvbG9yPWJsYWNrPjxoMyBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxmb250ICBzaXplPTIgZmFjZT0iY29taWMgc2FucyBtcyI+PGRpdiBhbGlnbj1jZW50ZXI+PHRhYmxlPjx0cj48dGQ+PGNlbnRlcj5DT05GSUdVUkFUSU9OIEtJTExFUiAtIFNBTkpVTkdBTiBKSVdBIFRFQU08L2NlbnRlcj4gPC9mb250Pjxicj48L3RkPjwvdHI+PC90YWJsZT4NCjxmb3JtIG1ldGhvZD1wb3N0Pjxmb250IGNvbG9yPXdoaXRlIHNpemU9MiBmYWNlPSJjb21pYyBzYW5zIG1zIj5USEUgQlVUVE9OIEdJVkVOIEJFTE9XIEdFTkVSQVRFUyBQSFAuSU5JIEZJTEU8L2ZvbnQ+PHA+DQo8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1pbmkgdmFsdWU9IkdFTkVSQVRFIFBIUC5JTkkgRklMRSIgLz48L2Zvcm0+DQo8Zm9ybSBtZXRob2Q9cG9zdD48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTIgZmFjZT0iY29taWMgc2FucyBtcyI+VEhFIEJVVFRPTiBHSVZFTiBCRUxPVyBFWFRSQUNUIFVTRVJOQU1FUyBGT1IgU1lNTElOSzwvZm9udD48cD4NCgk8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT0idXNyZSIgdmFsdWU9IkVYVFJBQ1QgVVNFUk5BTUUiIC8+PC9mb3JtPg0KCQ0KCTw/cGhwDQoJaWYoaXNzZXQoJF9QT1NUWydpbmknXSkpDQoJew0KCQkNCgkJJHI9Zm9wZW4oJ3BocC5pbmknLCd3Jyk7DQoJCSRycj0iIGRpc2JhbGVfZnVuY3Rpb25zPW5vbmUgIjsNCgkJZndyaXRlKCRyLCRycik7DQoJCSRsaW5rPSI8YSBocmVmPXBocC5pbmk+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0yIGZhY2U9XCJjb21pYyBzYW5zIG1zXCI+PHU+T1BFTiBUSElTIExJTksgT04gTkVXIFRBQiBUTyBSVU4gUEhQLklOSTwvdT48L2ZvbnQ+PC9hPiI7DQoJCWVjaG8gJGxpbms7DQoJCQ0KCQl9DQoJDQoJDQoJDQoJPz4NCgkNCgkNCgk8P3BocA0KCWlmKGlzc2V0KCRfUE9TVFsndXNyZSddKSl7DQoJCT8+PGZvcm0gbWV0aG9kPXBvc3Q+DQoJPHRleHRhcmVhIHJvd3M9MTAgY29scz01MCBuYW1lPXVzZXI+PD9waHAgICR1c2Vycz1maWxlKCIvZXRjL3Bhc3N3ZCIpOw0KZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpDQp7DQokc3RyPWV4cGxvZGUoIjoiLCR1c2VyKTsNCmVjaG8gJHN0clswXS4iXG4iOw0KfQ0KDQo/PjwvdGV4dGFyZWE+PGJyPjxicj4NCgk8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdSB2YWx1ZT0iTEVUUyBTVEFSVCBCUk8gOikiIC8+PC9mb3JtPg0KCTw/cGhwIH0gPz4NCgk8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCgllY2hvICI8Zm9udCBjb2xvcj1yZWQgc2l6ZT0yIGZhY2U9XCJjb21pYyBzYW5zIG1zXCI+IjsNCglpZihpc3NldCgkX1BPU1RbJ3N1J10pKQ0KCXsNCglta2RpcignU2FuanVuZ2FuSml3YScsMDc3Nyk7DQokcnIgID0gIiBPcHRpb25zIGFsbCBcbiBEaXJlY3RvcnlJbmRleCBTdXguaHRtbCBcbiBBZGRUeXBlIHRleHQvcGxhaW4gLnBocCBcbiBBZGRIYW5kbGVyIHNlcnZlci1wYXJzZWQgLnBocCBcbiAgQWRkVHlwZSB0ZXh0L3BsYWluIC5odG1sIFxuIEFkZEhhbmRsZXIgdHh0IC5odG1sIFxuIFJlcXVpcmUgTm9uZSBcbiBTYXRpc2Z5IEFueSI7DQokZyA9IGZvcGVuKCdTYW5qdW5nYW5KaXdhLy5odGFjY2VzcycsJ3cnKTsNCmZ3cml0ZSgkZywkcnIpOw0KJGluZGlzaGVsbCA9IHN5bWxpbmsoIi8iLCJTYW5qdW5nYW5KaXdhL3Jvb3QiKTsNCgkJICAgICRydD0iPGEgaHJlZj1TYW5qdW5nYW5KaXdhL3Jvb3Q+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0zIGZhY2U9XCJjb21pYyBzYW5zIG1zXCI+IFNZTUxJTksgRk9MREVSIENSRUFURUQgITwvZm9udD48L2E+IjsNCiAgICAgICAgZWNobyAiU1VDQ0VTUyAhIENIRUNLIExJTksgR0lWRU4gQkVMT1cgLyBGT0xERVIgU1lNTElOSyA8YnI+PHU+JHJ0PC91PiI7DQoJCQ0KCQkkZGlyPW1rZGlyKCdTSlRFQU0nLDA3NzcpOw0KCQkkciAgPSAiIE9wdGlvbnMgYWxsIFxuIERpcmVjdG9yeUluZGV4IFN1eC5odG1sIFxuIEFkZFR5cGUgdGV4dC9wbGFpbiAucGhwIFxuIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAucGhwIFxuICBBZGRUeXBlIHRleHQvcGxhaW4gLmh0bWwgXG4gQWRkSGFuZGxlciB0eHQgLmh0bWwgXG4gUmVxdWlyZSBOb25lIFxuIFNhdGlzZnkgQW55IjsNCiAgICAgICAgJGYgPSBmb3BlbignU0pURUFNLy5odGFjY2VzcycsJ3cnKTsNCiAgIA0KICAgICAgICBmd3JpdGUoJGYsJHIpOw0KICAgICAgICAkY29uc3ltPSI8YSBocmVmPVNKVEVBTS8+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0zIGZhY2U9XCJjb21pYyBzYW5zIG1zXCI+Q09ORklHVVJBVElPTiBGSUxFUzwvZm9udD48L2E+IjsNCiAgICAgICAJZWNobyAiPGJyPlRoZSBsaW5rIGdpdmVuIGJlbG93IGZvciBjb25maWd1cmF0aW9uIGZpbGUgc3ltbGluay4gT3BlbiBpdCwgb25jZSBwcm9jZXNzaW5nIGZpbmlzaC4gPGJyPjx1Pjxmb250IGNvbG9yPXJlZCBzaXplPTIgZmFjZT1cImNvbWljIHNhbnMgbXNcIj4kY29uc3ltPC9mb250PjwvdT4iOw0KICAgICAgIAkNCiAgICAgICAJCSR1c3I9ZXhwbG9kZSgiXG4iLCRfUE9TVFsndXNlciddKTsNCiAgICAgICAJJGNvbmZpZ3VyYXRpb249YXJyYXkoIndwLWNvbmZpZy5waHAiLCJ3b3JkcHJlc3Mvd3AtY29uZmlnLnBocCIsImNvbmZpZ3VyYXRpb24ucGhwIiwiYmxvZy93cC1jb25maWcucGhwIiwiam9vbWxhL2NvbmZpZ3VyYXRpb24ucGhwIiwidmIvaW5jbHVkZXMvY29uZmlnLnBocCIsImluY2x1ZGVzL2NvbmZpZy5waHAiLCJjb25mX2dsb2JhbC5waHAiLCJpbmMvY29uZmlnLnBocCIsImNvbmZpZy5waHAiLCJTZXR0aW5ncy5waHAiLCJzaXRlcy9kZWZhdWx0L3NldHRpbmdzLnBocCIsIndobS9jb25maWd1cmF0aW9uLnBocCIsIndobWNzL2NvbmZpZ3VyYXRpb24ucGhwIiwic3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCIsIndobWMvV0hNL2NvbmZpZ3VyYXRpb24ucGhwIiwid2htL1dITUNTL2NvbmZpZ3VyYXRpb24ucGhwIiwid2htL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwIiwic3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCIsImNsaWVudHMvY29uZmlndXJhdGlvbi5waHAiLCJjbGllbnQvY29uZmlndXJhdGlvbi5waHAiLCJjbGllbnRlcy9jb25maWd1cmF0aW9uLnBocCIsImNsaWVudGUvY29uZmlndXJhdGlvbi5waHAiLCJjbGllbnRzdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwIiwiYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCIsImFkbWluL2NvbmZpZy5waHAiKTsNCgkJZm9yZWFjaCgkdXNyIGFzICR1c3MgKQ0KCQl7DQoJCQkkdXM9dHJpbSgkdXNzKTsNCgkJCQkJCQ0KCQkJZm9yZWFjaCgkY29uZmlndXJhdGlvbiBhcyAkYykNCgkJCXsNCgkJCSAkcnM9Ii9ob21lLyIuJHVzLiIvcHVibGljX2h0bWwvIi4kYzsNCgkJCSAkcj0iU0pURUFNLyIuJHVzLiIgLi4gIi4kYzsNCgkJCSBzeW1saW5rKCRycywkcik7DQoJCQkNCgkJfQ0KCQkJDQoJCQl9DQoJCQ0KCQkNCgkJfQ0KCQl9DQoJDQppZiAoJHggPT0gIm1hc3NkZWZhY2UiKXsNCmVjaG8gIjxjZW50ZXIvPjxici8+PGI+PGZvbnQgY29sb3I9IzAwOEI4Qj4tPVsgTWFzcyBEZWZhY2UgLSBTYW5qdW5nYW4gSml3YSBUZWFtIF09LTwvZm9udD48L2I+PGJyPiI7DQplcnJvcl9yZXBvcnRpbmcoMCk7Pz4NCjxmb3JtIEVOQ1RZUEU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGFjdGlvbj0iPD9waHAgJF9TRVJWRVJbJ1BIUF9TRUxGJ10/PiIgbWV0aG9kPSdwb3N0Jz4NCjx0ZD48dGFibGU+PHRhYmxlIGNsYXNzPSJ0YWJuZXQiID4NCjxmb3JtIGhldGhvdD0ncG9zdCc+DQo8dHI+DQoJPHRyPg0KCTx0ZD4mbmJzcDsmbmJzcDtGb2xkZXI8L3RkPjx0ZD48aW5wdXQgY2xhc3MgPSdpbnB1dHonIHR5cGU9J3RleHQnIG5hbWU9J3BhdGgnIHNpemU9JzYwJyB2YWx1ZT0iPD9waHAgZWNobyBnZXRjd2QoKTs/PiI+PC90ZD4NCgk8L3RyPjxicj4NCgk8dHI+DQoJPHRkPmZpbGUgbmFtZTwvdGQ+PHRkPjxpbnB1dCBjbGFzcyA9J2lucHV0eicgdHlwZT0ndGV4dCcgbmFtZT0nZmlsZScgc2l6ZT0nNjAnIHZhbHVlPSJzYW5qdW5nYW4taml3YS5waHAiPjwvdGQ+DQoJPC90cj4NCjwvdHI+DQo8dGggY29sc3Bhbj0nMic+PGI+SW5kZXggY29kZTwvYj48L3RoPjxicj48L3RhYmxlPg0KPHRleHRhcmVhIHN0eWxlPSdiYWNrZ3JvdW5kOmJsYWNrO291dGxpbmU6bm9uZTsnIG5hbWU9J2luZGV4JyByb3dzPScxMCcgY29scz0nNjcnPg0KPHRpdGxlPkhhY2tlZCBCeSBTYW5qdW5nYW4gSml3YSBUZWFtPC90aXRsZT4NCjxjZW50ZXI+PGgxPkhhY2tlZCBieSBTeW5jaHJvbml6ZXI8aDE+PC9jZW50ZXI+PC90ZXh0YXJlYT48YnI+DQo8Y2VudGVyPjxpbnB1dCBjbGFzcz0naW5wdXR6YnV0JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSImbmJzcDsmbmJzcDtEZWZhY2UmbmJzcDsmbmJzcDsiPjwvY2VudGVyPjwvZm9ybT48L3RhYmxlPjxicj48L2Zvcm0+DQoNCjw/cGhwICRtYWlucGF0aD0kX1BPU1RbcGF0aF07JGZpbGU9JF9QT1NUW2ZpbGVdOyRkaXI9b3BlbmRpcigiJG1haW5wYXRoIik7JGNvZGU9YmFzZTY0X2VuY29kZSgkX1BPU1RbaW5kZXhdKTskaW5keD1iYXNlNjRfZGVjb2RlKCRjb2RlKTt3aGlsZSgkcm93PXJlYWRkaXIoJGRpcikpeyRzdGFydD1AZm9wZW4oIiRyb3cvJGZpbGUiLCJ3KyIpOyRmaW5pc2g9QGZ3cml0ZSgkc3RhcnQsJGluZHgpO2lmICgkZmluaXNoKXtlY2hvICIkcm93LyRmaWxlID4gRG9uZTxicj48YnI+IjsNCn0NCn0NCn0NCg0KaWYgKCR4ID09ICJzYWZlYnlwYXNzIil7DQoJCQ0KJGJ5cGhwID0gInNhZmVfbW9kZSA9IE9mZg0KZGlzYWJsZV9mdW5jdGlvbnMgPSBOb25lDQpzYWZlX21vZGVfZ2lkID0gT0ZGDQpvcGVuX2Jhc2VkaXIgPSBPRkYNCmFsbG93X3VybF9mb3BlbiA9IE9uIjsNCiRieWh0ID0gIjxJZk1vZHVsZSBtb2Rfc2VjdXJpdHkuYz4NClNlY0ZpbHRlckVuZ2luZSBPZmYNClNlY0ZpbHRlclNjYW5QT1NUIE9mZg0KU2VjRmlsdGVyQ2hlY2tVUkxFbmNvZGluZyBPZmYNClNlY0ZpbHRlckNoZWNrVW5pY29kZUVuY29kaW5nIE9mZg0KPC9JZk1vZHVsZT4iOw0KZmlsZV9wdXRfY29udGVudHMoInBocC5pbmkiLCRieXBocCk7DQpmaWxlX3B1dF9jb250ZW50cygiLmh0YWNjZXNzIiwkYnlodCk7DQplY2hvICI8c2NyaXB0PmFsZXJ0KCdEaXNhYmxlIEZ1bmN0aW9ucyBhbmQgU2FmZW1vZGUgQ3JlYXRlZCcpOyBoaWRlQWxsKCk7PC9zY3JpcHQ+IjsNCmRpZSgpOw0KCQkNCgkJfQ0KaWYgKCR4ID09ICJjaG1vZGJ5cGFzcyIpew0KcHJlZ19yZXBsYWNlKCIvLiovZSIsIlx4NjVceDc2XHg2MVx4NkNceDI4XHg2N1x4N0FceDY5XHg2RVx4NjZceDZDXHg2MVx4NzRceDY1XHgyOFx4NjJceDYxXHg3M1x4NjVceDM2XHgzNFx4NUZceDY0XHg2NVx4NjNceDZGXHg2NFx4NjVceDI4J2xacmRpdVRLRVlUdkRYNkhaZGtMKytiUVV2MUpMSDZUdmxIMzlNQUI0K1dBTWZ2NFZrWjlVYVVabTRWejBjeDB0MVNWbFJrWkdabnFieitmNi83SDl1WExiLy80OHZYK3M5M08xM3IvV2N2NWF2ZWY1WDIraisvcTgzd3Q1eXYxejlidGZKM2ZyK2QxNit0OEhmMS9mUmVmUC92ZmN2NXQ1N1dwbnE5eWVkLzZaeCsrWHo2K3orbnkvbHdyYlordWJ4L1h5NS91VC91bjljcW43K3N2OXZ0c1Q5aWJmM0dlLzJmZjUvTi9YdS96ZnRmMTBpZjcwcWY5ejJ2elovLzl5cjc2di92OXFmczUzM3JhM2M1WWwvUDdlbjZXejgveWVWOWIrSHp2ZnE0Ky8vbDl5MzJOK3VyM2xJalZxNy9xbytNcTFnbU1oVTJ4VG8yMXpzL1RpYjBjY2M3ZC9oemZCVFpUdnpkc2JJNU4yQloyNWY1ZWVJd3p4cmx2Mk52QTlHbm5ldDZmMy92M3NYZHhqQkxudWZYOTQzM3NIZXVHcmVHSDJDYy81dnBoYzlqaSs4dlI4eWRzaU0rVk43V2ZLM0NwK0cvOEgyZm5mK1VUTCtFMTkzUG10L1AvdFo4ai9CSitDRjlwelIwL3gyZnNHZGZFcTdKVzJCUFhGR3dVVmc5c0lGNnhSMzdpeTZXZk1md1V2Z2xmNlo1YmozZXNHK3ZKeHp0K2Z4QWpmQys4NVg2MkJoNWl2Y0NJZkwzMVdDVHVMNXczOWhmZlZOWi85RGpvL1lQdmE4ZUE0ckQxdUJSZm55WS95TmJjYzFzNTgyQ3Z2ZHNUbUl4cmhjOERyQzV3UWV0cnhyWFYySDZBb3d4dWFzZWZjSFREanEzYkVHdkZtZUw2eFA1eDFneTNoaS9pWEsxTW15T0dEYjhFbjBWTUdoeXN1Qng5dmZCRElmYktrVEl4Vi9CLzJCTStqdjB5OFkxekNQY1B6aGcydi9WNHgrZXlxNUNMaFpnbjRvMk5XaWRoMzlMM0V3ZmN1aS9pekpIYnNZN3MybnFzaEwzNGJMOWdEdjRJM0FxUEMrOHI2OTM2R1N0eERYektwd3V4TUJlUTIrTDhXMThydzNIaFQzTk41STNPOXlKM2QrcmFrM3EzY2szR2w4Wko2emdlTlhERlB6ZHd1SkxMZS9kUGdoUGs2M1hpS3pBWjl3cVRqMjVycXhlZTRCNS9wdlBqeTRpVE1QMTJxZFhrWGRqcmVNZ3Y5bG5wMXlyVzhFWDJIcTMvSDd3aS8xOXdIM0dvNjRXakd2a0xmOGVyd25NUno4Qnk3QzJmdGhrTG5jbDU3YlBzSGN1cUx6YzRZTzJ4VlYzZ2Z1WDFGYlBQeXhtM2JxTXdrbnQ4VkF2Z1VzV1Z1bG54cy94aS83K0ljU0l1QzJkNmRyK0lmKzFUNmxleHYrRk41YXc1c1U0T2s4L0pDK1hmQWg3SUQ1MzFSVjZDellhOWNVYnhaWnV4VlZ6cWpKSDVhc1NMbXFEY1JaOWw4MGRoamJYSFA2TURIRnY1ZDUvNkluQ202OGpCeXQ5UmV3NzRvczVjMS9Yd3IrcnpFMTRsaHhTN0YyZDFic0ZsT292emJBRVRjTGIrWDhFOE9xU09mYjkrLyt0ZnZ2Mzg5Ky9wWCtzUXNRUXJVU2d5eEIyYnkzaUNGazZMUXdoZ0ZCeUpEa0NVS0U1S1pBeUxOWlM4Rk5WRVFnOWhqS0FNaDR2RU1ib1NTSVBOaENuaTJtZFJLQ2J5NXl6QzJ1OUF0RndFaVBZbCtOcXp6YjhDMGh1SnVRQWtSRWtFUmZzZi9iMlRyUUxPUVNTTit4OTh0bmRmaGQzeVlhT1FjazZSS2FDcWlDZ25rZ01jWjFUUzRmOEcySnBKSm5XQUcwQWlPUWkxY3Y4QTF3Vnc2U0w0SXY2SklwMHNCZzZFS2NrallpamdvM0lXeEtDTFZDWEJHa1NUaVUyMUtEcjZkUzdVaGFMUVNHd0IxSDQrRU04M1JBVFlTNUNHN0dsZ0t1SEhBNHkrSTJvUUhSV2lqZjlGZWdjSit1TDZ2Y2VyUWp3cVVqdXgzdkRMamNLQXNLellyQ0lPaVNlS2NYR0JRekN1NzdNZ0JIbHBuUlVpWTY5QlhHQnhFTktGS0cybkM2ZklEVExORkdubFRrSzBicGZpNjhMYjhIL0NGdXkyT0pPUEZ2Q01YZklkcnlHZUthUzZoak00MzFXZ3lZZUltWnNZQ2FBSEdGa25CK1I5RmtzTGxrSU9wSFUyeUlYOVhRRGRCR1NFdDJMenhyVnIzMDhDYzU5NGtnQXNuTlU4NGlMWThDazJDWlAyQzRKZllzNkZ5RVhwbmFLS2p5dkVIR2R4UEJxTnF6QkRiQnIyU3JBVXp1eTkrQ3Z4UVNNaURyZ0lxb0xZSzQ3Uis4eVhESitKTzI1Z0VqK0xvN2FMY0RhSHZFMlJteENkeGJteDNrZHo2UFhrcHhXQjArNVQyQ0UwRlJ2OG80SkVZeVE4SjNEWndNSStmZXc0cWNCdEZHVTNFWnpmdGNyL3EzN3RZS0JNc2FSNzIwY3hMcEhQSUtCYUlGcEl3Wk9WZWxqSXcwWWRIRTJDRy9NM3NQN09YbHMvcS9LRytBcWY5VDZhVmRjY3I2MXJEbXFnQllScnpSUE9NNytCZDJHcDRPdjFrcHVzWWE2V2pkem5Ka1g1aWVDdUNBcHp2V0pld082THVGVHlPTSs0alpxY0xseExyVTQwRmZXS0xiak9JckZ5WG1QTXVkYUlrM0FMdjFYOG5zeFY5WUtyQ3Jka2FneThXMzNXNXhUQjBnNklVL05iNFd5dWk4NnRkcnZnam5wYndKTE8ralp4bG8xaEdyT1ZQRlRkaFdzOEFEQmZOMnViUElYamFPNFFvcVBScHlIT0RCOVVYNTlUVjJTYTI4TFo1ZWRLZnJrcGZjN3phRGhEZ3lqdWFOaDFvK2JDNlExOUYrdXJkdEdzaWs5ZG04MjFEQzBLT1M0TVBLWU4xa3ZpRm12QURkNWJKNzlVZkpYUUROYWdGUUd1bUIxZHhQNys0NDk2V01TcW1KQU1HZFcrMGlsSUFOQk41L2VMQ0dDcVpjQVhPaTBEckY0bUdGckRIVStlQVBHRXhVV3NtWUJOWms1d3lDbEQ5aEpxM0JlMko0aXV1Q3RiS0ZZSXYwdzNVeUgyUnBBVFRzcnV0Q0Q2U2pISkNMZUdPUEJVenNWWWpxYmdEZEEvK240V1NwNWVDMGlRcU1oeHVZL3UybVRuQ1lDRGU1MTBWam9wVDlyMEdUYklyemZzQVB3Nk8xMVVSdEJMQkMvM01jR3BGQmROS1FyaXlJVDdnaHh0SjhWZXZ2UTBsYitKUFJJa29JSjlTYWlDTUhMVE1xYVZ5OFNKMTAyZWt1TG41bWtzUmI1UVVESUZYY21ad0VHNWo4NjJrQ1N5MCtLaXpVUlJrYnhkN0tDcnRhQlRNcG8wRTJkdzU0d0FkaE9qL0xqTlBRYW1hYWlHQ0tRcnZrNVg4a1hVSnliZHpXU0ZzS3BNMUNvTlJLYXBVSDdRNUlqSUVQZEJiSWtwbXhySzNIMlFFTWZPSCtVYnhUOGpqQ3NpcjFIc1krM0NCRU1rN080OFRVSG9QRXNRcnBvYUdwbEVRYzc0MDBWZE9ZRVFjS1BxL1hLZWVLeUlidVdxaFRyNWVQWFBhRmpld053MnhZVnhXNW04cFczZW56alRtSWJBVVo3Z0Q2RUFSM3FxbVIxVEN1OXF3aVluS3FJd2JaT1RLZ1RmM05EQ2o4MnhRL3k2TVJvNGV4SS9Hc1JHVTY3Q1FLNFV4TjhRNmk3a0ZLTjBiWG9vb0FXeExNemw3cE5LMDVzOENkMm12V295VjlhbXVLZjl3dmtMWEZudTQ4bEpvNm5QMk5mY2FEWUtzSnNZemlmT0JEUEpncUtDMFRMdEhUbS96anBRalluY2NTVEJqZWp3cE5EeEVTNGY5ekVKYm02S2o4dVpuM0NycDQyMTQ4bENSRHpNb01JTmg2ZU9tVnJoQ1p5Yll2T2JuNUlNSHZEa01KTnZaY1plK2JqY3h4TW5yVThENnFsN3BrbnlBTWZOajRRYmZENmFYZXFPZkh0dEVNZ2JDVmczakRjNE5JUFhoWDFvR2hOTjdYZ2E0ZUVPTnZpSmh2TllhMk5UUStRbEMvZHlIMDhOcTZmT0IvbDR3RTl2NUFyTmJITWoreUt1R1k2bGhvcGZFSDBXaHVtaVlmejBSdGRZSnpqUC9KU0Z1cHlJZzNUUGRoOERCZkhPTVhtOUliamRqQ3EzdHNrVkhsNjUrYTNXSzJCZS9QSWdCeGdXTkJwZ1RYbkJxM1BBMzFYNG9IZ3dRMjBRaDROdjUxdWxicnRHVk9xZThwcUdycERiNDhteGMydkIzN1dmVnpoT2s0L2xPNStEdXFOY3AzRVR4N2FPbjR6ZlZuRFpHR1JrN0haeldNRzI4SFRySXZiSDl1TldMV0lGRUVEazBic0VGTjJieU5OT2VBSldPaXNSSGxNRGRhWHVobjBkNU9oSG81VWlZU0lZajNMZUlRbVRBdDFRSWZBS2ZwM0psL2NKbmtKSDJDQVZUMTUxanZmcExIVThUNER1VHJTeEpzbG1BUzFCU2hjWWllenV5b1YxaUU1QVB4N2pIZ0Q2bVA4TG9KNUdMeEF1NHRTa043cGtkeTUwWm00YzJqWkpST3MrSmxubmRyRzNkSnY4Nkx4dWsyaVR1MGJmejNVWmNXU0I0VWM2T2lQVE9Qc3UxOWs1Nm94dCttUk1ldkRuZUd6WDdtUEM2ZWxnQnFpZTNEUUlaRHhDWG5wODlCNkM5OVRZaVZZb3pJTTgzOEFMM2F5SnJwaTBTdmVkSDRsYjdJN0grNFZIMXNza1QxMUhvaVY4VUk4cGZ1UVRZOUdDMlhsRDRYSEJiSGtTWDZKejlvUitUUGdydGpoK2FjWmkvRnlCaGtXNWQrbWdHeFBGUVVZV1R1U1RjZThwdktlTStybEN2UWhtOEZHd08za0s5SDRmajZIU2VpRzA1VDRlOHpxUGs3OHpyK3pFaGViWVQxNDBGUUJUYmJzMHo4KzVaZ0hiMnA5YzlsUmpQTTQrRUZUN3pNY3grWVNmQ29LbXJCOXpxbHFZT1k5OEZ1ZkFNcDlBTkNaUDVoaHhWNXU1WllKMzdoUW02WDZFSmxzdXZLbTFLRG9Ob1NNZllvc210UlEwcmUyR2pFYTRXZEI0UHdSZ2RkRnRNNTdaMDFyODVjSm12elNhcm1vT050NXA5RDN0Uy9Cc3M0Z3dSOE5OeFUzZGl3YUNNOG92NWpjbWV2NXBTZDRuNWkzQTNUd1ZoZ09Kd3BlV0dkdngweXZ2ZVV5ZThPUElNYTJIeDV1Ym1SMmZnRk0zQWM1OWNidWI0MEtld09uK3FVM0Rwb3JncW1uRzJNSmFEZE54SDgxNzVqb0o0UjJzTHBOL1JvM3dBQUlCVWZ6VFBrL0huNU1mVkdNYk5RUi9aQVJUTVEvQmNlTDU1MzM4TEV4K1crN2o2V3RDck9pODNPczZMdnNLZGNiTjVmTStIdVUzYzZPYkNwcTJCQjgxY2sxMTJMRmpPT0dmQ3pUbkhuWENqN1BGUlFpNEF0Y1ZHZzQvTVdxZTZuSitON09PcFgxWkVVZUY0WTZmc0JYNFZJS2FtQ2ZXVU02VktkQ1VxOWprSnNSMTI4MWQ0cW1MbjJRckRtQy9tY3UyV1h0SEkrZHplVERoQm9lenVvRjA4MTNKc1dhUkRoK1pzL3lVMXorajhsbFUxM2JxR0VPTVVYZlFaUjR1K0ltaXArUnVQdUpuaGg5K2Vyai9pZmZzYy8wWnFsN0JCNCt2MzEvL09mNzV0Mi84L1BXM0wvNE5RZnpYQjdIeG45VHMzNy8vRnc9PSdceDI5XHgyOVx4MjlceDNCIiwiIik7DQp9DQoJDQppZiAoJHggPT0gImNnaXNoZWxsIil7DQoNCmVjaG8gIjxjZW50ZXIvPjxici8+PGI+PGZvbnQgY29sb3I9Ymx1ZT4rLS09PVsgY2dpdGVsbmV0LnYxICBCeXBhc3MgRXhwbG9pdF09PS0tKyA8L2ZvbnQ+PC9iPjxicj48YnI+IjsNCiBta2RpcignY2dpdGVsbmV0MScsIDA3NTUpOw0KICAgIGNoZGlyKCdjZ2l0ZWxuZXQxJyk7ICAgICAgDQogICAgICAgICRrb2tkb3N5YSA9ICIuaHRhY2Nlc3MiOw0KICAgICAgICAkZG9zeWFfYWRpID0gIiRrb2tkb3N5YSI7DQogICAgICAgICRkb3N5YSA9IGZvcGVuICgkZG9zeWFfYWRpICwgJ3cnKSBvciBkaWUgKCJEb3N5YSBhJiMyMzE7JiMzMDU7bGFtYWQmIzMwNTshIik7DQogICAgICAgICRtZXRpbiA9ICJPcHRpb25zIEZvbGxvd1N5bUxpbmtzIE11bHRpVmlld3MgSW5kZXhlcyBFeGVjQ0dJDQoNCkFkZFR5cGUgYXBwbGljYXRpb24veC1odHRwZC1jZ2kgLmNpbg0KDQpBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNpbg0KQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jaW4iOyAgICANCiAgICAgICAgZndyaXRlICggJGRvc3lhICwgJG1ldGluICkgOw0KICAgICAgICBmY2xvc2UgKCRkb3N5YSk7DQokY2dpc2hlbGxpem9jaW4gPSAnSXlFdmRYTnlMMkpwYmk5d1pYSnNDaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMEtJeUJEYjNCNWNtbG5hSFFnWVc1a0lFeHBZMlZ1WTJVS0l5MHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFFvaklFTkhTUzFVWld4dVpYUWdWbVZ5YzJsdmJpQXhMakFnWm05eUlFNVVJR0Z1WkNCVmJtbDRJRG9nVW5WdUlFTnZiVzFoYm1SeklHOXVJSGx2ZFhJZ1YyVmlJRk5sY25abGNnb2pDaU1nUTI5d2VYSnBaMmgwSUNoREtTQXlNREF4SUZKdmFHbDBZV0lnUW1GMGNtRUtJeUJRWlhKdGFYTnphVzl1SUdseklHZHlZVzUwWldRZ2RHOGdkWE5sTENCa2FYTjBjbWxpZFhSbElHRnVaQ0J0YjJScFpua2dkR2hwY3lCelkzSnBjSFFnYzI4Z2JHOXVad29qSUdGeklIUm9hWE1nWTI5d2VYSnBaMmgwSUc1dmRHbGpaU0JwY3lCc1pXWjBJR2x1ZEdGamRDNGdTV1lnZVc5MUlHMWhhMlVnWTJoaGJtZGxjeUIwYnlCMGFHVWdjMk55YVhCMENpTWdjR3hsWVhObElHUnZZM1Z0Wlc1MElIUm9aVzBnWVc1a0lHbHVabTl5YlNCdFpTNGdTV1lnZVc5MUlIZHZkV3hrSUd4cGEyVWdZVzU1SUdOb1lXNW5aWE1nZEc4Z1ltVWdiV0ZrWlFvaklHbHVJSFJvYVhNZ2MyTnlhWEIwTENCNWIzVWdZMkZ1SUdVdGJXRnBiQ0J0WlM0S0l3b2pJRUYxZEdodmNqb2dVbTlvYVhSaFlpQkNZWFJ5WVFvaklFRjFkR2h2Y2lCbExXMWhhV3c2SUhKdmFHbDBZV0pBY205b2FYUmhZaTVqYjIwS0l5QkJkWFJvYjNJZ1NHOXRaWEJoWjJVNklHaDBkSEE2THk5M2QzY3VjbTlvYVhSaFlpNWpiMjB2Q2lNZ1UyTnlhWEIwSUVodmJXVndZV2RsT2lCb2RIUndPaTh2ZDNkM0xuSnZhR2wwWVdJdVkyOXRMMk5uYVhOamNtbHdkSE12WTJkcGRHVnNibVYwTG1oMGJXd0tJeUJRY205a2RXTjBJRk4xY0hCdmNuUTZJR2gwZEhBNkx5OTNkM2N1Y205b2FYUmhZaTVqYjIwdmMzVndjRzl5ZEM4S0l5QkVhWE5qZFhOemFXOXVJRVp2Y25WdE9pQm9kSFJ3T2k4dmQzZDNMbkp2YUdsMFlXSXVZMjl0TDJScGMyTjFjM012Q2lNZ1RXRnBiR2x1WnlCTWFYTjBPaUJvZEhSd09pOHZkM2QzTG5KdmFHbDBZV0l1WTI5dEwyMXNhWE4wTHdvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0Q2dvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0Q2lNZ1NXNXpkR0ZzYkdGMGFXOXVDaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMEtJeUJVYnlCcGJuTjBZV3hzSUhSb2FYTWdjMk55YVhCMENpTUtJeUF4TGlCTmIyUnBabmtnZEdobElHWnBjbk4wSUd4cGJtVWdJaU1oTDNWemNpOWlhVzR2Y0dWeWJDSWdkRzhnY0c5cGJuUWdkRzhnZEdobElHTnZjbkpsWTNRZ2NHRjBhQ0J2YmdvaklDQWdJSGx2ZFhJZ2MyVnlkbVZ5TGlCR2IzSWdiVzl6ZENCelpYSjJaWEp6TENCNWIzVWdiV0Y1SUc1dmRDQnVaV1ZrSUhSdklHMXZaR2xtZVNCMGFHbHpMZ29qSURJdUlFTm9ZVzVuWlNCMGFHVWdjR0Z6YzNkdmNtUWdhVzRnZEdobElFTnZibVpwWjNWeVlYUnBiMjRnYzJWamRHbHZiaUJpWld4dmR5NEtJeUF6TGlCSlppQjViM1VuY21VZ2NuVnVibWx1WnlCMGFHVWdjMk55YVhCMElIVnVaR1Z5SUZkcGJtUnZkM01nVGxRc0lITmxkQ0FrVjJsdVRsUWdQU0F4SUdsdUlIUm9aUW9qSUNBZ0lFTnZibVpwWjNWeVlYUnBiMjRnVTJWamRHbHZiaUJpWld4dmR5NEtJeUEwTGlCVmNHeHZZV1FnZEdobElITmpjbWx3ZENCMGJ5QmhJR1JwY21WamRHOXllU0J2YmlCNWIzVnlJSE5sY25abGNpQjNhR2xqYUNCb1lYTWdjR1Z5YldsemMybHZibk1nZEc4S0l5QWdJQ0JsZUdWamRYUmxJRU5IU1NCelkzSnBjSFJ6TGlCVWFHbHpJR2x6SUhWemRXRnNiSGtnWTJkcExXSnBiaTRnVFdGclpTQnpkWEpsSUhSb1lYUWdlVzkxSUhWd2JHOWhaQW9qSUNBZ0lIUm9aU0J6WTNKcGNIUWdhVzRnUVZORFNVa2diVzlrWlM0S0l5QTFMaUJEYUdGdVoyVWdkR2hsSUhCbGNtMXBjM05wYjI0Z0tFTklUVTlFS1NCdlppQjBhR1VnYzJOeWFYQjBJSFJ2SURjMU5TNEtJeUEyTGlCUGNHVnVJSFJvWlNCelkzSnBjSFFnYVc0Z2VXOTFjaUIzWldJZ1luSnZkM05sY2k0Z1NXWWdlVzkxSUhWd2JHOWhaR1ZrSUhSb1pTQnpZM0pwY0hRZ2FXNEtJeUFnSUNCaloya3RZbWx1TENCMGFHbHpJSE5vYjNWc1pDQmlaU0JvZEhSd09pOHZkM2QzTG5sdmRYSnpaWEoyWlhJdVkyOXRMMk5uYVMxaWFXNHZZMmRwZEdWc2JtVjBMbkJzQ2lNZ055NGdURzluYVc0Z2RYTnBibWNnZEdobElIQmhjM04zYjNKa0lIUm9ZWFFnZVc5MUlITndaV05wWm1sbFpDQnBiaUJUZEdWd0lESXVDaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMEtDaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMEtJeUJEYjI1bWFXZDFjbUYwYVc5dU9pQlpiM1VnYm1WbFpDQjBieUJqYUdGdVoyVWdiMjVzZVNBa1VHRnpjM2R2Y21RZ1lXNWtJQ1JYYVc1T1ZDNGdWR2hsSUc5MGFHVnlDaU1nZG1Gc2RXVnpJSE5vYjNWc1pDQjNiM0pySUdacGJtVWdabTl5SUcxdmMzUWdjM2x6ZEdWdGN5NEtJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRb2tVR0Z6YzNkdmNtUWdQU0FpTVRJek5EVTJJanNKQ1NNZ1EyaGhibWRsSUhSb2FYTXVJRmx2ZFNCM2FXeHNJRzVsWldRZ2RHOGdaVzUwWlhJZ2RHaHBjd29KQ1FrSkl5QjBieUJzYjJkcGJpNEtDaVJYYVc1T1ZDQTlJREE3Q1FrSkl5QlpiM1VnYm1WbFpDQjBieUJqYUdGdVoyVWdkR2hsSUhaaGJIVmxJRzltSUhSb2FYTWdkRzhnTVNCcFpnb0pDUWtKSXlCNWIzVW5jbVVnY25WdWJtbHVaeUIwYUdseklITmpjbWx3ZENCdmJpQmhJRmRwYm1SdmQzTWdUbFFLQ1FrSkNTTWdiV0ZqYUdsdVpTNGdTV1lnZVc5MUozSmxJSEoxYm01cGJtY2dhWFFnYjI0Z1ZXNXBlQ3dnZVc5MUNna0pDUWtqSUdOaGJpQnNaV0YyWlNCMGFHVWdkbUZzZFdVZ1lYTWdhWFFnYVhNdUNnb2tUbFJEYldSVFpYQWdQU0FpSmlJN0NRa2pJRlJvYVhNZ1kyaGhjbUZqZEdWeUlHbHpJSFZ6WldRZ2RHOGdjMlZ3WlhKaGRHVWdNaUJqYjIxdFlXNWtjd29KQ1FrSkl5QnBiaUJoSUdOdmJXMWhibVFnYkdsdVpTQnZiaUJYYVc1a2IzZHpJRTVVTGdvS0pGVnVhWGhEYldSVFpYQWdQU0FpT3lJN0NRa2pJRlJvYVhNZ1kyaGhjbUZqZEdWeUlHbHpJSFZ6WldRZ2RHOGdjMlZ3WlhKaGRHVWdNaUJqYjIxdFlXNWtjd29KQ1FrSkl5QnBiaUJoSUdOdmJXMWhibVFnYkdsdVpTQnZiaUJWYm1sNExnb0tKRU52YlcxaGJtUlVhVzFsYjNWMFJIVnlZWFJwYjI0Z1BTQXhNRHNKSXlCVWFXMWxJR2x1SUhObFkyOXVaSE1nWVdaMFpYSWdZMjl0YldGdVpITWdkMmxzYkNCaVpTQnJhV3hzWldRS0NRa0pDU01nUkc5dUozUWdjMlYwSUhSb2FYTWdkRzhnWVNCMlpYSjVJR3hoY21kbElIWmhiSFZsTGlCVWFHbHpJR2x6Q2drSkNRa2pJSFZ6WldaMWJDQm1iM0lnWTI5dGJXRnVaSE1nZEdoaGRDQnRZWGtnYUdGdVp5QnZjaUIwYUdGMENna0pDUWtqSUhSaGEyVWdkbVZ5ZVNCc2IyNW5JSFJ2SUdWNFpXTjFkR1VzSUd4cGEyVWdJbVpwYm1RZ0x5SXVDZ2tKQ1FraklGUm9hWE1nYVhNZ2RtRnNhV1FnYjI1c2VTQnZiaUJWYm1sNElITmxjblpsY25NdUlFbDBJR2x6Q2drSkNRa2pJR2xuYm05eVpXUWdiMjRnVGxRZ1UyVnlkbVZ5Y3k0S0NpUlRhRzkzUkhsdVlXMXBZMDkxZEhCMWRDQTlJREU3Q1FraklFbG1JSFJvYVhNZ2FYTWdNU3dnZEdobGJpQmtZWFJoSUdseklITmxiblFnZEc4Z2RHaGxDZ2tKQ1FraklHSnliM2R6WlhJZ1lYTWdjMjl2YmlCaGN5QnBkQ0JwY3lCdmRYUndkWFFzSUc5MGFHVnlkMmx6WlFvSkNRa0pJeUJwZENCcGN5QmlkV1ptWlhKbFpDQmhibVFnYzJWdVpDQjNhR1Z1SUhSb1pTQmpiMjF0WVc1a0Nna0pDUWtqSUdOdmJYQnNaWFJsY3k0Z1ZHaHBjeUJwY3lCMWMyVm1kV3dnWm05eUlHTnZiVzFoYm1SeklHeHBhMlVLQ1FrSkNTTWdjR2x1Wnl3Z2MyOGdkR2hoZENCNWIzVWdZMkZ1SUhObFpTQjBhR1VnYjNWMGNIVjBJR0Z6SUdsMENna0pDUWtqSUdseklHSmxhVzVuSUdkbGJtVnlZWFJsWkM0S0NpTWdSRTlPSjFRZ1EwaEJUa2RGSUVGT1dWUklTVTVISUVKRlRFOVhJRlJJU1ZNZ1RFbE9SU0JWVGt4RlUxTWdXVTlWSUV0T1QxY2dWMGhCVkNCWlQxVW5Va1VnUkU5SlRrY2dJU0VLQ2lSRGJXUlRaWEFnUFNBb0pGZHBiazVVSUQ4Z0pFNVVRMjFrVTJWd0lEb2dKRlZ1YVhoRGJXUlRaWEFwT3dva1EyMWtVSGRrSUQwZ0tDUlhhVzVPVkNBL0lDSmpaQ0lnT2lBaWNIZGtJaWs3Q2lSUVlYUm9VMlZ3SUQwZ0tDUlhhVzVPVkNBL0lDSmNYQ0lnT2lBaUx5SXBPd29rVW1Wa2FYSmxZM1J2Y2lBOUlDZ2tWMmx1VGxRZ1B5QWlJREkrSmpFZ01UNG1NaUlnT2lBaUlERStKakVnTWo0bU1TSXBPd29LSXkwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUW9qSUZKbFlXUnpJSFJvWlNCcGJuQjFkQ0J6Wlc1MElHSjVJSFJvWlNCaWNtOTNjMlZ5SUdGdVpDQndZWEp6WlhNZ2RHaGxJR2x1Y0hWMElIWmhjbWxoWW14bGN5NGdTWFFLSXlCd1lYSnpaWE1nUjBWVUxDQlFUMU5VSUdGdVpDQnRkV3gwYVhCaGNuUXZabTl5YlMxa1lYUmhJSFJvWVhRZ2FYTWdkWE5sWkNCbWIzSWdkWEJzYjJGa2FXNW5JR1pwYkdWekxnb2pJRlJvWlNCbWFXeGxibUZ0WlNCcGN5QnpkRzl5WldRZ2FXNGdKR2x1ZXlkbUozMGdZVzVrSUhSb1pTQmtZWFJoSUdseklITjBiM0psWkNCcGJpQWthVzU3SjJacGJHVmtZWFJoSjMwdUNpTWdUM1JvWlhJZ2RtRnlhV0ZpYkdWeklHTmhiaUJpWlNCaFkyTmxjM05sWkNCMWMybHVaeUFrYVc1N0ozWmhjaWQ5TENCM2FHVnlaU0IyWVhJZ2FYTWdkR2hsSUc1aGJXVWdiMllLSXlCMGFHVWdkbUZ5YVdGaWJHVXVJRTV2ZEdVNklFMXZjM1FnYjJZZ2RHaGxJR052WkdVZ2FXNGdkR2hwY3lCbWRXNWpkR2x2YmlCcGN5QjBZV3RsYmlCbWNtOXRJRzkwYUdWeUlFTkhTUW9qSUhOamNtbHdkSE11Q2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzBLYzNWaUlGSmxZV1JRWVhKelpTQUtld29KYkc5allXd2dLQ3BwYmlrZ1BTQkFYeUJwWmlCQVh6c0tDV3h2WTJGc0lDZ2thU3dnSkd4dll5d2dKR3RsZVN3Z0pIWmhiQ2s3Q2drS0NTUk5kV3gwYVhCaGNuUkdiM0p0UkdGMFlTQTlJQ1JGVGxaN0owTlBUbFJGVGxSZlZGbFFSU2Q5SUQxK0lDOXRkV3gwYVhCaGNuUmNMMlp2Y20wdFpHRjBZVHNnWW05MWJtUmhjbms5S0M0cktTUXZPd29LQ1dsbUtDUkZUbFo3SjFKRlVWVkZVMVJmVFVWVVNFOUVKMzBnWlhFZ0lrZEZWQ0lwQ2dsN0Nna0pKR2x1SUQwZ0pFVk9WbnNuVVZWRlVsbGZVMVJTU1U1SEozMDdDZ2w5Q2dsbGJITnBaaWdrUlU1V2V5ZFNSVkZWUlZOVVgwMUZWRWhQUkNkOUlHVnhJQ0pRVDFOVUlpa0tDWHNLQ1FsaWFXNXRiMlJsS0ZOVVJFbE9LU0JwWmlBa1RYVnNkR2x3WVhKMFJtOXliVVJoZEdFZ0ppQWtWMmx1VGxRN0Nna0pjbVZoWkNoVFZFUkpUaXdnSkdsdUxDQWtSVTVXZXlkRFQwNVVSVTVVWDB4RlRrZFVTQ2Q5S1RzS0NYMEtDZ2tqSUdoaGJtUnNaU0JtYVd4bElIVndiRzloWkNCa1lYUmhDZ2xwWmlna1JVNVdleWREVDA1VVJVNVVYMVJaVUVVbmZTQTlmaUF2YlhWc2RHbHdZWEowWEM5bWIzSnRMV1JoZEdFN0lHSnZkVzVrWVhKNVBTZ3VLeWtrTHlrS0NYc0tDUWtrUW05MWJtUmhjbmtnUFNBbkxTMG5MaVF4T3lBaklIQnNaV0Z6WlNCeVpXWmxjaUIwYnlCU1JrTXhPRFkzSUFvSkNVQnNhWE4wSUQwZ2MzQnNhWFFvTHlSQ2IzVnVaR0Z5ZVM4c0lDUnBiaWs3SUFvSkNTUklaV0ZrWlhKQ2IyUjVJRDBnSkd4cGMzUmJNVjA3Q2drSkpFaGxZV1JsY2tKdlpIa2dQWDRnTDF4eVhHNWNjbHh1ZkZ4dVhHNHZPd29KQ1NSSVpXRmtaWElnUFNBa1lEc0tDUWtrUW05a2VTQTlJQ1FuT3dvZ0NRa2tRbTlrZVNBOWZpQnpMMXh5WEc0a0x5ODdJQ01nZEdobElHeGhjM1FnWEhKY2JpQjNZWE1nY0hWMElHbHVJR0o1SUU1bGRITmpZWEJsQ2drSkpHbHVleWRtYVd4bFpHRjBZU2Q5SUQwZ0pFSnZaSGs3Q2drSkpFaGxZV1JsY2lBOWZpQXZabWxzWlc1aGJXVTlYQ0lvTGlzcFhDSXZPeUFLQ1Fra2FXNTdKMlluZlNBOUlDUXhPeUFLQ1Fra2FXNTdKMlluZlNBOWZpQnpMMXdpTHk5bk93b0pDU1JwYm5zblppZDlJRDErSUhNdlhITXZMMmM3Q2dvSkNTTWdjR0Z5YzJVZ2RISmhhV3hsY2dvSkNXWnZjaWdrYVQweU95QWtiR2x6ZEZza2FWMDdJQ1JwS3lzcENna0pleUFLQ1FrSkpHeHBjM1JiSkdsZElEMStJSE12WGk0cmJtRnRaVDBrTHk4N0Nna0pDU1JzYVhOMFd5UnBYU0E5ZmlBdlhDSW9YSGNyS1Z3aUx6c0tDUWtKSkd0bGVTQTlJQ1F4T3dvSkNRa2tkbUZzSUQwZ0pDYzdDZ2tKQ1NSMllXd2dQWDRnY3k4b1hpaGNjbHh1WEhKY2JueGNibHh1S1NsOEtGeHlYRzRrZkZ4dUpDa3ZMMmM3Q2drSkNTUjJZV3dnUFg0Z2N5OGxLQzR1S1M5d1lXTnJLQ0pqSWl3Z2FHVjRLQ1F4S1NrdloyVTdDZ2tKQ1NScGJuc2thMlY1ZlNBOUlDUjJZV3c3SUFvSkNYMEtDWDBLQ1dWc2MyVWdJeUJ6ZEdGdVpHRnlaQ0J3YjNOMElHUmhkR0VnS0hWeWJDQmxibU52WkdWa0xDQnViM1FnYlhWc2RHbHdZWEowS1FvSmV3b0pDVUJwYmlBOUlITndiR2wwS0M4bUx5d2dKR2x1S1RzS0NRbG1iM0psWVdOb0lDUnBJQ2d3SUM0dUlDUWphVzRwQ2drSmV3b0pDUWtrYVc1YkpHbGRJRDErSUhNdlhDc3ZJQzluT3dvSkNRa29KR3RsZVN3Z0pIWmhiQ2tnUFNCemNHeHBkQ2d2UFM4c0lDUnBibHNrYVYwc0lESXBPd29KQ1Fra2EyVjVJRDErSUhNdkpTZ3VMaWt2Y0dGamF5Z2lZeUlzSUdobGVDZ2tNU2twTDJkbE93b0pDUWtrZG1Gc0lEMStJSE12SlNndUxpa3ZjR0ZqYXlnaVl5SXNJR2hsZUNna01Ta3BMMmRsT3dvSkNRa2thVzU3Skd0bGVYMGdMajBnSWx3d0lpQnBaaUFvWkdWbWFXNWxaQ2drYVc1N0pHdGxlWDBwS1RzS0NRa0pKR2x1ZXlSclpYbDlJQzQ5SUNSMllXdzdDZ2tKZlFvSmZRcDlDZ29qTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRDaU1nVUhKcGJuUnpJSFJvWlNCSVZFMU1JRkJoWjJVZ1NHVmhaR1Z5Q2lNZ1FYSm5kVzFsYm5RZ01Ub2dSbTl5YlNCcGRHVnRJRzVoYldVZ2RHOGdkMmhwWTJnZ1ptOWpkWE1nYzJodmRXeGtJR0psSUhObGRBb2pMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdENuTjFZaUJRY21sdWRGQmhaMlZJWldGa1pYSUtld29KSkVWdVkyOWtaV1JEZFhKeVpXNTBSR2x5SUQwZ0pFTjFjbkpsYm5SRWFYSTdDZ2trUlc1amIyUmxaRU4xY25KbGJuUkVhWElnUFg0Z2N5OG9XMTVoTFhwQkxWb3dMVGxkS1M4bkpTY3VkVzV3WVdOcktDSklLaUlzSkRFcEwyVm5Pd29KY0hKcGJuUWdJa052Ym5SbGJuUXRkSGx3WlRvZ2RHVjRkQzlvZEcxc1hHNWNiaUk3Q2dsd2NtbHVkQ0E4UEVWT1JEc0tQR2gwYld3K0NqeG9aV0ZrUGdvOGRHbDBiR1UrUTBkSkxWUmxiRzVsZENCV1pYSnphVzl1SURFdU1Ed3ZkR2wwYkdVK0NpUklkRzFzVFdWMFlVaGxZV1JsY2dvOEwyaGxZV1ErQ2p4aWIyUjVJRzl1VEc5aFpEMGlaRzlqZFcxbGJuUXVaaTVBWHk1bWIyTjFjeWdwSWlCaVoyTnZiRzl5UFNJak1EQXdNREF3SWlCMGIzQnRZWEpuYVc0OUlqQWlJR3hsWm5SdFlYSm5hVzQ5SWpBaUlHMWhjbWRwYm5kcFpIUm9QU0l3SWlCdFlYSm5hVzVvWldsbmFIUTlJakFpUGdvOGRHRmliR1VnWW05eVpHVnlQU0l4SWlCM2FXUjBhRDBpTVRBd0pTSWdZMlZzYkhOd1lXTnBibWM5SWpBaUlHTmxiR3h3WVdSa2FXNW5QU0l5SWo0S1BIUnlQZ284ZEdRZ1ltZGpiMnh2Y2owaUkwTXlRa1pCTlNJZ1ltOXlaR1Z5WTI5c2IzSTlJaU13TURBd09EQWlJR0ZzYVdkdVBTSmpaVzUwWlhJaVBnbzhZajQ4Wm05dWRDQmpiMnh2Y2owaUl6QXdNREE0TUNJZ2MybDZaVDBpTWlJK0l6d3ZabTl1ZEQ0OEwySStQQzkwWkQ0S1BIUmtJR0puWTI5c2IzSTlJaU13TURBd09EQWlQanhtYjI1MElHWmhZMlU5SWxabGNtUmhibUVpSUhOcGVtVTlJaklpSUdOdmJHOXlQU0lqUmtaR1JrWkdJajQ4WWo1RFIwa3RWR1ZzYm1WMElGWmxjbk5wYjI0Z01TNHdJQzBnUTI5dWJtVmpkR1ZrSUhSdklDUlRaWEoyWlhKT1lXMWxQQzlpUGp3dlptOXVkRDQ4TDNSa1BnbzhMM1J5UGdvOGRISStDangwWkNCamIyeHpjR0Z1UFNJeUlpQmlaMk52Ykc5eVBTSWpRekpDUmtFMUlqNDhabTl1ZENCbVlXTmxQU0pXWlhKa1lXNWhJaUJ6YVhwbFBTSXlJajRLUEdFZ2FISmxaajBpSkZOamNtbHdkRXh2WTJGMGFXOXVQMkU5ZFhCc2IyRmtKbVE5SkVWdVkyOWtaV1JEZFhKeVpXNTBSR2x5SWo1VmNHeHZZV1FnUm1sc1pUd3ZZVDRnZkNBS1BHRWdhSEpsWmowaUpGTmpjbWx3ZEV4dlkyRjBhVzl1UDJFOVpHOTNibXh2WVdRbVpEMGtSVzVqYjJSbFpFTjFjbkpsYm5SRWFYSWlQa1J2ZDI1c2IyRmtJRVpwYkdVOEwyRStJSHdLUEdFZ2FISmxaajBpSkZOamNtbHdkRXh2WTJGMGFXOXVQMkU5Ykc5bmIzVjBJajVFYVhOamIyNXVaV04wUEM5aFBpQjhDanhoSUdoeVpXWTlJbWgwZEhBNkx5OTNkM2N1Y205b2FYUmhZaTVqYjIwdlkyZHBjMk55YVhCMGN5OWpaMmwwWld4dVpYUXVhSFJ0YkNJK1NHVnNjRHd2WVQ0S1BDOW1iMjUwUGp3dmRHUStDand2ZEhJK0Nqd3ZkR0ZpYkdVK0NqeG1iMjUwSUdOdmJHOXlQU0lqUXpCRE1FTXdJaUJ6YVhwbFBTSXpJajRLUlU1RUNuMEtDaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMEtJeUJRY21sdWRITWdkR2hsSUV4dloybHVJRk5qY21WbGJnb2pMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdENuTjFZaUJRY21sdWRFeHZaMmx1VTJOeVpXVnVDbnNLQ1NSTlpYTnpZV2RsSUQwZ2NTUThjSEpsUGp4bWIyNTBJR052Ykc5eVBTSWpOalk1T1RrNUlqNGdYMTlmWDE4Z0lGOWZYMTlmSUNCZlgxOWZYeUFnSUNBZ0lDQWdJQ0JmWDE5Zlh5QWdJQ0FnSUNBZ1h5QWdJQ0FnSUNBZ0lDQWdJQ0FnSUY4S0x5QWdYMThnWEh3Z0lGOWZJRng4WHlBZ0lGOThJQ0FnSUNBZ0lDQjhYeUFnSUY5OElDQWdJQ0FnZkNCOElDQWdJQ0FnSUNBZ0lDQWdJSHdnZkFwOElDOGdJRnd2ZkNCOElDQmNMeUFnZkNCOElDQWdYMTlmWDE5ZklDQWdmQ0I4SUNBZ0lGOWZYeUI4SUh3Z1h5QmZYeUFnSUNCZlgxOGdmQ0I4WHdwOElId2dJQ0FnZkNCOElGOWZJQ0FnZkNCOElDQjhYMTlmWDE5ZmZDQWdmQ0I4SUNBZ0x5QmZJRng4SUh4OElDZGZJRndnSUM4Z1h5QmNmQ0JmWDN3S2ZDQmNYMTh2WEh3Z2ZGOWNJRndnWDN3Z2ZGOGdJQ0FnSUNBZ0lDQWdJSHdnZkNBZ2ZDQWdYMTh2ZkNCOGZDQjhJSHdnZkh3Z0lGOWZMM3dnZkY4S0lGeGZYMTlmTHlCY1gxOWZYeThnWEY5Zlh5OGdJQ0FnSUNBZ0lDQWdJRnhmTHlBZ0lGeGZYMTk4ZkY5OGZGOThJSHhmZkNCY1gxOWZmQ0JjWDE5OElERXVNQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBbzhMMlp2Ym5RK1BHWnZiblFnWTI5c2IzSTlJaU5HUmpBd01EQWlQaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCZlgxOWZYMThnSUNBZ0lDQWdJQ0FnSUNBZ1BDOW1iMjUwUGp4bWIyNTBJR052Ykc5eVBTSWpRVVU0TXpBd0lqN0NxU0F5TURBeExDQlNiMmhwZEdGaUlFSmhkSEpoUEM5bWIyNTBQanhtYjI1MElHTnZiRzl5UFNJalJrWXdNREF3SWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDNHRKbkYxYjNRN0lDQWdJQ0FnSm5GMWIzUTdMUzRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHlBZ0lDQWdJQ0FnSUNBZ0lGd0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjhJQ0FnSUNBZ0lDQWdJQ0FnSUNCOENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZDd2dJQzR0TGlBZ0xpMHVJQ0FzZkFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh3Z0tTaGZieThnSUZ4dlh5a29JSHdLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I4THlBZ0lDQWdMMXdnSUNBZ0lGeDhDaUFnSUNBZ0lDQW9RRjhnSUNBZ0lDQWdLRjhnSUNBZ0lGNWVJQ0FnSUNCZktRb2dJRjhnSUNBZ0lDa2dYRHd2Wm05dWRENDhabTl1ZENCamIyeHZjajBpSXpnd09EQTRNQ0krWDE5ZlgxOWZYend2Wm05dWRENDhabTl1ZENCamIyeHZjajBpSTBaR01EQXdNQ0krWER3dlptOXVkRDQ4Wm05dWRDQmpiMnh2Y2owaUl6Z3dPREE0TUNJK1gxODhMMlp2Ym5RK1BHWnZiblFnWTI5c2IzSTlJaU5HUmpBd01EQWlQbnhKU1VsSlNVbDhQQzltYjI1MFBqeG1iMjUwSUdOdmJHOXlQU0lqT0RBNE1EZ3dJajVmWHp3dlptOXVkRDQ4Wm05dWRDQmpiMnh2Y2owaUkwWkdNREF3TUNJK0x6d3ZabTl1ZEQ0OFptOXVkQ0JqYjJ4dmNqMGlJemd3T0RBNE1DSStYMTlmWDE5ZlgxOWZYMTlmWDE5ZlgxOWZYMTlmWDE4S1BDOW1iMjUwUGp4bWIyNTBJR052Ykc5eVBTSWpSa1l3TURBd0lqNGdLRjhwUEM5bWIyNTBQanhtYjI1MElHTnZiRzl5UFNJak9EQTRNRGd3SWo1QU9FQTRQQzltYjI1MFBqeG1iMjUwSUdOdmJHOXlQU0lqUmtZd01EQXdJajU3ZlR3dlptOXVkRDQ4Wm05dWRDQmpiMnh2Y2owaUl6Z3dPREE0TUNJK0pteDBPMTlmWDE5ZlgxOWZQQzltYjI1MFBqeG1iMjUwSUdOdmJHOXlQU0lqUmtZd01EQXdJajU4TFZ4SlNVbEpTVWt2TFh3OEwyWnZiblErUEdadmJuUWdZMjlzYjNJOUlpTTRNRGd3T0RBaVBsOWZYMTlmWDE5ZlgxOWZYMTlmWDE5ZlgxOWZYMTlmWHlabmREczhMMlp2Ym5RK1BHWnZiblFnWTI5c2IzSTlJaU5HUmpBd01EQWlQZ29nSUNBZ0lDQWdJQ2xmTHlBZ0lDQWdJQ0FnWENBZ0lDQWdJQ0FnSUNBdklBb2dJQ0FnSUNBZ0tFQWdJQ0FnSUNBZ0lDQWdJR0F0TFMwdExTMHRMV0FLSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZabTl1ZEQ0OFptOXVkQ0JqYjJ4dmNqMGlJMEZGT0RNd01DSStWeUJCSUZJZ1RpQkpJRTRnUnpvZ1VISnBkbUYwWlNCVFpYSjJaWEk4TDJadmJuUStQQzl3Y21VK0NpUTdDaU1uQ2dsd2NtbHVkQ0E4UEVWT1JEc0tQR052WkdVK0NsUnllV2x1WnlBa1UyVnlkbVZ5VG1GdFpTNHVManhpY2o0S1EyOXVibVZqZEdWa0lIUnZJQ1JUWlhKMlpYSk9ZVzFsUEdKeVBncEZjMk5oY0dVZ1kyaGhjbUZqZEdWeUlHbHpJRjVkQ2p4amIyUmxQaVJOWlhOellXZGxDa1ZPUkFwOUNnb2pMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdENpTWdVSEpwYm5SeklIUm9aU0J0WlhOellXZGxJSFJvWVhRZ2FXNW1iM0p0Y3lCMGFHVWdkWE5sY2lCdlppQmhJR1poYVd4bFpDQnNiMmRwYmdvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0Q25OMVlpQlFjbWx1ZEV4dloybHVSbUZwYkdWa1RXVnpjMkZuWlFwN0NnbHdjbWx1ZENBOFBFVk9SRHNLUEdOdlpHVStDanhpY2o1c2IyZHBiam9nWVdSdGFXNDhZbkkrQ25CaGMzTjNiM0prT2p4aWNqNEtURzluYVc0Z2FXNWpiM0p5WldOMFBHSnlQanhpY2o0S1BDOWpiMlJsUGdwRlRrUUtmUW9LSXkwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUW9qSUZCeWFXNTBjeUIwYUdVZ1NGUk5UQ0JtYjNKdElHWnZjaUJzYjJkbmFXNW5JR2x1Q2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzBLYzNWaUlGQnlhVzUwVEc5bmFXNUdiM0p0Q25zS0NYQnlhVzUwSUR3OFJVNUVPd284WTI5a1pUNEtQR1p2Y20wZ2JtRnRaVDBpWmlJZ2JXVjBhRzlrUFNKUVQxTlVJaUJoWTNScGIyNDlJaVJUWTNKcGNIUk1iMk5oZEdsdmJpSStDanhwYm5CMWRDQjBlWEJsUFNKb2FXUmtaVzRpSUc1aGJXVTlJbUVpSUhaaGJIVmxQU0pzYjJkcGJpSStDbXh2WjJsdU9pQmhaRzFwYmp4aWNqNEtjR0Z6YzNkdmNtUTZQR2x1Y0hWMElIUjVjR1U5SW5CaGMzTjNiM0prSWlCdVlXMWxQU0p3SWo0S1BHbHVjSFYwSUhSNWNHVTlJbk4xWW0xcGRDSWdkbUZzZFdVOUlrVnVkR1Z5SWo0S1BDOW1iM0p0UGdvOEwyTnZaR1UrQ2tWT1JBcDlDZ29qTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRDaU1nVUhKcGJuUnpJSFJvWlNCbWIyOTBaWElnWm05eUlIUm9aU0JJVkUxTUlGQmhaMlVLSXkwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUXB6ZFdJZ1VISnBiblJRWVdkbFJtOXZkR1Z5Q25zS0NYQnlhVzUwSUNJOEwyWnZiblErUEM5aWIyUjVQand2YUhSdGJENGlPd3A5Q2dvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0Q2lNZ1VtVjBjbVZwZG1WeklIUm9aU0IyWVd4MVpYTWdiMllnWVd4c0lHTnZiMnRwWlhNdUlGUm9aU0JqYjI5cmFXVnpJR05oYmlCaVpTQmhZMk5sYzNObGN5QjFjMmx1WnlCMGFHVUtJeUIyWVhKcFlXSnNaU0FrUTI5dmEybGxjM3NuSjMwS0l5MHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFFwemRXSWdSMlYwUTI5dmEybGxjd3A3Q2dsQWFIUjBjR052YjJ0cFpYTWdQU0J6Y0d4cGRDZ3ZPeUF2TENSRlRsWjdKMGhVVkZCZlEwOVBTMGxGSjMwcE93b0pabTl5WldGamFDQWtZMjl2YTJsbEtFQm9kSFJ3WTI5dmEybGxjeWtLQ1hzS0NRa29KR2xrTENBa2RtRnNLU0E5SUhOd2JHbDBLQzg5THl3Z0pHTnZiMnRwWlNrN0Nna0pKRU52YjJ0cFpYTjdKR2xrZlNBOUlDUjJZV3c3Q2dsOUNuMEtDaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMEtJeUJRY21sdWRITWdkR2hsSUhOamNtVmxiaUIzYUdWdUlIUm9aU0IxYzJWeUlHeHZaM01nYjNWMENpTXRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwS2MzVmlJRkJ5YVc1MFRHOW5iM1YwVTJOeVpXVnVDbnNLQ1hCeWFXNTBJQ0k4WTI5a1pUNURiMjV1WldOMGFXOXVJR05zYjNObFpDQmllU0JtYjNKbGFXZHVJR2h2YzNRdVBHSnlQanhpY2o0OEwyTnZaR1UrSWpzS2ZRb0tJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRb2pJRXh2WjNNZ2IzVjBJSFJvWlNCMWMyVnlJR0Z1WkNCaGJHeHZkM01nZEdobElIVnpaWElnZEc4Z2JHOW5hVzRnWVdkaGFXNEtJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRcHpkV0lnVUdWeVptOXliVXh2WjI5MWRBcDdDZ2x3Y21sdWRDQWlVMlYwTFVOdmIydHBaVG9nVTBGV1JVUlFWMFE5TzF4dUlqc2dJeUJ5WlcxdmRtVWdjR0Z6YzNkdmNtUWdZMjl2YTJsbENna21VSEpwYm5SUVlXZGxTR1ZoWkdWeUtDSndJaWs3Q2drbVVISnBiblJNYjJkdmRYUlRZM0psWlc0N0Nna21VSEpwYm5STWIyZHBibE5qY21WbGJqc0tDU1pRY21sdWRFeHZaMmx1Um05eWJUc0tDU1pRY21sdWRGQmhaMlZHYjI5MFpYSTdDbjBLQ2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzBLSXlCVWFHbHpJR1oxYm1OMGFXOXVJR2x6SUdOaGJHeGxaQ0IwYnlCc2IyZHBiaUIwYUdVZ2RYTmxjaTRnU1dZZ2RHaGxJSEJoYzNOM2IzSmtJRzFoZEdOb1pYTXNJR2wwQ2lNZ1pHbHpjR3hoZVhNZ1lTQndZV2RsSUhSb1lYUWdZV3hzYjNkeklIUm9aU0IxYzJWeUlIUnZJSEoxYmlCamIyMXRZVzVrY3k0Z1NXWWdkR2hsSUhCaGMzTjNiM0prSUdSdlpXNXpKM1FLSXlCdFlYUmphQ0J2Y2lCcFppQnVieUJ3WVhOemQyOXlaQ0JwY3lCbGJuUmxjbVZrTENCcGRDQmthWE53YkdGNWN5QmhJR1p2Y20wZ2RHaGhkQ0JoYkd4dmQzTWdkR2hsSUhWelpYSUtJeUIwYnlCc2IyZHBiZ29qTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRDbk4xWWlCUVpYSm1iM0p0VEc5bmFXNGdDbnNLQ1dsbUtDUk1iMmRwYmxCaGMzTjNiM0prSUdWeElDUlFZWE56ZDI5eVpDa2dJeUJ3WVhOemQyOXlaQ0J0WVhSamFHVmtDZ2w3Q2drSmNISnBiblFnSWxObGRDMURiMjlyYVdVNklGTkJWa1ZFVUZkRVBTUk1iMmRwYmxCaGMzTjNiM0prTzF4dUlqc0tDUWttVUhKcGJuUlFZV2RsU0dWaFpHVnlLQ0pqSWlrN0Nna0pKbEJ5YVc1MFEyOXRiV0Z1WkV4cGJtVkpibkIxZEVadmNtMDdDZ2tKSmxCeWFXNTBVR0ZuWlVadmIzUmxjanNLQ1gwS0NXVnNjMlVnSXlCd1lYTnpkMjl5WkNCa2FXUnVKM1FnYldGMFkyZ0tDWHNLQ1FrbVVISnBiblJRWVdkbFNHVmhaR1Z5S0NKd0lpazdDZ2tKSmxCeWFXNTBURzluYVc1VFkzSmxaVzQ3Q2drSmFXWW9KRXh2WjJsdVVHRnpjM2R2Y21RZ2JtVWdJaUlwSUNNZ2MyOXRaU0J3WVhOemQyOXlaQ0IzWVhNZ1pXNTBaWEpsWkFvSkNYc0tDUWtKSmxCeWFXNTBURzluYVc1R1lXbHNaV1JOWlhOellXZGxPd29KQ1gwS0NRa21VSEpwYm5STWIyZHBia1p2Y20wN0Nna0pKbEJ5YVc1MFVHRm5aVVp2YjNSbGNqc0tDWDBLZlFvS0l5MHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFFvaklGQnlhVzUwY3lCMGFHVWdTRlJOVENCbWIzSnRJSFJvWVhRZ1lXeHNiM2R6SUhSb1pTQjFjMlZ5SUhSdklHVnVkR1Z5SUdOdmJXMWhibVJ6Q2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzBLYzNWaUlGQnlhVzUwUTI5dGJXRnVaRXhwYm1WSmJuQjFkRVp2Y20wS2V3b0pKRkJ5YjIxd2RDQTlJQ1JYYVc1T1ZDQS9JQ0lrUTNWeWNtVnVkRVJwY2o0Z0lpQTZJQ0piWVdSdGFXNWNRQ1JUWlhKMlpYSk9ZVzFsSUNSRGRYSnlaVzUwUkdseVhWd2tJQ0k3Q2dsd2NtbHVkQ0E4UEVWT1JEc0tQR052WkdVK0NqeG1iM0p0SUc1aGJXVTlJbVlpSUcxbGRHaHZaRDBpVUU5VFZDSWdZV04wYVc5dVBTSWtVMk55YVhCMFRHOWpZWFJwYjI0aVBnbzhhVzV3ZFhRZ2RIbHdaVDBpYUdsa1pHVnVJaUJ1WVcxbFBTSmhJaUIyWVd4MVpUMGlZMjl0YldGdVpDSStDanhwYm5CMWRDQjBlWEJsUFNKb2FXUmtaVzRpSUc1aGJXVTlJbVFpSUhaaGJIVmxQU0lrUTNWeWNtVnVkRVJwY2lJK0NpUlFjbTl0Y0hRS1BHbHVjSFYwSUhSNWNHVTlJblJsZUhRaUlHNWhiV1U5SW1NaVBnbzhhVzV3ZFhRZ2RIbHdaVDBpYzNWaWJXbDBJaUIyWVd4MVpUMGlSVzUwWlhJaVBnbzhMMlp2Y20wK0Nqd3ZZMjlrWlQ0S1JVNUVDbjBLQ2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzBLSXlCUWNtbHVkSE1nZEdobElFaFVUVXdnWm05eWJTQjBhR0YwSUdGc2JHOTNjeUIwYUdVZ2RYTmxjaUIwYnlCa2IzZHViRzloWkNCbWFXeGxjd29qTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRDbk4xWWlCUWNtbHVkRVpwYkdWRWIzZHViRzloWkVadmNtMEtld29KSkZCeWIyMXdkQ0E5SUNSWGFXNU9WQ0EvSUNJa1EzVnljbVZ1ZEVScGNqNGdJaUE2SUNKYllXUnRhVzVjUUNSVFpYSjJaWEpPWVcxbElDUkRkWEp5Wlc1MFJHbHlYVndrSUNJN0NnbHdjbWx1ZENBOFBFVk9SRHNLUEdOdlpHVStDanhtYjNKdElHNWhiV1U5SW1ZaUlHMWxkR2h2WkQwaVVFOVRWQ0lnWVdOMGFXOXVQU0lrVTJOeWFYQjBURzlqWVhScGIyNGlQZ284YVc1d2RYUWdkSGx3WlQwaWFHbGtaR1Z1SWlCdVlXMWxQU0prSWlCMllXeDFaVDBpSkVOMWNuSmxiblJFYVhJaVBnbzhhVzV3ZFhRZ2RIbHdaVDBpYUdsa1pHVnVJaUJ1WVcxbFBTSmhJaUIyWVd4MVpUMGlaRzkzYm14dllXUWlQZ29rVUhKdmJYQjBJR1J2ZDI1c2IyRmtQR0p5UGp4aWNqNEtSbWxzWlc1aGJXVTZJRHhwYm5CMWRDQjBlWEJsUFNKMFpYaDBJaUJ1WVcxbFBTSm1JaUJ6YVhwbFBTSXpOU0krUEdKeVBqeGljajRLUkc5M2JteHZZV1E2SUR4cGJuQjFkQ0IwZVhCbFBTSnpkV0p0YVhRaUlIWmhiSFZsUFNKQ1pXZHBiaUkrQ2p3dlptOXliVDRLUEM5amIyUmxQZ3BGVGtRS2ZRb0tJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRb2pJRkJ5YVc1MGN5QjBhR1VnU0ZSTlRDQm1iM0p0SUhSb1lYUWdZV3hzYjNkeklIUm9aU0IxYzJWeUlIUnZJSFZ3Ykc5aFpDQm1hV3hsY3dvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0Q25OMVlpQlFjbWx1ZEVacGJHVlZjR3h2WVdSR2IzSnRDbnNLQ1NSUWNtOXRjSFFnUFNBa1YybHVUbFFnUHlBaUpFTjFjbkpsYm5SRWFYSStJQ0lnT2lBaVcyRmtiV2x1WEVBa1UyVnlkbVZ5VG1GdFpTQWtRM1Z5Y21WdWRFUnBjbDFjSkNBaU93b0pjSEpwYm5RZ1BEeEZUa1E3Q2p4amIyUmxQZ284Wm05eWJTQnVZVzFsUFNKbUlpQmxibU4wZVhCbFBTSnRkV3gwYVhCaGNuUXZabTl5YlMxa1lYUmhJaUJ0WlhSb2IyUTlJbEJQVTFRaUlHRmpkR2x2YmowaUpGTmpjbWx3ZEV4dlkyRjBhVzl1SWo0S0pGQnliMjF3ZENCMWNHeHZZV1E4WW5JK1BHSnlQZ3BHYVd4bGJtRnRaVG9nUEdsdWNIVjBJSFI1Y0dVOUltWnBiR1VpSUc1aGJXVTlJbVlpSUhOcGVtVTlJak0xSWo0OFluSStQR0p5UGdwUGNIUnBiMjV6T2lBbWJtSnpjRHM4YVc1d2RYUWdkSGx3WlQwaVkyaGxZMnRpYjNnaUlHNWhiV1U5SW04aUlIWmhiSFZsUFNKdmRtVnlkM0pwZEdVaVBncFBkbVZ5ZDNKcGRHVWdhV1lnYVhRZ1JYaHBjM1J6UEdKeVBqeGljajRLVlhCc2IyRmtPaVp1WW5Od095WnVZbk53T3ladVluTndPenhwYm5CMWRDQjBlWEJsUFNKemRXSnRhWFFpSUhaaGJIVmxQU0pDWldkcGJpSStDanhwYm5CMWRDQjBlWEJsUFNKb2FXUmtaVzRpSUc1aGJXVTlJbVFpSUhaaGJIVmxQU0lrUTNWeWNtVnVkRVJwY2lJK0NqeHBibkIxZENCMGVYQmxQU0pvYVdSa1pXNGlJRzVoYldVOUltRWlJSFpoYkhWbFBTSjFjR3h2WVdRaVBnbzhMMlp2Y20wK0Nqd3ZZMjlrWlQ0S1JVNUVDbjBLQ2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzBLSXlCVWFHbHpJR1oxYm1OMGFXOXVJR2x6SUdOaGJHeGxaQ0IzYUdWdUlIUm9aU0IwYVcxbGIzVjBJR1p2Y2lCaElHTnZiVzFoYm1RZ1pYaHdhWEpsY3k0Z1YyVWdibVZsWkNCMGJ3b2pJSFJsY20xcGJtRjBaU0IwYUdVZ2MyTnlhWEIwSUdsdGJXVmthV0YwWld4NUxpQlVhR2x6SUdaMWJtTjBhVzl1SUdseklIWmhiR2xrSUc5dWJIa2diMjRnVlc1cGVDNGdTWFFnYVhNS0l5QnVaWFpsY2lCallXeHNaV1FnZDJobGJpQjBhR1VnYzJOeWFYQjBJR2x6SUhKMWJtNXBibWNnYjI0Z1RsUXVDaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMEtjM1ZpSUVOdmJXMWhibVJVYVcxbGIzVjBDbnNLQ1dsbUtDRWtWMmx1VGxRcENnbDdDZ2tKWVd4aGNtMG9NQ2s3Q2drSmNISnBiblFnUER4RlRrUTdDand2ZUcxd1BnbzhZMjlrWlQ0S1EyOXRiV0Z1WkNCbGVHTmxaV1JsWkNCdFlYaHBiWFZ0SUhScGJXVWdiMllnSkVOdmJXMWhibVJVYVcxbGIzVjBSSFZ5WVhScGIyNGdjMlZqYjI1a0tITXBMZ284WW5JK1MybHNiR1ZrSUdsMElRbzhZMjlrWlQ0S1JVNUVDZ2tKSmxCeWFXNTBRMjl0YldGdVpFeHBibVZKYm5CMWRFWnZjbTA3Q2drSkpsQnlhVzUwVUdGblpVWnZiM1JsY2pzS0NRbGxlR2wwT3dvSmZRcDlDZ29qTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRDaU1nVkdocGN5Qm1kVzVqZEdsdmJpQnBjeUJqWVd4c1pXUWdkRzhnWlhobFkzVjBaU0JqYjIxdFlXNWtjeTRnU1hRZ1pHbHpjR3hoZVhNZ2RHaGxJRzkxZEhCMWRDQnZaaUIwYUdVS0l5QmpiMjF0WVc1a0lHRnVaQ0JoYkd4dmQzTWdkR2hsSUhWelpYSWdkRzhnWlc1MFpYSWdZVzV2ZEdobGNpQmpiMjF0WVc1a0xpQlVhR1VnWTJoaGJtZGxJR1JwY21WamRHOXllUW9qSUdOdmJXMWhibVFnYVhNZ2FHRnVaR3hsWkNCa2FXWm1aWEpsYm5Sc2VTNGdTVzRnZEdocGN5QmpZWE5sTENCMGFHVWdibVYzSUdScGNtVmpkRzl5ZVNCcGN5QnpkRzl5WldRZ2FXNEtJeUJoYmlCcGJuUmxjbTVoYkNCMllYSnBZV0pzWlNCaGJtUWdhWE1nZFhObFpDQmxZV05vSUhScGJXVWdZU0JqYjIxdFlXNWtJR2hoY3lCMGJ5QmlaU0JsZUdWamRYUmxaQzRnVkdobENpTWdiM1YwY0hWMElHOW1JSFJvWlNCamFHRnVaMlVnWkdseVpXTjBiM0o1SUdOdmJXMWhibVFnYVhNZ2JtOTBJR1JwYzNCc1lYbGxaQ0IwYnlCMGFHVWdkWE5sY25NS0l5QjBhR1Z5WldadmNtVWdaWEp5YjNJZ2JXVnpjMkZuWlhNZ1kyRnVibTkwSUdKbElHUnBjM0JzWVhsbFpDNEtJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRcHpkV0lnUlhobFkzVjBaVU52YlcxaGJtUUtld29KYVdZb0pGSjFia052YlcxaGJtUWdQWDRnYlM5ZVhITXFZMlJjY3lzb0xpc3BMeWtnSXlCcGRDQnBjeUJoSUdOb1lXNW5aU0JrYVhJZ1kyOXRiV0Z1WkFvSmV3b0pDU01nZDJVZ1kyaGhibWRsSUhSb1pTQmthWEpsWTNSdmNua2dhVzUwWlhKdVlXeHNlUzRnVkdobElHOTFkSEIxZENCdlppQjBhR1VLQ1FraklHTnZiVzFoYm1RZ2FYTWdibTkwSUdScGMzQnNZWGxsWkM0S0NRa0tDUWtrVDJ4a1JHbHlJRDBnSkVOMWNuSmxiblJFYVhJN0Nna0pKRU52YlcxaGJtUWdQU0FpWTJRZ1hDSWtRM1Z5Y21WdWRFUnBjbHdpSWk0a1EyMWtVMlZ3TGlKalpDQWtNU0l1SkVOdFpGTmxjQzRrUTIxa1VIZGtPd29KQ1dOb2IzQW9KRU4xY25KbGJuUkVhWElnUFNCZ0pFTnZiVzFoYm1SZ0tUc0tDUWttVUhKcGJuUlFZV2RsU0dWaFpHVnlLQ0pqSWlrN0Nna0pKRkJ5YjIxd2RDQTlJQ1JYYVc1T1ZDQS9JQ0lrVDJ4a1JHbHlQaUFpSURvZ0lsdGhaRzFwYmx4QUpGTmxjblpsY2s1aGJXVWdKRTlzWkVScGNsMWNKQ0FpT3dvSkNYQnlhVzUwSUNJOFkyOWtaVDRrVUhKdmJYQjBJQ1JTZFc1RGIyMXRZVzVrUEM5amIyUmxQaUk3Q2dsOUNnbGxiSE5sSUNNZ2MyOXRaU0J2ZEdobGNpQmpiMjF0WVc1a0xDQmthWE53YkdGNUlIUm9aU0J2ZFhSd2RYUUtDWHNLQ1FrbVVISnBiblJRWVdkbFNHVmhaR1Z5S0NKaklpazdDZ2tKSkZCeWIyMXdkQ0E5SUNSWGFXNU9WQ0EvSUNJa1EzVnljbVZ1ZEVScGNqNGdJaUE2SUNKYllXUnRhVzVjUUNSVFpYSjJaWEpPWVcxbElDUkRkWEp5Wlc1MFJHbHlYVndrSUNJN0Nna0pjSEpwYm5RZ0lqeGpiMlJsUGlSUWNtOXRjSFFnSkZKMWJrTnZiVzFoYm1ROEwyTnZaR1UrUEhodGNENGlPd29KQ1NSRGIyMXRZVzVrSUQwZ0ltTmtJRndpSkVOMWNuSmxiblJFYVhKY0lpSXVKRU50WkZObGNDNGtVblZ1UTI5dGJXRnVaQzRrVW1Wa2FYSmxZM1J2Y2pzS0NRbHBaaWdoSkZkcGJrNVVLUW9KQ1hzS0NRa0pKRk5KUjNzblFVeFNUU2Q5SUQwZ1hDWkRiMjF0WVc1a1ZHbHRaVzkxZERzS0NRa0pZV3hoY20wb0pFTnZiVzFoYm1SVWFXMWxiM1YwUkhWeVlYUnBiMjRwT3dvSkNYMEtDUWxwWmlna1UyaHZkMFI1Ym1GdGFXTlBkWFJ3ZFhRcElDTWdjMmh2ZHlCdmRYUndkWFFnWVhNZ2FYUWdhWE1nWjJWdVpYSmhkR1ZrQ2drSmV3b0pDUWtrZkQweE93b0pDUWtrUTI5dGJXRnVaQ0F1UFNBaUlId2lPd29KQ1FsdmNHVnVLRU52YlcxaGJtUlBkWFJ3ZFhRc0lDUkRiMjF0WVc1a0tUc0tDUWtKZDJocGJHVW9QRU52YlcxaGJtUlBkWFJ3ZFhRK0tRb0pDUWw3Q2drSkNRa2tYeUE5ZmlCekx5aGNibnhjY2x4dUtTUXZMenNLQ1FrSkNYQnlhVzUwSUNJa1gxeHVJanNLQ1FrSmZRb0pDUWtrZkQwd093b0pDWDBLQ1FsbGJITmxJQ01nYzJodmR5QnZkWFJ3ZFhRZ1lXWjBaWElnWTI5dGJXRnVaQ0JqYjIxd2JHVjBaWE1LQ1FsN0Nna0pDWEJ5YVc1MElHQWtRMjl0YldGdVpHQTdDZ2tKZlFvSkNXbG1LQ0VrVjJsdVRsUXBDZ2tKZXdvSkNRbGhiR0Z5YlNnd0tUc0tDUWw5Q2drSmNISnBiblFnSWp3dmVHMXdQaUk3Q2dsOUNna21VSEpwYm5SRGIyMXRZVzVrVEdsdVpVbHVjSFYwUm05eWJUc0tDU1pRY21sdWRGQmhaMlZHYjI5MFpYSTdDbjBLQ2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzBLSXlCVWFHbHpJR1oxYm1OMGFXOXVJR1JwYzNCc1lYbHpJSFJvWlNCd1lXZGxJSFJvWVhRZ1kyOXVkR0ZwYm5NZ1lTQnNhVzVySUhkb2FXTm9JR0ZzYkc5M2N5QjBhR1VnZFhObGNnb2pJSFJ2SUdSdmQyNXNiMkZrSUhSb1pTQnpjR1ZqYVdacFpXUWdabWxzWlM0Z1ZHaGxJSEJoWjJVZ1lXeHpieUJqYjI1MFlXbHVjeUJoSUdGMWRHOHRjbVZtY21WemFBb2pJR1psWVhSMWNtVWdkR2hoZENCemRHRnlkSE1nZEdobElHUnZkMjVzYjJGa0lHRjFkRzl0WVhScFkyRnNiSGt1Q2lNZ1FYSm5kVzFsYm5RZ01Ub2dSblZzYkhrZ2NYVmhiR2xtYVdWa0lHWnBiR1Z1WVcxbElHOW1JSFJvWlNCbWFXeGxJSFJ2SUdKbElHUnZkMjVzYjJGa1pXUUtJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRcHpkV0lnVUhKcGJuUkViM2R1Ykc5aFpFeHBibXRRWVdkbENuc0tDV3h2WTJGc0tDUkdhV3hsVlhKc0tTQTlJRUJmT3dvSmFXWW9MV1VnSkVacGJHVlZjbXdwSUNNZ2FXWWdkR2hsSUdacGJHVWdaWGhwYzNSekNnbDdDZ2tKSXlCbGJtTnZaR1VnZEdobElHWnBiR1VnYkdsdWF5QnpieUIzWlNCallXNGdjMlZ1WkNCcGRDQjBieUIwYUdVZ1luSnZkM05sY2dvSkNTUkdhV3hsVlhKc0lEMStJSE12S0Z0ZVlTMTZRUzFhTUMwNVhTa3ZKeVVuTG5WdWNHRmpheWdpU0NvaUxDUXhLUzlsWnpzS0NRa2tSRzkzYm14dllXUk1hVzVySUQwZ0lpUlRZM0pwY0hSTWIyTmhkR2x2Ymo5aFBXUnZkMjVzYjJGa0ptWTlKRVpwYkdWVmNtd21iejFuYnlJN0Nna0pKRWgwYld4TlpYUmhTR1ZoWkdWeUlEMGdJanh0WlhSaElFaFVWRkF0UlZGVlNWWTlYQ0pTWldaeVpYTm9YQ0lnUTA5T1ZFVk9WRDFjSWpFN0lGVlNURDBrUkc5M2JteHZZV1JNYVc1clhDSStJanNLQ1FrbVVISnBiblJRWVdkbFNHVmhaR1Z5S0NKaklpazdDZ2tKY0hKcGJuUWdQRHhGVGtRN0NqeGpiMlJsUGdwVFpXNWthVzVuSUVacGJHVWdKRlJ5WVc1elptVnlSbWxzWlM0dUxqeGljajRLU1dZZ2RHaGxJR1J2ZDI1c2IyRmtJR1J2WlhNZ2JtOTBJSE4wWVhKMElHRjFkRzl0WVhScFkyRnNiSGtzQ2p4aElHaHlaV1k5SWlSRWIzZHViRzloWkV4cGJtc2lQa05zYVdOcklFaGxjbVU4TDJFK0xnbzhMMk52WkdVK0NrVk9SQW9KQ1NaUWNtbHVkRU52YlcxaGJtUk1hVzVsU1c1d2RYUkdiM0p0T3dvSkNTWlFjbWx1ZEZCaFoyVkdiMjkwWlhJN0NnbDlDZ2xsYkhObElDTWdabWxzWlNCa2IyVnpiaWQwSUdWNGFYTjBDZ2w3Q2drSkpsQnlhVzUwVUdGblpVaGxZV1JsY2lnaVppSXBPd29KQ1hCeWFXNTBJQ0k4WTI5a1pUNUdZV2xzWldRZ2RHOGdaRzkzYm14dllXUWdKRVpwYkdWVmNtdzZJQ1FoUEM5amIyUmxQaUk3Q2drSkpsQnlhVzUwUm1sc1pVUnZkMjVzYjJGa1JtOXliVHNLQ1FrbVVISnBiblJRWVdkbFJtOXZkR1Z5T3dvSmZRcDlDZ29qTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRDaU1nVkdocGN5Qm1kVzVqZEdsdmJpQnlaV0ZrY3lCMGFHVWdjM0JsWTJsbWFXVmtJR1pwYkdVZ1puSnZiU0IwYUdVZ1pHbHpheUJoYm1RZ2MyVnVaSE1nYVhRZ2RHOGdkR2hsQ2lNZ1luSnZkM05sY2l3Z2MyOGdkR2hoZENCcGRDQmpZVzRnWW1VZ1pHOTNibXh2WVdSbFpDQmllU0IwYUdVZ2RYTmxjaTRLSXlCQmNtZDFiV1Z1ZENBeE9pQkdkV3hzZVNCeGRXRnNhV1pwWldRZ2NHRjBhRzVoYldVZ2IyWWdkR2hsSUdacGJHVWdkRzhnWW1VZ2MyVnVkQzRLSXkwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUXB6ZFdJZ1UyVnVaRVpwYkdWVWIwSnliM2R6WlhJS2V3b0piRzlqWVd3b0pGTmxibVJHYVd4bEtTQTlJRUJmT3dvSmFXWW9iM0JsYmloVFJVNUVSa2xNUlN3Z0pGTmxibVJHYVd4bEtTa2dJeUJtYVd4bElHOXdaVzVsWkNCbWIzSWdjbVZoWkdsdVp3b0pld29KQ1dsbUtDUlhhVzVPVkNrS0NRbDdDZ2tKQ1dKcGJtMXZaR1VvVTBWT1JFWkpURVVwT3dvSkNRbGlhVzV0YjJSbEtGTlVSRTlWVkNrN0Nna0pmUW9KQ1NSR2FXeGxVMmw2WlNBOUlDaHpkR0YwS0NSVFpXNWtSbWxzWlNrcFd6ZGRPd29KQ1Nna1JtbHNaVzVoYldVZ1BTQWtVMlZ1WkVacGJHVXBJRDErSUNCdElTaGJYaTllWEZ4ZEtpa2tJVHNLQ1Fsd2NtbHVkQ0FpUTI5dWRHVnVkQzFVZVhCbE9pQmhjSEJzYVdOaGRHbHZiaTk0TFhWdWEyNXZkMjVjYmlJN0Nna0pjSEpwYm5RZ0lrTnZiblJsYm5RdFRHVnVaM1JvT2lBa1JtbHNaVk5wZW1WY2JpSTdDZ2tKY0hKcGJuUWdJa052Ym5SbGJuUXRSR2x6Y0c5emFYUnBiMjQ2SUdGMGRHRmphRzFsYm5RN0lHWnBiR1Z1WVcxbFBTUXhYRzVjYmlJN0Nna0pjSEpwYm5RZ2QyaHBiR1VvUEZORlRrUkdTVXhGUGlrN0Nna0pZMnh2YzJVb1UwVk9SRVpKVEVVcE93b0pmUW9KWld4elpTQWpJR1poYVd4bFpDQjBieUJ2Y0dWdUlHWnBiR1VLQ1hzS0NRa21VSEpwYm5SUVlXZGxTR1ZoWkdWeUtDSm1JaWs3Q2drSmNISnBiblFnSWp4amIyUmxQa1poYVd4bFpDQjBieUJrYjNkdWJHOWhaQ0FrVTJWdVpFWnBiR1U2SUNRaFBDOWpiMlJsUGlJN0Nna0pKbEJ5YVc1MFJtbHNaVVJ2ZDI1c2IyRmtSbTl5YlRzS0NRa21VSEpwYm5SUVlXZGxSbTl2ZEdWeU93b0pmUXA5Q2dvS0l5MHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFFvaklGUm9hWE1nWm5WdVkzUnBiMjRnYVhNZ1kyRnNiR1ZrSUhkb1pXNGdkR2hsSUhWelpYSWdaRzkzYm14dllXUnpJR0VnWm1sc1pTNGdTWFFnWkdsemNHeGhlWE1nWVNCdFpYTnpZV2RsQ2lNZ2RHOGdkR2hsSUhWelpYSWdZVzVrSUhCeWIzWnBaR1Z6SUdFZ2JHbHVheUIwYUhKdmRXZG9JSGRvYVdOb0lIUm9aU0JtYVd4bElHTmhiaUJpWlNCa2IzZHViRzloWkdWa0xnb2pJRlJvYVhNZ1puVnVZM1JwYjI0Z2FYTWdZV3h6YnlCallXeHNaV1FnZDJobGJpQjBhR1VnZFhObGNpQmpiR2xqYTNNZ2IyNGdkR2hoZENCc2FXNXJMaUJKYmlCMGFHbHpJR05oYzJVc0NpTWdkR2hsSUdacGJHVWdhWE1nY21WaFpDQmhibVFnYzJWdWRDQjBieUIwYUdVZ1luSnZkM05sY2k0S0l5MHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFFwemRXSWdRbVZuYVc1RWIzZHViRzloWkFwN0Nna2pJR2RsZENCbWRXeHNlU0J4ZFdGc2FXWnBaV1FnY0dGMGFDQnZaaUIwYUdVZ1ptbHNaU0IwYnlCaVpTQmtiM2R1Ykc5aFpHVmtDZ2xwWmlnb0pGZHBiazVVSUNZZ0tDUlVjbUZ1YzJabGNrWnBiR1VnUFg0Z2JTOWVYRng4WGk0Nkx5a3BJSHdLQ1Frb0lTUlhhVzVPVkNBbUlDZ2tWSEpoYm5ObVpYSkdhV3hsSUQxK0lHMHZYbHd2THlrcEtTQWpJSEJoZEdnZ2FYTWdZV0p6YjJ4MWRHVUtDWHNLQ1Fra1ZHRnlaMlYwUm1sc1pTQTlJQ1JVY21GdWMyWmxja1pwYkdVN0NnbDlDZ2xsYkhObElDTWdjR0YwYUNCcGN5QnlaV3hoZEdsMlpRb0pld29KQ1dOb2IzQW9KRlJoY21kbGRFWnBiR1VwSUdsbUtDUlVZWEpuWlhSR2FXeGxJRDBnSkVOMWNuSmxiblJFYVhJcElEMStJRzB2VzF4Y1hDOWRKQzg3Q2drSkpGUmhjbWRsZEVacGJHVWdMajBnSkZCaGRHaFRaWEF1SkZSeVlXNXpabVZ5Um1sc1pUc0tDWDBLQ2dscFppZ2tUM0IwYVc5dWN5QmxjU0FpWjI4aUtTQWpJSGRsSUdoaGRtVWdkRzhnYzJWdVpDQjBhR1VnWm1sc1pRb0pld29KQ1NaVFpXNWtSbWxzWlZSdlFuSnZkM05sY2lna1ZHRnlaMlYwUm1sc1pTazdDZ2w5Q2dsbGJITmxJQ01nZDJVZ2FHRjJaU0IwYnlCelpXNWtJRzl1YkhrZ2RHaGxJR3hwYm1zZ2NHRm5aUW9KZXdvSkNTWlFjbWx1ZEVSdmQyNXNiMkZrVEdsdWExQmhaMlVvSkZSaGNtZGxkRVpwYkdVcE93b0pmUXA5Q2dvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0Q2lNZ1ZHaHBjeUJtZFc1amRHbHZiaUJwY3lCallXeHNaV1FnZDJobGJpQjBhR1VnZFhObGNpQjNZVzUwY3lCMGJ5QjFjR3h2WVdRZ1lTQm1hV3hsTGlCSlppQjBhR1VLSXlCbWFXeGxJR2x6SUc1dmRDQnpjR1ZqYVdacFpXUXNJR2wwSUdScGMzQnNZWGx6SUdFZ1ptOXliU0JoYkd4dmQybHVaeUIwYUdVZ2RYTmxjaUIwYnlCemNHVmphV1o1SUdFS0l5Qm1hV3hsTENCdmRHaGxjbmRwYzJVZ2FYUWdjM1JoY25SeklIUm9aU0IxY0d4dllXUWdjSEp2WTJWemN5NEtJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRcHpkV0lnVlhCc2IyRmtSbWxzWlFwN0Nna2pJR2xtSUc1dklHWnBiR1VnYVhNZ2MzQmxZMmxtYVdWa0xDQndjbWx1ZENCMGFHVWdkWEJzYjJGa0lHWnZjbTBnWVdkaGFXNEtDV2xtS0NSVWNtRnVjMlpsY2tacGJHVWdaWEVnSWlJcENnbDdDZ2tKSmxCeWFXNTBVR0ZuWlVobFlXUmxjaWdpWmlJcE93b0pDU1pRY21sdWRFWnBiR1ZWY0d4dllXUkdiM0p0T3dvSkNTWlFjbWx1ZEZCaFoyVkdiMjkwWlhJN0Nna0pjbVYwZFhKdU93b0pmUW9KSmxCeWFXNTBVR0ZuWlVobFlXUmxjaWdpWXlJcE93b0tDU01nYzNSaGNuUWdkR2hsSUhWd2JHOWhaR2x1WnlCd2NtOWpaWE56Q2dsd2NtbHVkQ0FpUEdOdlpHVStWWEJzYjJGa2FXNW5JQ1JVY21GdWMyWmxja1pwYkdVZ2RHOGdKRU4xY25KbGJuUkVhWEl1TGk0OFluSStJanNLQ2draklHZGxkQ0IwYUdVZ1puVnNiR3g1SUhGMVlXeHBabWxsWkNCd1lYUm9ibUZ0WlNCdlppQjBhR1VnWm1sc1pTQjBieUJpWlNCamNtVmhkR1ZrQ2dsamFHOXdLQ1JVWVhKblpYUk9ZVzFsS1NCcFppQW9KRlJoY21kbGRFNWhiV1VnUFNBa1EzVnljbVZ1ZEVScGNpa2dQWDRnYlM5YlhGeGNMMTBrTHpzS0NTUlVjbUZ1YzJabGNrWnBiR1VnUFg0Z2JTRW9XMTR2WGx4Y1hTb3BKQ0U3Q2dra1ZHRnlaMlYwVG1GdFpTQXVQU0FrVUdGMGFGTmxjQzRrTVRzS0Nna2tWR0Z5WjJWMFJtbHNaVk5wZW1VZ1BTQnNaVzVuZEdnb0pHbHVleWRtYVd4bFpHRjBZU2Q5S1RzS0NTTWdhV1lnZEdobElHWnBiR1VnWlhocGMzUnpJR0Z1WkNCM1pTQmhjbVVnYm05MElITjFjSEJ2YzJWa0lIUnZJRzkyWlhKM2NtbDBaU0JwZEFvSmFXWW9MV1VnSkZSaGNtZGxkRTVoYldVZ0ppWWdKRTl3ZEdsdmJuTWdibVVnSW05MlpYSjNjbWwwWlNJcENnbDdDZ2tKY0hKcGJuUWdJa1poYVd4bFpEb2dSR1Z6ZEdsdVlYUnBiMjRnWm1sc1pTQmhiSEpsWVdSNUlHVjRhWE4wY3k0OFluSStJanNLQ1gwS0NXVnNjMlVnSXlCbWFXeGxJR2x6SUc1dmRDQndjbVZ6Wlc1MENnbDdDZ2tKYVdZb2IzQmxiaWhWVUV4UFFVUkdTVXhGTENBaVBpUlVZWEpuWlhST1lXMWxJaWtwQ2drSmV3b0pDUWxpYVc1dGIyUmxLRlZRVEU5QlJFWkpURVVwSUdsbUlDUlhhVzVPVkRzS0NRa0pjSEpwYm5RZ1ZWQk1UMEZFUmtsTVJTQWthVzU3SjJacGJHVmtZWFJoSjMwN0Nna0pDV05zYjNObEtGVlFURTlCUkVaSlRFVXBPd29KQ1Fsd2NtbHVkQ0FpVkhKaGJuTm1aWEpsWkNBa1ZHRnlaMlYwUm1sc1pWTnBlbVVnUW5sMFpYTXVQR0p5UGlJN0Nna0pDWEJ5YVc1MElDSkdhV3hsSUZCaGRHZzZJQ1JVWVhKblpYUk9ZVzFsUEdKeVBpSTdDZ2tKZlFvSkNXVnNjMlVLQ1FsN0Nna0pDWEJ5YVc1MElDSkdZV2xzWldRNklDUWhQR0p5UGlJN0Nna0pmUW9KZlFvSmNISnBiblFnSWp3dlkyOWtaVDRpT3dvSkpsQnlhVzUwUTI5dGJXRnVaRXhwYm1WSmJuQjFkRVp2Y20wN0Nna21VSEpwYm5SUVlXZGxSbTl2ZEdWeU93cDlDZ29qTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRDaU1nVkdocGN5Qm1kVzVqZEdsdmJpQnBjeUJqWVd4c1pXUWdkMmhsYmlCMGFHVWdkWE5sY2lCM1lXNTBjeUIwYnlCa2IzZHViRzloWkNCaElHWnBiR1V1SUVsbUlIUm9aUW9qSUdacGJHVnVZVzFsSUdseklHNXZkQ0J6Y0dWamFXWnBaV1FzSUdsMElHUnBjM0JzWVhseklHRWdabTl5YlNCaGJHeHZkMmx1WnlCMGFHVWdkWE5sY2lCMGJ5QnpjR1ZqYVdaNUlHRUtJeUJtYVd4bExDQnZkR2hsY25kcGMyVWdhWFFnWkdsemNHeGhlWE1nWVNCdFpYTnpZV2RsSUhSdklIUm9aU0IxYzJWeUlHRnVaQ0J3Y205MmFXUmxjeUJoSUd4cGJtc0tJeUIwYUhKdmRXZG9JQ0IzYUdsamFDQjBhR1VnWm1sc1pTQmpZVzRnWW1VZ1pHOTNibXh2WVdSbFpDNEtJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRcHpkV0lnUkc5M2JteHZZV1JHYVd4bENuc0tDU01nYVdZZ2JtOGdabWxzWlNCcGN5QnpjR1ZqYVdacFpXUXNJSEJ5YVc1MElIUm9aU0JrYjNkdWJHOWhaQ0JtYjNKdElHRm5ZV2x1Q2dscFppZ2tWSEpoYm5ObVpYSkdhV3hsSUdWeElDSWlLUW9KZXdvSkNTWlFjbWx1ZEZCaFoyVklaV0ZrWlhJb0ltWWlLVHNLQ1FrbVVISnBiblJHYVd4bFJHOTNibXh2WVdSR2IzSnRPd29KQ1NaUWNtbHVkRkJoWjJWR2IyOTBaWEk3Q2drSmNtVjBkWEp1T3dvSmZRb0pDZ2tqSUdkbGRDQm1kV3hzZVNCeGRXRnNhV1pwWldRZ2NHRjBhQ0J2WmlCMGFHVWdabWxzWlNCMGJ5QmlaU0JrYjNkdWJHOWhaR1ZrQ2dscFppZ29KRmRwYms1VUlDWWdLQ1JVY21GdWMyWmxja1pwYkdVZ1BYNGdiUzllWEZ4OFhpNDZMeWtwSUh3S0NRa29JU1JYYVc1T1ZDQW1JQ2drVkhKaGJuTm1aWEpHYVd4bElEMStJRzB2WGx3dkx5a3BLU0FqSUhCaGRHZ2dhWE1nWVdKemIyeDFkR1VLQ1hzS0NRa2tWR0Z5WjJWMFJtbHNaU0E5SUNSVWNtRnVjMlpsY2tacGJHVTdDZ2w5Q2dsbGJITmxJQ01nY0dGMGFDQnBjeUJ5Wld4aGRHbDJaUW9KZXdvSkNXTm9iM0FvSkZSaGNtZGxkRVpwYkdVcElHbG1LQ1JVWVhKblpYUkdhV3hsSUQwZ0pFTjFjbkpsYm5SRWFYSXBJRDErSUcwdlcxeGNYQzlkSkM4N0Nna0pKRlJoY21kbGRFWnBiR1VnTGowZ0pGQmhkR2hUWlhBdUpGUnlZVzV6Wm1WeVJtbHNaVHNLQ1gwS0NnbHBaaWdrVDNCMGFXOXVjeUJsY1NBaVoyOGlLU0FqSUhkbElHaGhkbVVnZEc4Z2MyVnVaQ0IwYUdVZ1ptbHNaUW9KZXdvSkNTWlRaVzVrUm1sc1pWUnZRbkp2ZDNObGNpZ2tWR0Z5WjJWMFJtbHNaU2s3Q2dsOUNnbGxiSE5sSUNNZ2QyVWdhR0YyWlNCMGJ5QnpaVzVrSUc5dWJIa2dkR2hsSUd4cGJtc2djR0ZuWlFvSmV3b0pDU1pRY21sdWRFUnZkMjVzYjJGa1RHbHVhMUJoWjJVb0pGUmhjbWRsZEVacGJHVXBPd29KZlFwOUNnb2pMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdENpTWdUV0ZwYmlCUWNtOW5jbUZ0SUMwZ1JYaGxZM1YwYVc5dUlGTjBZWEowY3lCSVpYSmxDaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMEtKbEpsWVdSUVlYSnpaVHNLSmtkbGRFTnZiMnRwWlhNN0Nnb2tVMk55YVhCMFRHOWpZWFJwYjI0Z1BTQWtSVTVXZXlkVFExSkpVRlJmVGtGTlJTZDlPd29rVTJWeWRtVnlUbUZ0WlNBOUlDUkZUbFo3SjFORlVsWkZVbDlPUVUxRkozMDdDaVJNYjJkcGJsQmhjM04zYjNKa0lEMGdKR2x1ZXlkd0ozMDdDaVJTZFc1RGIyMXRZVzVrSUQwZ0pHbHVleWRqSjMwN0NpUlVjbUZ1YzJabGNrWnBiR1VnUFNBa2FXNTdKMlluZlRzS0pFOXdkR2x2Ym5NZ1BTQWthVzU3SjI4bmZUc0tDaVJCWTNScGIyNGdQU0FrYVc1N0oyRW5mVHNLSkVGamRHbHZiaUE5SUNKc2IyZHBiaUlnYVdZb0pFRmpkR2x2YmlCbGNTQWlJaWs3SUNNZ2JtOGdZV04wYVc5dUlITndaV05wWm1sbFpDd2dkWE5sSUdSbFptRjFiSFFLQ2lNZ1oyVjBJSFJvWlNCa2FYSmxZM1J2Y25rZ2FXNGdkMmhwWTJnZ2RHaGxJR052YlcxaGJtUnpJSGRwYkd3Z1ltVWdaWGhsWTNWMFpXUUtKRU4xY25KbGJuUkVhWElnUFNBa2FXNTdKMlFuZlRzS1kyaHZjQ2drUTNWeWNtVnVkRVJwY2lBOUlHQWtRMjFrVUhka1lDa2dhV1lvSkVOMWNuSmxiblJFYVhJZ1pYRWdJaUlwT3dvS0pFeHZaMmRsWkVsdUlEMGdKRU52YjJ0cFpYTjdKMU5CVmtWRVVGZEVKMzBnWlhFZ0pGQmhjM04zYjNKa093b0thV1lvSkVGamRHbHZiaUJsY1NBaWJHOW5hVzRpSUh4OElDRWtURzluWjJWa1NXNHBJQ01nZFhObGNpQnVaV1ZrY3k5b1lYTWdkRzhnYkc5bmFXNEtld29KSmxCbGNtWnZjbTFNYjJkcGJqc0tmUXBsYkhOcFppZ2tRV04wYVc5dUlHVnhJQ0pqYjIxdFlXNWtJaWtnSXlCMWMyVnlJSGRoYm5SeklIUnZJSEoxYmlCaElHTnZiVzFoYm1RS2V3b0pKa1Y0WldOMWRHVkRiMjF0WVc1a093cDlDbVZzYzJsbUtDUkJZM1JwYjI0Z1pYRWdJblZ3Ykc5aFpDSXBJQ01nZFhObGNpQjNZVzUwY3lCMGJ5QjFjR3h2WVdRZ1lTQm1hV3hsQ25zS0NTWlZjR3h2WVdSR2FXeGxPd3A5Q21Wc2MybG1LQ1JCWTNScGIyNGdaWEVnSW1SdmQyNXNiMkZrSWlrZ0l5QjFjMlZ5SUhkaGJuUnpJSFJ2SUdSdmQyNXNiMkZrSUdFZ1ptbHNaUXA3Q2drbVJHOTNibXh2WVdSR2FXeGxPd3A5Q21Wc2MybG1LQ1JCWTNScGIyNGdaWEVnSW14dloyOTFkQ0lwSUNNZ2RYTmxjaUIzWVc1MGN5QjBieUJzYjJkdmRYUUtld29KSmxCbGNtWnZjbTFNYjJkdmRYUTdDbjBLJzsNCg0KJGZpbGUgPSBmb3BlbigiaXpvLmNpbiIgLCJ3KyIpOw0KJHdyaXRlID0gZndyaXRlICgkZmlsZSAsYmFzZTY0X2RlY29kZSgkY2dpc2hlbGxpem9jaW4pKTsNCmZjbG9zZSgkZmlsZSk7DQogICAgY2htb2QoIml6by5jaW4iLDA3NTUpOw0KJG5ldGNhdHNoZWxsID0gJ0l5RXZkWE55TDJKcGJpOXdaWEpzRFFvZ0lDQWdJQ0IxYzJVZ1UyOWphMlYwT3cwS0lDQWdJQ0FnY0hKcGJuUWdJa1JoZEdFZ1EyaGgNCk1ITWdRMjl1Ym1WamRDQkNZV05ySUVKaFkydGtiMjl5WEc1Y2JpSTdEUW9nSUNBZ0lDQnBaaUFvSVNSQlVrZFdXekJkS1NCN0RRb2cNCklDQWdJQ0FnSUhCeWFXNTBaaUFpVlhOaFoyVTZJQ1F3SUZ0SWIzTjBYU0E4VUc5eWRENWNiaUk3RFFvZ0lDQWdJQ0FnSUdWNGFYUW8NCk1TazdEUW9nSUNBZ0lDQjlEUW9nSUNBZ0lDQndjbWx1ZENBaVd5cGRJRVIxYlhCcGJtY2dRWEpuZFcxbGJuUnpYRzRpT3cwS0lDQWcNCklDQWdKR2h2YzNRZ1BTQWtRVkpIVmxzd1hUc05DaUFnSUNBZ0lDUndiM0owSUQwZ09EQTdEUW9nSUNBZ0lDQnBaaUFvSkVGU1IxWmINCk1WMHBJSHNOQ2lBZ0lDQWdJQ0FnSkhCdmNuUWdQU0FrUVZKSFZsc3hYVHNOQ2lBZ0lDQWdJSDBOQ2lBZ0lDQWdJSEJ5YVc1MElDSmINCktsMGdRMjl1Ym1WamRHbHVaeTR1TGx4dUlqc05DaUFnSUNBZ0lDUndjbTkwYnlBOUlHZGxkSEJ5YjNSdllubHVZVzFsS0NkMFkzQW4NCktTQjhmQ0JrYVdVb0lsVnVhMjV2ZDI0Z1VISnZkRzlqYjJ4Y2JpSXBPdzBLSUNBZ0lDQWdjMjlqYTJWMEtGTkZVbFpGVWl3Z1VFWmYNClNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lDUndjbTkwYnlrZ2ZId2daR2xsSUNnaVUyOWphMlYwSUVWeWNtOXlYRzRpS1RzTkNpQWcNCklDQWdJRzE1SUNSMFlYSm5aWFFnUFNCcGJtVjBYMkYwYjI0b0pHaHZjM1FwT3cwS0lDQWdJQ0FnYVdZZ0tDRmpiMjV1WldOMEtGTkYNClVsWkZVaXdnY0dGamF5QWlVMjVCTkhnNElpd2dNaXdnSkhCdmNuUXNJQ1IwWVhKblpYUXBLU0I3RFFvZ0lDQWdJQ0FnSUdScFpTZ2kNClZXNWhZbXhsSUhSdklFTnZibTVsWTNSY2JpSXBPdzBLSUNBZ0lDQWdmUTBLSUNBZ0lDQWdjSEpwYm5RZ0lsc3FYU0JUY0dGM2JtbHUNClp5QlRhR1ZzYkZ4dUlqc05DaUFnSUNBZ0lHbG1JQ2doWm05eWF5Z2dLU2tnZXcwS0lDQWdJQ0FnSUNCdmNHVnVLRk5VUkVsT0xDSSsNCkpsTkZVbFpGVWlJcE93MEtJQ0FnSUNBZ0lDQnZjR1Z1S0ZOVVJFOVZWQ3dpUGlaVFJWSldSVklpS1RzTkNpQWdJQ0FnSUNBZ2IzQmwNCmJpaFRWRVJGVWxJc0lqNG1VMFZTVmtWU0lpazdEUW9nSUNBZ0lDQWdJR1Y0WldNZ2V5Y3ZZbWx1TDNOb0ozMGdKeTFpWVhOb0p5QXUNCklDSmNNQ0lnZUNBME93MEtJQ0FnSUNBZ0lDQmxlR2wwS0RBcE93MEtJQ0FnSUNBZ2ZRMEtJQ0FnSUNBZ2NISnBiblFnSWxzcVhTQkUNCllYUmhZMmhsWkZ4dVhHNGlPdz09JzsNCg0KJGZpbGUgPSBmb3BlbigiZGMucGwiICwidysiKTsNCiR3cml0ZSA9IGZ3cml0ZSAoJGZpbGUgLGJhc2U2NF9kZWNvZGUoJG5ldGNhdHNoZWxsKSk7DQpmY2xvc2UoJGZpbGUpOw0KICAgIGNobW9kKCJkYy5wbCIsMDc1NSk7DQogICBlY2hvICI8aWZyYW1lIHNyYz1jZ2l0ZWxuZXQxL2l6by5jaW4gd2lkdGg9OTYlIGhlaWdodD05MCUgZnJhbWVib3JkZXI9MD48L2lmcmFtZT4gDQoNCiANCiA8L2Rpdj4iOyB9DQppZiAoJHggPT0gInNsZWVwIil7DQogICRtc2cgPSAkX1BPU1RbJ2JhY2tjY29ubm1zZyddOw0KICAkZW1zZyA9ICRfUE9TVFsnYmFja2Njb25ubXNnZSddOw0KICBlY2hvKCI8Y2VudGVyPjxiPkJpbmQgU2hlbGwgQmFja2Rvb3I6PC9iPjxicj48YnI+PGZvcm0gbmFtZT1mb3JtIG1ldGhvZD1QT1NUPg0KICBCaW5kIFBvcnQ6IDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdiYWNrY29ubmVjdHBvcnQnIHZhbHVlPScyMTIxMic+DQogIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3VzZScgdmFsdWU9J3NsZWVwJz4NCiAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0luc3RhbGwgQmFja2Rvb3InPjwvZm9ybT4iKTsNCiAgZWNobygiJG1zZyIpOw0KICBlY2hvKCIkZW1zZyIpOw0KICBlY2hvKCI8L2NlbnRlcj4iKTsNCn0NCg0KaWYgKCR4ID09ICJza2VuIil7DQpzZXRfdGltZV9saW1pdCgwKTsgDQoNCigkeDBiID0gaW5pX2dldCgnc2FmZV9tb2RlJykgPT0gMCkgPyAkeDBiID0gJ29mZic6IGRpZSgnPGI+RXJyb3I6IFNhZmUgTW9kZSBpcyBPbjwvYj4nKTsNCg0KQCR4MGMgPSBmb3BlbignL2V0Yy9wYXNzd2QnLCdyJyk7DQoNCmlmICghJHgwYykgeyBkaWUoJzxiPiBFcnJvciA6IENhbiBOb3QgUmVhZCBDb25maWcgT2YgU2VydmVyIDwvYj4nKTsgfQ0KDQovLyAkeDBkID0gYXJyYXkoKTsNCi8vICR4MGUgPSBhcnJheSgpOw0KLy8gJHgwZiA9IGFycmF5KCk7DQovLyAkeDEwID0gMDsNCg0Kd2hpbGUoIWZlb2YoJHgwYykpew0KICAgIC8vIGJhY2EgYmFyaXMuLi4NCiAgICAvLyAkeDExID0gZmdldHMoJHgwYyk7DQogICAgLy8gaWYgKCR4MTAgPCAzNSl7IA0KICAgIHdoaWxlKCR4MTEgPSBmZ2V0cygkeDBjKSl7DQogICAgICAgIA0KICAgICAgICAkeDEyID0gc3RycG9zKCR4MTEsJzonKTsNCg0KICAgICAgICAkeDEzID0gc3Vic3RyKCR4MTEsMCwkeDEyKTsNCg0KDQogICAgICAgICR4MTQgPSAnL2hvbWUvJy4keDEzLicvcHVibGljX2h0bWwnOw0KICAgICAgICBpZiAoKCR4MTMgIT0gJycpKXsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKGlzX3JlYWRhYmxlKCR4MTQpKXsNCg0KICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPTIgY29sb3I9I2MwMDBmZj5bJiM4MjI0O10gb0sgWyYjODIyNDtdICR4MTQ8L2ZvbnQ+IjsNCiAgICAgICAgICAgICAgICBlY2hvICI8YnIvPiI7DQogICAgICAgICAgICB9ICAgIA0KICAgICAgICB9DQogICAgfQ0KICAgIC8vICR4MTArKzsNCiB9DQp9DQoNCmVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPlxuIjsNCj8+DQo8ZGl2ICBjbGFzcz1iYXJoZWFkZXIyPjxiPi46OiBDT01NQU5EIFBBTkVMIDo6LjwvYj48L2Rpdj4NCjx0YWJsZSBjbGFzcz1tYWlucGFuZWw+DQo8P3BocA0KaWYgKCEkc2FmZW1vZGUpIHsNCj8+DQo8dHI+PHRkIGFsaWduPXJpZ2h0PkNvbW1hbmQ6PC90ZD4NCjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiPg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9ImNtZCI+DQogICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPg0KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjbWQiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRjbWQpOyA/PiI+DQogICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImNtZF90eHQiIHZhbHVlPSIxIj4gLSA8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPg0KICAgIDwvZm9ybT4NCjwvdGQ+PC90cj4NCjx0cj48dGQgYWxpZ249cmlnaHQ+UXVpY2sgQ29tbWFuZHM6PC90ZD4NCjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiPg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9ImNtZCI+DQogICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+DQogICAgPHNlbGVjdCBuYW1lPSJjbWQiPg0KICAgIDw/cGhwDQogICAgZm9yZWFjaCAoJGNtZGFsaWFzZXMgYXMgJGFscykgew0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkYWxzWzFdKS4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMF0pLiI8L29wdGlvbj4iOw0KICAgIH0NCiAgICBmb3JlYWNoICgkY21kYWxpYXNlczIgYXMgJGFscykgew0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkYWxzWzFdKS4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMF0pLiI8L29wdGlvbj4iOw0KICAgIH0NCiAgICA/Pg0KICAgIDwvc2VsZWN0PiAtDQogICAgPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj4NCiAgICA8L2Zvcm0+DQo8L3RkPjwvdHI+DQo8P3BocA0KfQ0KPz4NCg0KPHRyPjx0ZCBhbGlnbj1yaWdodD5VcGxvYWQ6PC90ZD4NCjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9InVwbG9hZCI+DQogICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Im1pbmlmb3JtIiB2YWx1ZT0iMSI+DQogICAgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZGZpbGUiPiAtIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iVXBsb2FkIj4gPD9waHAgZWNobyAkd2R0OyA/Pg0KICAgIDwvZm9ybT4NCjwvdGQ+PC90cj4NCjx0cj48dGQgYWxpZ249cmlnaHQ+TWFrZSBGaWxlOjwvdGQ+DQo8dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJta2ZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZnQiIHZhbHVlPSJlZGl0Ij4NCiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWtmaWxlIiBzaXplPSI3MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+IC0gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJDcmVhdGUiPiA8P3BocCBlY2hvICR3ZHQ7ID8+DQogICAgPC9mb3JtPjwvdGQ+PC90cj4NCjx0cj48dGQgYWxpZ249cmlnaHQ+VmlldyBGaWxlOjwvdGQ+DQo8dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJnb2ZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4NCiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iNzAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiAtIDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iVmlldyI+DQogICAgPC9mb3JtPjwvdGQ+PC90cj4NCjwvdGFibGU+DQo8ZGl2IGNsYXNzPWJhcmhlYWRlcjIgY29sc3Bhbj0yPjxmb250IGNvbG9yPXJlZD48Zm9udCBjb2xvcj15ZWxsb3c+W1JlQ29kZWQgQnkgU3luY2hyb25pemVyIC0gU0FOSlVOR0FOIEpJV0EgVEVBTSB8IEdlbmVyYXRlZDogPD9waHAgZWNobyByb3VuZChnZXRtaWNyb3RpbWUoKS1zdGFydHRpbWUsNCk7ID8+IHNlY29uZHMgXTwvZm9udD48L2Rpdj4NCjwvYm9keT48L2h0bWw+
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement