1 line
8.1 KiB
Python
1 line
8.1 KiB
Python
IiIiT2ZmbGluZSByZWdyZXNzaW9uIHRlc3RzOiBubyByZWFsIGNvbnRhaW5lcnMsIHNlcnZpY2VzLCBBUFQgb3IgY3JlZGVudGlhbHMuIiIiCmltcG9ydCBvcwpmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKaW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IHRlbXBmaWxlCmltcG9ydCB1bml0dGVzdAoKU09VUkNFID0gUGF0aChfX2ZpbGVfXykud2l0aF9uYW1lKCdseGMtZW5yb2xsLnNoJykucmVhZF90ZXh0KCkKV09SS0VSID0gU09VUkNFLnNwbGl0KCI8PCdXT1JLRVInXG4iLCAxKVsxXS5zcGxpdCgnXG5XT1JLRVJcbicsIDEpWzBdCgoKZGVmIGJhc2goY29kZSwgKmFyZ3MpOgogICAgcmV0dXJuIHN1YnByb2Nlc3MucnVuKFsnYmFzaCcsICctYycsIGNvZGUsICctLScsICphcmdzXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgdGV4dD1UcnVlKQoKCmNsYXNzIEVucm9sbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgIGRlZiB0ZXN0X3N5bnRheChzZWxmKToKICAgICAgICBmb3IgY29kZSBpbiAoU09VUkNFLCBXT1JLRVIpOgogICAgICAgICAgICByID0gc3VicHJvY2Vzcy5ydW4oWydiYXNoJywgJy1uJ10sIGlucHV0PWNvZGUsIHRleHQ9VHJ1ZSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkKICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnJldHVybmNvZGUsIDAsIHIuc3RkZXJyKQoKICAgIGRlZiB0ZXN0X2ludmVudG9yeV9leGNsdWRlc19jb21wbGV0ZV9zdG9wcGVkX2xvY2tlZF9hbmRfdW5zdXBwb3J0ZWQoc2VsZik6CiAgICAgICAgIyBGdW5jdGlvbi1vbmx5IGhvc3QgaGFybmVzcy4gTWFjIEJhc2ggMyBsYWNrcyBtb2Rlcm4gbm91bnNldC1hcnJheSBzZW1hbnRpY3MuCiAgICAgICAgbGliID0gU09VUkNFLnJzcGxpdCgnXG5tYWluXG4nLCAxKVswXQogICAgICAgIGxpYiA9IGxpYi5yZXBsYWNlKCdzZXQgLUVldW8gcGlwZWZhaWwnLCAnc2V0IC1FZW8gcGlwZWZhaWwnLCAxKQogICAgICAgIGxpYiA9IGxpYi5yZXBsYWNlKCJbWyAkRVVJRCA9PSAwIF1dIHx8IGZhaWwgJ0JpdHRlIGF1ZiBkZW0gUHJveG1veC1Ib3N0IGFscyByb290IHN0YXJ0ZW4uJyIsICc6JykKICAgICAgICBsaWIgPSBsaWIucmVwbGFjZSgnZm9yIHRvb2wgaW4gcGN0IHRpbWVvdXQgcHl0aG9uMzsgZG8gY29tbWFuZCAtdiAiJHRvb2wiID4vZGV2L251bGwgfHwgZmFpbCAiJHRvb2wgZmVobHQgYXVmIGRlbSBIb3N0LiI7IGRvbmUnLCAnOicpCiAgICAgICAgbW9ja3MgPSByJycnCnRpbWVvdXQoKSB7IHNoaWZ0OyAiJEAiOyB9CnBjdCgpIHsKICBjYXNlICIkMSIgaW4KICAgIGxpc3QpIHByaW50ZiAnVk1JRCBTdGF0dXMgTG9jayBOYW1lXG4xMDIgcnVubmluZyBkb2NrZXJcbjEwNiBydW5uaW5nIGFkZ3VhcmRcbjEwNyBydW5uaW5nIGNvbXBsZXRlXG4xMDggc3RvcHBlZCBzdG9wcGVkXG4xMDkgcnVubmluZyBhbHBpbmVcbjExMiBydW5uaW5nIGxvY2tlZFxuMTMzIHJ1bm5pbmcgbWFuYWdlclxuJzs7CiAgICBjb25maWcpIGlmIFtbICQyID09IDExMiBdXTsgdGhlbiBlY2hvICdsb2NrOiBiYWNrdXAnOyBlbHNlIGVjaG8gJ2hvc3RuYW1lOiBmaXh0dXJlJzsgZmk7OwogICAgZXhlYykKICAgICAgW1sgJDQgPT0gc2ggJiYgJDUgPT0gLXMgXV0gfHwgcmV0dXJuIDk5CiAgICAgIGNhdCA+L2Rldi9udWxsCiAgICAgIGNhc2UgIiQyIiBpbgogICAgICAgIDEwMikgZWNobyAnZG9ja2VyfGRlYmlhbnxib29rd29ybXwxfDB8MHwxfDF8ZG9uZSc7OwogICAgICAgIDEwNikgZWNobyAnYWRndWFyZHxkZWJpYW58Ym9va3dvcm18MHwxfDB8MHwxfGRvbmUnOzsKICAgICAgICAxMDcpIGVjaG8gJ2NvbXBsZXRlfHVidW50dXxub2JsZXwxfDF8MHwxfDF8ZG9uZSc7OwogICAgICAgIDEwOSkgZWNobyAnYWxwaW5lfGFscGluZXx1bmtub3dufDB8MHwwfDB8MHxkb25lJzs7CiAgICAgICAgMTMzKSBlY2hvICdtYW5hZ2VyfGRlYmlhbnxib29rd29ybXwwfDF8MXwwfDF8ZG9uZSc7OwogICAgICBlc2FjOzsKICAgICopIGVjaG8gIlVORVhQRUNURUQgTVVUQVRJT046ICQqIiA+JjI7IHJldHVybiA5OTs7CiAgZXNhYwp9CnNjYW4KcHJpbnRmICdDQU5ESURBVEVTPSVzXG4nICIke0lEU1sqXX0iCnByaW50ZiAnTUFOQUdFUlM9JXNcbicgIiR7TUFOQUdFUlNbKl19IgonJycKICAgICAgICByID0gYmFzaChsaWIgKyBtb2NrcykKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIucmV0dXJuY29kZSwgMCwgci5zdGRlcnIpCiAgICAgICAgc2VsZi5hc3NlcnRJbignQ0FORElEQVRFUz0xMDIgMTA2IDEzMycsIHIuc3Rkb3V0KQogICAgICAgIHNlbGYuYXNzZXJ0SW4oJ01BTkFHRVJTPTEzMycsIHIuc3Rkb3V0KQogICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1VORVhQRUNURUQgTVVUQVRJT04nLCByLnN0ZGVycikKCiAgICBkZWYgcnVuX3dvcmtlcihzZWxmLCB3YW50X3RzLCB3YW50X3d6LCBzc2g9MCwgaW5zdGFsbGVkPUZhbHNlLCBmYWlsdXJlPUZhbHNlKToKICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRkOgogICAgICAgICAgICBwID0gUGF0aCh0ZCkKICAgICAgICAgICAgKHAvJ29zc2VjL3Zhci9ydW4nKS5ta2RpcihwYXJlbnRzPVRydWUpCiAgICAgICAgICAgIChwLydvc3NlYy92YXIvcnVuL3dhenVoLWFnZW50ZC5zdGF0ZScpLndyaXRlX3RleHQoInN0YXR1cz0nY29ubmVjdGVkJ1xuIikKICAgICAgICAgICAgKHAvJ29zLXJlbGVhc2UnKS53cml0ZV90ZXh0KCdJRD1kZWJpYW5cblZFUlNJT05fQ09ERU5BTUU9Ym9va3dvcm1cblZFUlNJT049IjEyIChib29rd29ybSkiXG4nKQogICAgICAgICAgICAocC8naGVhZHNjYWxlLmtleScpLndyaXRlX3RleHQoJ2ZpeHR1cmUtc2VjcmV0LW5vdC1mb3ItbG9nZ2luZycpCiAgICAgICAgICAgIHdvcmtlciA9IFdPUktFUgogICAgICAgICAgICBmb3Igb2xkLCBuZXcgaW4gKAogICAgICAgICAgICAgICAgKCcvdmFyL29zc2VjJywgc3RyKHAvJ29zc2VjJykpLAogICAgICAgICAgICAgICAgKCcvZXRjL29zLXJlbGVhc2UnLCBzdHIocC8nb3MtcmVsZWFzZScpKSwKICAgICAgICAgICAgICAgICgnL2V0Yy9hcHQnLCBzdHIocC8nYXB0JykpLAogICAgICAgICAgICAgICAgKCc
|