10 lines
22 KiB
Python
10 lines
22 KiB
Python
import base64,os
|
|
BASE="/www/backup/txiaw-mysql-fix-20260831/stage"
|
|
payloads={'HomeNewsCache.php': 'PD9waHAKLy8gT25lIGNhY2hlIGVudHJ5IGZvciB0aGUgcHVibGljIGhvbWVwYWdlIGxpc3Q7IHJlcXVlc3QgYXJndW1lbnRzIG5ldmVyIGVudGVyIGl0cyBrZXkuCmZ1bmN0aW9uIHR4aWF3X3JlYWRfaG9tZV9uZXdzX2NhY2hlKCRmaWxlKQp7CiAgICAkcmF3ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKTsKICAgIGlmICgkcmF3ID09PSBmYWxzZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgICRlbnRyeSA9IGpzb25fZGVjb2RlKCRyYXcsIHRydWUpOwogICAgaWYgKCFpc19hcnJheSgkZW50cnkpIHx8ICFpc3NldCgkZW50cnlbJ2NyZWF0ZWQnXSwgJGVudHJ5WydpdGVtcyddKSB8fAogICAgICAgICFpc19udW1lcmljKCRlbnRyeVsnY3JlYXRlZCddKSB8fCAhaXNfYXJyYXkoJGVudHJ5WydpdGVtcyddKSB8fAogICAgICAgICRlbnRyeVsnY3JlYXRlZCddID4gdGltZSgpICsgNSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiAkZW50cnk7Cn0KCmZ1bmN0aW9uIHR4aWF3X2hvbWVfbmV3c19jYWNoZWQoJGNhY2hlRGlyZWN0b3J5ID0gbnVsbCwgJGxvYWRlciA9IG51bGwpCnsKICAgIGlmICgkY2FjaGVEaXJlY3RvcnkgPT09IG51bGwpIHsKICAgICAgICAkY2FjaGVEaXJlY3RvcnkgPSBkaXJuYW1lKF9fRElSX18pIC4gJy9SdW50aW1lL1R4aWF3SG9tZU5ld3MnOwogICAgfQogICAgaWYgKCRsb2FkZXIgPT09IG51bGwpIHsKICAgICAgICAkbG9hZGVyID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gZ3hsX215c3FsX25ld3MoJ2ZpZWxkOm5ld3NfaWQsbmV3c19jaWQsbmV3c19uYW1lO2xpbWl0OjEwMDtvcmRlcjpuZXdzX2FkZHRpbWUgZGVzYycpOwogICAgICAgIH07CiAgICB9CiAgICAkZmlsZSA9ICRjYWNoZURpcmVjdG9yeSAuICcvbmV3cy1saXN0LXYxLmpzb24nOwogICAgJGVudHJ5ID0gdHhpYXdfcmVhZF9ob21lX25ld3NfY2FjaGUoJGZpbGUpOwogICAgaWYgKCRlbnRyeSAhPT0gZmFsc2UgJiYgdGltZSgpIC0gJGVudHJ5WydjcmVhdGVkJ10gPCA2MCkgewogICAgICAgIHJldHVybiAkZW50cnlbJ2l0ZW1zJ107CiAgICB9CiAgICBpZiAoIWlzX2RpcigkY2FjaGVEaXJlY3RvcnkpICYmICFAbWtkaXIoJGNhY2hlRGlyZWN0b3J5LCAwNzUwLCB0cnVlKSAmJiAhaXNfZGlyKCRjYWNoZURpcmVjdG9yeSkpIHsKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoJGxvYWRlcik7CiAgICB9CiAgICAkbG9jayA9IEBmb3BlbigkY2FjaGVEaXJlY3RvcnkgLiAnL25ld3MtbGlzdC12MS5sb2NrJywgJ2MnKTsKICAgIGlmICgkbG9jayA9PT0gZmFsc2UpIHsKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoJGxvYWRlcik7CiAgICB9CiAgICBpZiAoIWZsb2NrKCRsb2NrLCBMT0NLX0VYIHwgTE9DS19OQikpIHsKICAgICAgICBmY2xvc2UoJGxvY2spOwogICAgICAgIC8vIE90aGVyIHJlcXVlc3RzIGNhbiB1c2UgYSByZWNlbnRseSBleHBpcmVkIHZhbHVlIHdoaWxlIG9uZSByZXF1ZXN0IHJlZnJlc2hlcyBpdC4KICAgICAgICBpZiAoJGVudHJ5ICE9PSBmYWxzZSAmJiB0aW1lKCkgLSAkZW50cnlbJ2NyZWF0ZWQnXSA8IDMwMCkgewogICAgICAgICAgICByZXR1cm4gJGVudHJ5WydpdGVtcyddOwogICAgICAgIH0KICAgICAgICAvLyBBIGNvbGQgY2FjaGUgZ2V0cyBhIGJvdW5kZWQgd2FpdDsgbmV2ZXIga2VlcCBhbiBlbnRpcmUgUEhQIHBvb2wgd2FpdGluZyBvbiBhIGxvY2suCiAgICAgICAgZm9yICgkYXR0ZW1wdCA9IDA7ICRhdHRlbXB0IDwgMjA7ICRhdHRlbXB0KyspIHsKICAgICAgICAgICAgdXNsZWVwKDEwMDAwKTsKICAgICAgICAgICAgJGVudHJ5ID0gdHhpYXdfcmVhZF9ob21lX25ld3NfY2FjaGUoJGZpbGUpOwogICAgICAgICAgICBpZiAoJGVudHJ5ICE9PSBmYWxzZSAmJiB0aW1lKCkgLSAkZW50cnlbJ2NyZWF0ZWQnXSA8IDYwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGVudHJ5WydpdGVtcyddOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIFByZXNlcnZlIHBhZ2UgYXZhaWxhYmlsaXR5IGlmIHRoZSBjYWNoZSBmaWxlc3lzdGVtIG9yIHJlZnJlc2hlciBmYWlscy4KICAgICAgICAvLyBUaGUgaW5kZXhlZCBxdWVyeSBhbmQgTmdpbnggbGltaXRzIHN0aWxsIGJvdW5kIGRhdGFiYXNlIHdvcmsgaW4gdGhpcyBmYWxsYmFjay4KICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoJGxvYWRlcik7CiAgICB9CiAgICB0cnkgewogICAgICAgIC8vIEFub3RoZXIgcmVxdWVzdCBtYXkgaGF2ZSByZWZyZXNoZWQgYmV0d2VlbiBvdXIgZmlyc3QgcmVhZCBhbmQgbG9jayBhY3F1aXNpdGlvbi4KICAgICAgICAkbGF0ZXN0ID0gdHhpYXdfcmVhZF9ob21lX25ld3NfY2FjaGUoJGZpbGUpOwogICAgICAgIGlmICgkbGF0ZXN0ICE9PSBmYWxzZSAmJiB0aW1lKCkgLSAkbGF0ZXN0WydjcmVhdGVkJ10gPCA2MCkgewogICAgICAgICAgICByZXR1cm4gJGxhdGVzdFsnaXRlbXMnXTsKICAgICAgICB9CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGl0ZW1zID0gY2FsbF91c2VyX2Z1bmMoJGxvYWRlcik7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRleGNlcHRpb24pIHsKICAgICAgICAgICAgaWYgKCRlbnRyeSAhPT0gZmFsc2UgJiYgdGltZSgpIC0gJGVudHJ5WydjcmVhdGVkJ10gPCAzMDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkZW50cnlbJ2l0ZW1zJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhyb3cgJGV4Y2VwdGlvbjsKICAgICAgICB9CiAgICAgICAgaWYgKGlzX2FycmF5KCRpdGVtcykpIHsKICAgICAgICAgICAgJGVuY29kZWQgPSBqc29uX2VuY29kZShhcnJheSgnY3JlYXRlZCcgPT4gdGltZSgpLCAnaXRlbXMnID0+ICRpdGVtcykpOwogICAgICAgICAgICAkdGVtcG9yYXJ5ID0gJGVuY29kZWQgPT09IGZhbHNlID8gZmFsc2UgOiBAdGVtcG5hbSgkY2FjaGVEaXJlY3RvcnksICcubmV3cy0nKTsKICAgICAgICAgICAgaWYgKCR0ZW1wb3JhcnkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBAY2htb2QoJHRlbXBvcmFyeSwgMDY0MCk7CiAgICAgICAgICAgICAgICAkd3JpdHRlbiA9IEBmaWxlX3B1dF9jb250ZW50cygkdGVtcG9yYXJ5LCAkZW5jb2RlZCk7CiAgICAgICAgICAgICAgICBpZiAoJHdyaXR0ZW4gIT09IHN0cmxlbigkZW5jb2RlZCkgfHwgIUByZW5hbWUoJHRlbXBvcmFyeSwgJGZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgQHVubGluaygkdGVtcG9yYXJ5KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJGl0ZW1zOwogICAgfSBmaW5hbGx5IHsKICAgICAgICBmbG9jaygkbG9jaywgTE9DS19VTik7CiAgICAgICAgZmNsb3NlKCRsb2NrKTsKICAgIH0KfQo=', 'test_home_news_cache.php': 'PD9waHAKcmVxdWlyZSBfX0RJUl9fIC4gJy9Ib21lTmV3c0NhY2hlLnBocCc7CiRkaXJlY3RvcnkgPSAkYXJndlsxXTsKaWYgKCFpc19kaXIoJGRpcmVjdG9yeSkpIHsKICAgIG1rZGlyKCRkaXJlY3RvcnksIDA3MDAsIHRydWUpOwp9CiRmaWxlID0gJGRpcmVjdG9yeSAuICcvbmV3cy1saXN0LXYxLmpzb24nOwokY2FsbHMgPSAwOwokbG9hZGVyID0gZnVuY3Rpb24gKCkgdXNlICgmJGNhbGxzKSB7CiAgICAkY2FsbHMrKzsKICAgIHJldHVybiBhcnJheShhcnJheSgnbmV3c19pZCcgPT4gJGNhbGxzLCAnbmV3c19uYW1lJyA9PiAnUHVibGljIGFydGljbGUnKSk7Cn07CmZ1bmN0aW9uIGV4cGVjdF9jYWNoZSgkY29uZGl0aW9uLCAkbWVzc2FnZSkKewogICAgaWYgKCEkY29uZGl0aW9uKSB7CiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkbWVzc2FnZSk7CiAgICB9Cn0KJGZpcnN0ID0gdHhpYXdfaG9tZV9uZXdzX2NhY2hlZCgkZGlyZWN0b3J5LCAkbG9hZGVyKTsKJHNlY29uZCA9IHR4aWF3X2hvbWVfbmV3c19jYWNoZWQoJGRpcmVjdG9yeSwgJGxvYWRlcik7CmV4cGVjdF9jYWNoZSgkZmlyc3QgPT09ICRzZWNvbmQgJiYgJGNhbGxzID09PSAxLCAnRnJlc2ggY2FjaGUgbXVzdCBhdm9pZCBhIHNlY29uZCBxdWVyeScpOwoKZmlsZV9wdXRfY29udGVudHMoJGZpbGUsIGpzb25fZW5jb2RlKGFycmF5KCdjcmVhdGVkJyA9PiB0aW1lKCkgLSA2MSwgJ2l0ZW1zJyA9PiAkZmlyc3QpKSk7CiR0aGlyZCA9IHR4aWF3X2hvbWVfbmV3c19jYWNoZWQoJGRpcmVjdG9yeSwgJGxvYWRlcik7CmV4cGVjdF9jYWNoZSgkY2FsbHMgPT09IDIgJiYgJHRoaXJkWzBdWyduZXdzX2lkJ10gPT09IDIsICdFeHBpcmVkIGNhY2hlIG11c3QgcmVmcmVzaCcpOwoKZmlsZV9wdXRfY29udGVudHMoJGZpbGUsIGpzb25fZW5jb2RlKGFycmF5KCdjcmVhdGVkJyA9PiB0aW1lKCkgLSA2MSwgJ2l0ZW1zJyA9PiAkdGhpcmQpKSk7CiRoZWxkID0gZm9wZW4oJGRpcmVjdG9yeSAuICcvbmV3cy1saXN0LXYxLmxvY2snLCAnYycpOwpmbG9jaygkaGVsZCwgTE9DS19FWCk7CiRzdGFydGVkID0gbWljcm90aW1lKHRydWUpOwokc3RhbGUgPSB0eGlhd19ob21lX25ld3NfY2FjaGVkKCRkaXJlY3RvcnksICRsb2FkZXIpOwpleHBlY3RfY2FjaGUoJHN0YWxlID09PSAkdGhpcmQgJiYgJGNhbGxzID09PSAyLCAnQnVzeSByZWZyZXNoZXIgbXVzdCBzZXJ2ZSBleGlzdGluZyBzdGFsZSBkYXRhJyk7CmV4cGVjdF9jYWNoZShtaWNyb3RpbWUodHJ1ZSkgLSAkc3RhcnRlZCA8IDAuMSwgJ1N0YWxlIHJlYWQgbXVzdCBub3Qgd2FpdCBmb3IgdGhlIGxvY2snKTsKZmxvY2soJGhlbGQsIExPQ0tfVU4pOwpmY2xvc2UoJGhlbGQpOwoKJGZhaWxlZExvYWRlciA9IGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEV4Y2VwdGlvbignU2ltdWxhdGVkIGRhdGFiYXNlIGZhaWx1cmUnKTsgfTsKZXhwZWN0X2NhY2hlKHR4aWF3X2hvbWVfbmV3c19jYWNoZWQoJGRpcmVjdG9yeSwgJGZhaWxlZExvYWRlcikgPT09ICR0aGlyZCwgJ1JlY2VudCBzdGFsZSBjYWNoZSBzaG91bGQgc3Vydml2ZSBhIHRyYW5zaWVudCBkYXRhYmFzZSBmYWlsdXJlJyk7CgpmaWxlX3B1dF9jb250ZW50cygkZmlsZSwgJ3tjb3JydXB0Jyk7CiRyZWNvdmVyZWQgPSB0eGlhd19ob21lX25ld3NfY2FjaGVkKCRkaXJlY3RvcnksICRsb2FkZXIpOwpleHBlY3RfY2FjaGUoJGNhbGxzID09PSAzICYmICRyZWNvdmVyZWRbMF1bJ25ld3NfaWQnXSA9PT0gMywgJ0NvcnJ1cHQgY2FjaGUgbXVzdCByZWNvdmVyJyk7CmV4cGVjdF9jYWNoZSh0eGlhd19yZWFkX2hvbWVfbmV3c19jYWNoZSgkZmlsZSkgIT09IGZhbHNlLCAnUmVjb3ZlcnkgbXVzdCB3cml0ZSBhIHZhbGlkIGNhY2hlJyk7CmVjaG8gIlBBU1M6IGNhY2hlIGhpdCwgVFRMIHJlZnJlc2gsIG5vbmJsb2NraW5nIHN0YWxlIHJlYWQsIHRyYW5zaWVudCBlcnJvciBmYWxsYmFjaywgY29ycnVwdCBjYWNoZSByZWNvdmVyeS5cbiI7Cg==', 'test_cache_concurrency.py': 'aW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcwppbXBvcnQgb3MKaW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IHRlbXBmaWxlCgpiYXNlID0gJy93d3cvYmFja3VwL3R4aWF3LW15c3FsLWZpeC0yMDI2MDgzMScKcm9vdCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdjYWNoZS1jb25jdXJyZW5jeS0nLCBkaXI9YmFzZSkKcGhwID0gJy93d3cvc2VydmVyL3BocC81Ni9iaW4vcGhwJwpzb3VyY2UgPSByJycnCnJlcXVpcmUgJGFyZ3ZbMV07CiRkaXJlY3RvcnkgPSAkYXJndlsyXTsKJGxvYWRlciA9IGZ1bmN0aW9uICgpIHVzZSAoJGRpcmVjdG9yeSkgewogICAgZmlsZV9wdXRfY29udGVudHMoJGRpcmVjdG9yeSAuICcvbG9hZGVyLWNhbGxzJywgImNhbGxlZFxuIiwgRklMRV9BUFBFTkQgfCBMT0NLX0VYKTsKICAgIHVzbGVlcCgxMDAwMDApOwogICAgcmV0dXJuIGFycmF5KGFycmF5KCduZXdzX2lkJyA9PiA0MiwgJ25ld3NfbmFtZScgPT4gJ0NvbmN1cnJlbmN5IGZpeHR1cmUnKSk7Cn07CiRyZXN1bHQgPSB0eGlhd19ob21lX25ld3NfY2FjaGVkKCRkaXJlY3RvcnksICRsb2FkZXIpOwppZiAoJHJlc3VsdFswXVsnbmV3c19pZCddICE9PSA0MikgeyBleGl0KDIpOyB9CmVjaG8gIm9rXG4iOwonJycKCmRlZiB3b3JrZXIoXyk6CiAgICByZXR1cm4gc3VicHJvY2Vzcy5ydW4oW3BocCwgJy1uJywgJy1yJywgc291cmNlLCBiYXNlICsgJy9zdGFnZS9Ib21lTmV3c0NhY2hlLnBocCcsIHJvb3RdLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgdGltZW91dD01KQoKd2l0aCBjb25jdXJyZW50LmZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPTgpIGFzIHBvb2w6CiAgICByZXN1bHRzID0gbGlzdChwb29sLm1hcCh3b3JrZXIsIHJhbmdlKDgpKSkKYXNzZXJ0IGFsbChwLnJldHVybmNvZGUgPT0gMCBhbmQgcC5zdGRvdXQuc3RyaXAoKSA9PSAnb2snIGZvciBwIGluIHJlc3VsdHMpLCBbKHAucmV0dXJuY29kZSwgcC5zdGRvdXQsIHAuc3RkZXJyKSBmb3IgcCBpbiByZXN1bHRzXQpjYWxscyA9IG9wZW4ocm9vdCArICcvbG9hZGVyLWNhbGxzJykucmVhZCgpLnNwbGl0bGluZXMoKQphc3NlcnQgbGVuKGNhbGxzKSA9PSAxLCAnQ29uY3VycmVudCBjb2xkIHJlcXVlc3RzIGV4ZWN1dGVkICVzIGxvYWRlciBjYWxscycgJSBsZW4oY2FsbHMpCnByaW50KCdQQVNTOiA4IHNpbXVsdGFuZW91cyBjb2xkIHJlcXVlc3RzIHJldHVybmVkIHRoZSBzYW1lIGRhdGEgd2l0aCBleGFjdGx5IDEgbG9hZGVyIGNhbGwuJykK', 'deploy_cache.py': 'aW1wb3J0IGhhc2hsaWIKaW1wb3J0IGh0dHAuY2xpZW50CmltcG9ydCBqc29uCmltcG9ydCBvcwppbXBvcnQgc2h1dGlsCmltcG9ydCBzdGF0CmltcG9ydCBzdWJwcm9jZXNzCmltcG9ydCB0ZW1wZmlsZQppbXBvcnQgdGltZQoKQkFTRSA9ICcvd3d3L2JhY2t1cC90eGlhdy1teXNxbC1maXgtMjAyNjA4MzEnClNUQUdFID0gQkFTRSArICcvc3RhZ2UnCldFQiA9ICcvd3d3L3d3d3Jvb3Qvd3d3LnR4aWF3LmNvbScKUEhQID0gJy93d3cvc2VydmVyL3BocC81Ni9iaW4vcGhwJwpURU1QTEFURSA9IFdFQiArICcvVHBsL2ljcC9neGxfaW5kZXguaHRtbCcKSEVMUEVSID0gV0VCICsgJy9MaWIvSG9tZU5ld3NDYWNoZS5waHAnClJVTlRJTUUgPSBXRUIgKyAnL1J1bnRpbWUvVHhpYXdIb21lTmV3cycKUVVFUlkgPSBiImd4bF9teXNxbF9uZXdzKCdmaWVsZDpuZXdzX2lkLG5ld3NfY2lkLG5ld3NfbmFtZTtsaW1pdDoxMDA7b3JkZXI6bmV3c19hZGR0aW1lIGRlc2MnKSIKUkVQTEFDRU1FTlQgPSBiInR4aWF3X2hvbWVfbmV3c19jYWNoZWQoKSIKCmlmIG5vdCBvcy5wYXRoLmV4aXN0cyhCQVNFICsgJy9pbmRleC1yZXN1bHQuanNvbicpOgogICAgcmFpc2UgUnVudGltZUVycm9yKCdWZXJpZnkgdGhlIG5ldyBkYXRhYmFzZSBpbmRleCBiZWZvcmUgZW5hYmxpbmcgdGhlIGNhY2hlJykKbWFuaWZlc3QgPSBqc29uLmxvYWQob3BlbihTVEFHRSArICcvYmFzZWxpbmUuanNvbicpKQpiYXNlbGluZSA9IG5leHQoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdCBpZiBpdGVtWydyZW1vdGUnXSA9PSBURU1QTEFURSkKb3JpZ2luYWwgPSBvcGVuKFRFTVBMQVRFLCAncmInKS5yZWFkKCkKaWYgaGFzaGxpYi5zaGEyNTYob3JpZ2luYWwpLmhleGRpZ2VzdCgpICE9IGJhc2VsaW5lWydzaGEyNTYnXToKICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignSG9tZXBhZ2UgdGVtcGxhdGUgY2hhbmdlZCBzaW5jZSBpbnNwZWN0aW9uOyByZWZ1c2luZyBvdmVyd3JpdGUnKQppZiBvcy5wYXRoLmV4aXN0cyhIRUxQRVIpOgogICAgcmFpc2UgUnVudGltZUVycm9yKCdVbmV4cGVjdGVkIGNhY2hlIGhlbHBlciBhbHJlYWR5IGV4aXN0cycpCmFzc2VydCBvcmlnaW5hbC5jb3VudChRVUVSWSkgPT0gMQptb2RpZmllZCA9IG9yaWdpbmFsLnJlcGxhY2UoYic8cGhwPiRqaXNodSA9JyArIFFVRVJZLCBiIjxwaHA+cmVxdWlyZV9vbmNlIEFQUF9QQVRIIC4gJ0hvbWVOZXdzQ2FjaGUucGhwJzsgJGppc2h1ID0iICsgUkVQTEFDRU1FTlQsIDEpCmFzc2VydCBtb2RpZmllZCAhPSBvcmlnaW5hbCBhbmQgUVVFUlkgbm90IGluIG1vZGlmaWVkCgpmb3IgbmFtZSBpbiBbJ0hvbWVOZXdzQ2FjaGUucGhwJywgJ3Rlc3RfaG9tZV9uZXdzX2NhY2hlLnBocCddOgogICAgc3VicHJvY2Vzcy5ydW4oW1BIUCwgJy1uJywgJy1sJywgU1RBR0UgKyAnLycgKyBuYW1lXSwgY2hlY2s9VHJ1ZSwgdGltZW91dD0xMCkKdW5pdF9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nY2FjaGUtdW5pdC0nLCBkaXI9QkFTRSkKc3VicHJvY2Vzcy5ydW4oW1BIUCwgJy1uJywgU1RBR0UgKyAnL3Rlc3RfaG9tZV9uZXdzX2NhY2hlLnBocCcsIHVuaXRfZGlyXSwgY2hlY2s9VHJ1ZSwgdGltZW91dD0xMCkKc3VicHJvY2Vzcy5ydW4oWydweXRob24zJywgU1RBR0UgKyAnL3Rlc3RfY2FjaGVfY29uY3VycmVuY3kucHknXSwgY2hlY2s9VHJ1ZSwgdGltZW91dD0xNSkKCmRlZiBhdG9taWNfd3JpdGUoZGF0YSwgdGFyZ2V0LCBtZXRhZGF0YSk6CiAgICBmZCwgdG1wID0gdGVtcGZpbGUubWtzdGVtcChwcmVmaXg9Jy50eGlhdy1yZXBhaXItJywgc3VmZml4PScudG1wJywgZGlyPW9zLnBhdGguZGlybmFtZSh0YXJnZXQpKQogICAgdHJ5OgogICAgICAgIHdpdGggb3MuZmRvcGVuKGZkLCAnd2InKSBhcyBmOgogICAgICAgICAgICBmLndyaXRlKGRhdGEpCiAgICAgICAgICAgIGYuZmx1c2goKQogICAgICAgICAgICBvcy5mc3luYyhmLmZpbGVubygpKQogICAgICAgIG9zLmNobW9kKHRtcCwgc3RhdC5TX0lNT0RFKG1ldGFkYXRhLnN0X21vZGUpKQogICAgICAgIG9zLmNob3duKHRtcCwgbWV0YWRhdGEuc3RfdWlkLCBtZXRhZGF0YS5zdF9naWQpCiAgICAgICAgb3MucmVwbGFjZSh0bXAsIHRhcmdldCkKICAgIGZpbmFsbHk6CiAgICAgICAgaWYgb3MucGF0aC5leGlzdHModG1wKToKICAgICAgICAgICAgb3MudW5saW5rKHRtcCkKCnRlbXBsYXRlX2luZm8gPSBvcy5zdGF0KFRFTVBMQVRFKQpydW50aW1lX2luZm8gPSBvcy5zdGF0KFdFQiArICcvUnVudGltZScpCmlmIG5vdCBvcy5wYXRoLmlzZGlyKFJVTlRJTUUpOgogICAgb3MubWtkaXIoUlVOVElNRSwgMG83NTApCiAgICBvcy5jaG93bihSVU5USU1FLCBydW50aW1lX2luZm8uc3RfdWlkLCBydW50aW1lX2luZm8uc3RfZ2lkKQoKY29tcGlsZWQgPSBbXQpjYWNoZV9yb290ID0gb3MucGF0aC5yZWFscGF0aChXRUIgKyAnL1J1bnRpbWUvQ2FjaGUnKQpjb21waWxlZF9iYWNrdXAgPSBCQVNFICsgJy9jb21waWxlZC1ob21lLWJlZm9yZScKb3MubWFrZWRpcnMoY29tcGlsZWRfYmFja3VwLCBtb2RlPTBvNzAwLCBleGlzdF9vaz1UcnVlKQpmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhjYWNoZV9yb290KToKICAgIGRpcnNbOl0gPSBbZCBmb3IgZCBpbiBkaXJzIGlmIG5vdCBvcy5wYXRoLmlzbGluayhvcy5wYXRoLmpvaW4ocm9vdCwgZCkpXQogICAgZm9yIG5hbWUgaW4gZmlsZXM6CiAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihyb290LCBuYW1lKQogICAgICAgIGlmIG5vdCBuYW1lLmVuZHN3aXRoKCcucGhwJykgb3Igb3MucGF0aC5pc2xpbmsocGF0aCkgb3Igb3MucGF0aC5nZXRzaXplKHBhdGgpID4gMiAqIDEwMjQgKiAxMDI0OgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIG9zLnBhdGguY29tbW9ucGF0aChbY2FjaGVfcm9vdCwgb3MucGF0aC5yZWFscGF0aChwYXRoKV0pICE9IGNhY2hlX3Jvb3Q6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ29tcGlsZWQtY2FjaGUgcGF0aCBlc2NhcGVkIHNpdGUgY2FjaGUgcm9vdCcpCiAgICAgICAgZGF0YSA9IG9wZW4ocGF0aCwgJ3JiJykucmVhZCgpCiAgICAgICAgaWYgUVVFUlkgaW4gZGF0YToKICAgICAgICAgICAgYmFja3VwID0gY29tcGlsZWRfYmFja3VwICsgJy8nICsgaGFzaGxpYi5zaGEyNTYocGF0aC5lbmNvZGUoKSkuaGV4ZGlnZXN0KCkgKyAnLnBocCcKICAgICAgICAgICAgc2h1dGlsLmNvcHkyKHBhdGgsIGJhY2t1cCkKICAgICAgICAgICAgaW5mbyA9IG9zLnN0YXQocGF0aCkKICAgICAgICAgICAgb3MuY2htb2QoYmFja3VwLCAwbzYwMCkKICAgICAgICAgICAgY29tcGlsZWQuYXBwZW5kKChwYXRoLCBiYWNrdXAsIGluZm8pKQoKZGVmIHJlcXVlc3QocGF0aCk6CiAgICBjID0gaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24oJzEyNy4wLjAuMScsIDgwLCB0aW1lb3V0PTEwKQogICAgc3RhcnRlZCA9IHRpbWUubW9ub3RvbmljKCkKICAgIGMucmVxdWVzdCgnR0VUJywgcGF0aCwgaGVhZGVycz17J0hvc3QnOiAnd3d3LnR4aWF3LmNvbScsICdVc2VyLUFnZW50JzogJ0NvZGV4LVJlcGFpci1DaGVjay8xLjAnfSkKICAgIHIgPSBjLmdldHJlc3BvbnNlKCkKICAgIGRhdGEgPSByLnJlYWQoKQogICAgcmVzdWx0ID0geydwYXRoJzogcGF0aCwgJ3N0YXR1cyc6IHIuc3RhdHVzLCAnYnl0ZXMnOiBsZW4oZGF0YSksICdzZWNvbmRzJzogcm91bmQodGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0ZWQsIDQpfQogICAgYy5jbG9zZSgpCiAgICBpZiByLnN0YXR1cyAhPSAyMDAgb3IgbGVuKGRhdGEpIDwgMTAwMDoKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0hvbWVwYWdlIGNoZWNrIGZhaWxlZDogJyArIHN0cihyZXN1bHQpKQogICAgcmV0dXJuIHJlc3VsdAoKdHJ5OgogICAgYXRvbWljX3dyaXRlKG9wZW4oU1RBR0UgKyAnL0hvbWVOZXdzQ2FjaGUucGhwJywgJ3JiJykucmVhZCgpLCBIRUxQRVIsIG9zLnN0YXQoV0VCICsgJy9MaWIvSG9tZVJlcXVlc3RQcm90ZWN0aW9uLnBocCcpKQogICAgYXRvbWljX3dyaXRlKG1vZGlmaWVkLCBURU1QTEFURSwgdGVtcGxhdGVfaW5mbykKICAgIGZvciBwYXRoLCBiYWNrdXAsIGluZm8gaW4gY29tcGlsZWQ6CiAgICAgICAgb3MudW5saW5rKHBhdGgpCiAgICBwcm9iZXMgPSBbcmVxdWVzdCgnLycpXQogICAgY2FjaGVfcGF0aCA9IFJVTlRJTUUgKyAnL25ld3MtbGlzdC12MS5qc29uJwogICAgZW50cnkgPSBqc29uLmxvYWQob3BlbihjYWNoZV9wYXRoKSkKICAgIGlmIGxlbihlbnRyeVsnaXRlbXMnXSkgIT0gMTAwOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ2FjaGUgZGlkIG5vdCBwcmVzZXJ2ZSB0aGUgZXhwZWN0ZWQgMTAwIGxpc3QgaXRlbXMnKQogICAgZGlnZXN0ID0gaGFzaGxpYi5zaGEyNTYob3BlbihjYWNoZV9wYXRoLCAncmInKS5yZWFkKCkpLmhleGRpZ2VzdCgpCiAgICBwcm9iZXMuYXBwZW5kKHJlcXVlc3QoJy8/cj1jb2RleC1jYWNoZS1rZXktY2hlY2snKSkKICAgIGlmIGRpZ2VzdCAhPSBoYXNobGliLnNoYTI1NihvcGVuKGNhY2hlX3BhdGgsICdyYicpLnJlYWQoKSkuaGV4ZGlnZXN0KCk6CiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdRdWVyeSBwYXJhbWV0ZXIgdW5leHBlY3RlZGx5IGNoYW5nZWQgdGhlIGZyZXNoIGxpc3QgY2FjaGUnKQpleGNlcHQgRXhjZXB0aW9uOgogICAgYXRvbWljX3dyaXRlKG9yaWdpbmFsLCBURU1QTEFURSwgdGVtcGxhdGVfaW5mbykKICAgICMgS2VlcCB0aGUgaGFybWxlc3MgaGVscGVyIGF2YWlsYWJsZSB0byBhbnkgaW4tZmxpZ2h0IG5ld2x5IGNvbXBpbGVkIHRlbXBsYXRlLgogICAgZm9yIHBhdGgsIGJhY2t1cCwgaW5mbyBpbiBjb21waWxlZDoKICAgICAgICBhdG9taWNfd3JpdGUob3BlbihiYWNrdXAsICdyYicpLnJlYWQoKSwgcGF0aCwgaW5mbykKICAgIHJhaXNlCgpyZXN1bHQgPSB7J3N0YXR1cyc6ICdpbnN0YWxsZWQnLCAndHRsX3NlY29uZHMnOiA2MCwgJ3N0YWxlX3NlY29uZHMnOiAzMDAsICdpdGVtcyc6IGxlbihlbnRyeVsnaXRlbXMnXSksICdpbnZhbGlkYXRlZF9jb21waWxlZF9maWxlcyc6IFtwIGZvciBwLCBfLCBfIGluIGNvbXBpbGVkXSwgJ2h0dHBfcHJvYmVzJzogcHJvYmVzLCAncXVlcnlfYXJndW1lbnRfcmV1c2VzX2NhY2hlJzogVHJ1ZX0KanNvbi5kdW1wKHJlc3VsdCwgb3BlbihCQVNFICsgJy9jYWNoZS1yZXN1bHQuanNvbicsICd3JyksIGluZGVudD0yKQpwcmludCgnQ0FDSEVfREVQTE9ZRUQnLCBqc29uLmR1bXBzKHJlc3VsdCksIGZsdXNoPVRydWUpCg==', 'add_news_index.py': 'aW1wb3J0IGd6aXAKaW1wb3J0IGpzb24KaW1wb3J0IG9zCmltcG9ydCByZQppbXBvcnQgc2h1dGlsCmltcG9ydCBzdWJwcm9jZXNzCmltcG9ydCB0aW1lCgpCQVNFID0gJy93d3cvYmFja3VwL3R4aWF3LW15c3FsLWZpeC0yMDI2MDgzMScKY29uZmlnID0gb3BlbignL3d3dy93d3dyb290L3d3dy50eGlhdy5jb20vUnVudGltZS9Db25mL2NvbmZpZy5waHAnLCBlbmNvZGluZz0ndXRmLTgnKS5yZWFkKCkKY2ZnID0ge20uZ3JvdXAoMSkubG93ZXIoKTogbS5ncm91cCgzKSBmb3IgbSBpbiByZS5maW5kaXRlcihyJycnWyciXShkYl9bYS16X10rKVsnIl1ccyo9PlxzKihbJyJdKSguKj8pXDInJycsIGNvbmZpZywgcmUuSSl9CmFzc2VydCBjZmdbJ2RiX25hbWUnXSA9PSAneGlheGlhJwplbnYgPSBkaWN0KG9zLmVudmlyb24sIE1ZU1FMX1BXRD1jZmcuZ2V0KCdkYl9wd2QnLCBjZmcuZ2V0KCdkYl9wYXNzd29yZCcpKSkKYXV0aCA9IFsnLS1uby1kZWZhdWx0cycsICctdScgKyBjZmdbJ2RiX3VzZXInXSwgJy1oJyArIGNmZ1snZGJfaG9zdCddLCAnLS1jb25uZWN0LXRpbWVvdXQ9NSddCm15c3FsID0gWycvd3d3L3NlcnZlci9teXNxbC9iaW4vbXlzcWwnXSArIGF1dGggKyBbJy1CJ10KCmRlZiBzcWwocXVlcnksIHRpbWVvdXQ9MjApOgogICAgcCA9IHN1YnByb2Nlc3MucnVuKG15c3FsICsgWyctZScsIHF1ZXJ5XSwgZW52PWVudiwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsIHRpbWVvdXQ9dGltZW91dCkKICAgIGlmIHAucmV0dXJuY29kZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IocC5zdGRlcnJbOjE1MDBdKQogICAgcmV0dXJuIHAuc3Rkb3V0CgpzY2hlbWEgPSBzcWwoJ1NIT1cgQ1JFQVRFIFRBQkxFIHhpYXhpYS5neGxfbmV3czsgU0hPVyBJTkRFWCBGUk9NIHhpYXhpYS5neGxfbmV3czsnKQpzY2hlbWFfcGF0aCA9IEJBU0UgKyAnL2d4bF9uZXdzLXNjaGVtYS1iZWZvcmUudHh0JwppZiBub3Qgb3MucGF0aC5leGlzdHMoc2NoZW1hX3BhdGgpOgogICAgd2l0aCBvcGVuKHNjaGVtYV9wYXRoLCAneCcpIGFzIGY6CiAgICAgICAgZi53cml0ZShzY2hlbWEpCiAgICBvcy5jaG1vZChzY2hlbWFfcGF0aCwgMG82MDApCgppbmRleGVzID0ge30KZm9yIGxpbmUgaW4gc3FsKCdTSE9XIElOREVYIEZST00geGlheGlhLmd4bF9uZXdzOycpLnNwbGl0bGluZXMoKVsxOl06CiAgICBjb2xzID0gbGluZS5zcGxpdCgnXHQnKQogICAgaW5kZXhlcy5zZXRkZWZhdWx0KGNvbHNbMl0sIFtdKS5hcHBlbmQoKGludChjb2xzWzNdKSwgY29sc1s0XSkpCmNvbXBhdGlibGUgPSBbbmFtZSBmb3IgbmFtZSwgdmFsdWVzIGluIGluZGV4ZXMuaXRlbXMoKSBpZiBbY29sIGZvciBfLCBjb2wgaW4gc29ydGVkKHZhbHVlcyldWzoyXSA9PSBbJ25ld3Nfc3RhdHVzJywgJ25ld3NfYWRkdGltZSddXQppZiBjb21wYXRpYmxlOgogICAgcHJpbnQoJ1NVSVRBQkxFX0lOREVYX0FMUkVBRFlfRVhJU1RTJywgY29tcGF0aWJsZSwgZmx1c2g9VHJ1ZSkKZWxzZToKICAgIGlmICdpZHhfbmV3c19zdGF0dXNfYWRkdGltZScgaW4gaW5kZXhlczoKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0luZGV4IG5hbWUgZXhpc3RzIHdpdGggZGlmZmVyZW50IGNvbHVtbnM7IHJlZnVzaW5nIHJlcGxhY2VtZW50JykKICAgIGJhY2t1cCA9IEJBU0UgKyAnL2d4bF9uZXdzLWJlZm9yZS5zcWwuZ3onCiAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYmFja3VwKToKICAgICAgICBwYXJ0aWFsID0gYmFja3VwICsgJy5wYXJ0aWFsJwogICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhcnRpYWwpOgogICAgICAgICAgICB3aXRoIGd6aXAub3BlbihwYXJ0aWFsLCAncmInKSBhcyBwcmV2aW91czoKICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzLnJlYWQoMSk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdOb25lbXB0eSBwYXJ0aWFsIGJhY2t1cCBleGlzdHM7IGluc3BlY3QgYmVmb3JlIHJldHJ5JykKICAgICAgICAgICAgb3MucmVuYW1lKHBhcnRpYWwsIHBhcnRpYWwgKyAnLmVtcHR5LWZhaWxlZC0nICsgc3RyKGludCh0aW1lLnRpbWUoKSkpKQogICAgICAgIHByaW50KCdCQUNLSU5HX1VQX0dYTF9ORVdTX1dJVEhfQ09OU0lTVEVOVF9TTkFQU0hPVCcsIGZsdXNoPVRydWUpCiAgICAgICAgZHVtcF9hdXRoID0gW2EgZm9yIGEgaW4gYXV0aCBpZiBub3QgYS5zdGFydHN3aXRoKCctLWNvbm5lY3QtdGltZW91dD0nKV0KICAgICAgICBkdW1wX2FyZ3MgPSBbJy93d3cvc2VydmVyL215c3FsL2Jpbi9teXNxbGR1bXAnXSArIGR1bXBfYXV0aCArIFsnLS1zaW5nbGUtdHJhbnNhY3Rpb24nLCAnLS1xdWljaycsICctLXNraXAtbG9jay10YWJsZXMnLCAnLS1za2lwLWFkZC1sb2NrcycsICctLWhleC1ibG9iJywgJy0tc2V0LWd0aWQtcHVyZ2VkPU9GRicsICd4aWF4aWEnLCAnZ3hsX25ld3MnXQogICAgICAgIHdpdGggb3BlbihCQVNFICsgJy9kdW1wLXN0ZGVyci50eHQnLCAnd2InKSBhcyBlcnI6CiAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGR1bXBfYXJncywgZW52PWVudiwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPWVycikKICAgICAgICAgICAgd2l0aCBvcGVuKHBhcnRpYWwsICd4YicpIGFzIHJhdzoKICAgICAgICAgICAgICAgIG9zLmNobW9kKHBhcnRpYWwsIDBvNjAwKQogICAgICAgICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKGZpbGVvYmo9cmF3LCBtb2RlPSd3YicsIGNvbXByZXNzbGV2ZWw9MSkgYXMgdGFyZ2V0OgogICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihwLnN0ZG91dCwgdGFyZ2V0LCAxMDI0ICogMTAyNCkKICAgICAgICAgICAgcC5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICBpZiBwLndhaXQodGltZW91dD05MCkgIT0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQmFja3VwIGZhaWxlZDsgc2VlIHByaXZhdGUgZHVtcC1zdGRlcnIudHh0LiBObyBBTFRFUiBwZXJmb3JtZWQuJykKICAgICAgICB3aXRoIGd6aXAub3BlbihwYXJ0aWFsLCAncmInKSBhcyBjaGVjazoKICAgICAgICAgICAgd2hpbGUgY2hlY2sucmVhZCgxMDI0ICogMTAyNCk6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgb3MucmVwbGFjZShwYXJ0aWFsLCBiYWNrdXApCiAgICBwcmludCgnQkFDS1VQX1ZFUklGSUVEJywgYmFja3VwLCBvcy5wYXRoLmdldHNpemUoYmFja3VwKSwgZmx1c2g9VHJ1ZSkKICAgIHByaW50KCdBRERJTkdfU0VDT05EQVJZX0lOREVYX0lOUExBQ0VfTE9DS19OT05FJywgZmx1c2g9VHJ1ZSkKICAgIHN0YXJ0ZWQgPSB0aW1lLm1vbm90b25pYygpCiAgICBzcWwoJ1NFVCBTRVNTSU9OIGxvY2tfd2FpdF90aW1lb3V0PTU7IEFMVEVSIFRBQkxFIHhpYXhpYS5neGxfbmV3cyBBREQgSU5ERVggaWR4X25ld3Nfc3RhdHVzX2FkZHRpbWUgKG5ld3Nfc3RhdHVzLCBuZXdzX2FkZHRpbWUpLCBBTEdPUklUSE09SU5QTEFDRSwgTE9DSz1OT05FOycsIHRpbWVvdXQ9OTApCiAgICBwcmludCgnSU5ERVhfQURERURfU0VDT05EUycsIHJvdW5kKHRpbWUubW9ub3RvbmljKCkgLSBzdGFydGVkLCAzKSwgZmx1c2g9VHJ1ZSkKCnF1ZXJ5ID0gJ1NFTEVDVCBTUUxfTk9fQ0FDSEUgbmV3c19pZCxuZXdzX2NpZCxuZXdzX25hbWUgRlJPTSB4aWF4aWEuZ3hsX25ld3MgV0hFUkUgbmV3c19zdGF0dXM9MSBPUkRFUiBCWSBuZXdzX2FkZHRpbWUgREVTQyBMSU1JVCAxMDAnCnBsYW4gPSBzcWwoJ0VYUExBSU4gJyArIHF1ZXJ5ICsgJzsnKQpwcmludCgnRVhQTEFJTl9BRlRFUlxuJyArIHBsYW4sIGZsdXNoPVRydWUpCmlmICdVc2luZyBmaWxlc29ydCcgaW4gcGxhbjoKICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIG9wdGltaXplciBzdGlsbCBzb3J0czsgaW5zcGVjdCBiZWZvcmUgY2xhaW1pbmcgc3VjY2VzcycpCnNhbXBsZXMgPSBbXQpmb3IgXyBpbiByYW5nZSgzKToKICAgIHN0YXJ0ZWQgPSB0aW1lLm1vbm90b25pYygpCiAgICByZXN1bHQgPSBzcWwocXVlcnkgKyAnOycpCiAgICBzYW1wbGVzLmFwcGVuZCh7J3dhbGxfc2Vjb25kc19pbmNsdWRpbmdfY2xpZW50Jzogcm91bmQodGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0ZWQsIDQpLCAncm93cyc6IGxlbihyZXN1bHQuc3BsaXRsaW5lcygpKSAtIDF9KQphc3NlcnQgYWxsKHNbJ3Jvd3MnXSA9PSAxMDAgZm9yIHMgaW4gc2FtcGxlcykKbWV0cmljcyA9IHNxbChxdWVyeSArICI7IFNIT1cgU0VTU0lPTiBTVEFUVVMgV0hFUkUgVmFyaWFibGVfbmFtZSBJTiAoJ1NvcnRfcm93cycsJ1NvcnRfc2NhbicsJ1NvcnRfcmFuZ2UnLCdIYW5kbGVyX3JlYWRfa2V5JywnSGFuZGxlcl9yZWFkX25leHQnLCdIYW5kbGVyX3JlYWRfcHJldicpOyIpCm1ldHJpY3MgPSBtZXRyaWNzW21ldHJpY3MucmZpbmQoJ1ZhcmlhYmxlX25hbWVcdFZhbHVlJyk6XQpwcmludCgnUVVFUllfU0FNUExFUycsIGpzb24uZHVtcHMoc2FtcGxlcyksIGZsdXNoPVRydWUpCnByaW50KCdTRVNTSU9OX0NPVU5URVJTX0FGVEVSX09ORV9RVUVSWVxuJyArIG1ldHJpY3MsIGZsdXNoPVRydWUpCndpdGggb3BlbihCQVNFICsgJy9pbmRleC1yZXN1bHQuanNvbicsICd3JykgYXMgZjoKICAgIGpzb24uZHVtcCh7J2V4cGxhaW4nOiBwbGFuLCAnc2FtcGxlcyc6IHNhbXBsZXMsICdzZXNzaW9uX2NvdW50ZXJzJzogbWV0cmljc30sIGYsIGluZGVudD0yKQo='}
|
|
for name,data in payloads.items():
|
|
p=BASE+"/"+name
|
|
with open(p,"wb") as f:f.write(base64.b64decode(data))
|
|
os.chmod(p,0o600)
|
|
print("STAGED_CACHE_AND_TEST_FILES",flush=True)
|
|
exec(compile(open(BASE+"/deploy_cache.py","rb").read(),BASE+"/deploy_cache.py","exec"))
|