-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindependence.py
35 lines (30 loc) · 41.4 KB
/
independence.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def _get_module():
del globals()['_get_module']
import imp
import base64
import marshal
magic = imp.get_magic()
if magic == b'O\x0c\r\n': # Python 3.1
pycData = b'TwwNChNz/FRjAAAAAAAAAAAAAAAABAAAAEAAAABzdAAAAGQAAGQBAGwAAFoAAEdkAgCEAABkAwCD\nAgBaAQBkBABkBQCEAQBaAgBkBgCEAABaAwBkBwCEAABaBABkCACEAABaBQBkCQCEAABaBgBkAABl\nBQBfBwBkCgBlBQBfCABkAABlBgBfBwBkCgBlBgBfCABkAQBTKAsAAABpAAAAAE5jAQAAAAAAAAAB\nAAAAAwAAAEIAAABzXwAAAHwAAEVlAABaAQBlAgCDAABpAABkAACEAgBaAwBkAQCEAABaBABkAgCE\nAABaBQBkAwCEAABaBgBkBACEAABaBwBkBQCEAABaCABkBgCEAABaCQBkBwCEAABaCgBkCABTKAkA\nAABjAwAAAAAAAAADAAAAAgAAAEMAAABzFgAAAHwBAHwAAF8AAHwCAHwAAF8BAGQAAFMoAQAAAE4o\nAgAAAHUBAAAARHUBAAAAZigDAAAAdQQAAABzZWxmdQYAAABsYWJlbHN1CAAAAGZ1bmN0aW9uKAAA\nAAAoAAAAAHUkAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQgAAABfX2lu\naXRfXwUAAABzBAAAAAABCQFjAgAAAAAAAAACAAAAAgAAAEMAAABzHgAAAHwBAHwAAGoAAGsGAHIa\nAHwAAGoAAHwBABlTZAEAUygCAAAATmkAAAAAKAEAAAB1AQAAAGYoAgAAAHUBAAAAdnUBAAAAaygA\nAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXULAAAAX19n\nZXRpdGVtX18JAAAAcwAAAABjAwAAAAAAAAADAAAABAAAAEMAAABzFQAAAHQAAAR8AABqAQB8AQA8\nfQIAZAAAUygBAAAATigCAAAAdQgAAABfc2V0aXRlbXUBAAAAZigDAAAAdQEAAAB2dQEAAABrdQMA\nAAB2YWwoAAAAACgAAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1\nCwAAAF9fc2V0aXRlbV9fCgAAAHMAAAAAYwEAAAAAAAAAAQAAAAIAAABDAAAAcwgAAABkAQB8AAAU\nUygCAAAATmn/////KAAAAAAoAQAAAHUBAAAAdigAAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9w\ncml2YXRlL2luZGVwZW5kZW5jZS5weXUHAAAAX19uZWdfXwsAAABzAAAAAGMCAAAAAAAAAAIAAAAE\nAAAAAwAAAHMpAAAAdAAAfAAAagEAhwAAZgEAZAEAhgAAfAAAagIAagMAgwAARIMBAIMCAFMoAgAA\nAE5jAQAAAAAAAAADAAAABAAAABMAAABzIwAAAGkAAHwAAF0ZAFwCAH0BAH0CAIgAAHwCABR8AQCT\nAgBxBgBTKAAAAAAoAAAAACgDAAAAdQIAAAAuMHUBAAAAa3UBAAAAeCgBAAAAdQUAAABhbHBoYSgA\nAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1CgAAADxkaWN0Y29t\ncD4MAAAAcwIAAAAJACgEAAAAdQQAAABfVmVjdQEAAABEdQEAAABmdQUAAABpdGVtcygCAAAAdQEA\nAAB2dQUAAABhbHBoYSgAAAAAKAEAAAB1BQAAAGFscGhhdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0\nZS9pbmRlcGVuZGVuY2UucHl1CAAAAF9fcm11bF9fDAAAAHMAAAAAYwIAAAAAAAAAAgAAAAMAAAAD\nAAAAcz0AAAB0AACIAQB0AQCDAgByNQB0AgCHAQCHAABmAgBkAQCGAACIAABqAwBqBACDAABEgwEA\ngwEAU3QFAFNkAABTKAIAAABOYwEAAAAAAAAAAgAAAAUAAAATAAAAcyIAAABnAAB8AABdGAB9AQCI\nAQB8AQAZiAAAfAEAGRSRAgBxBgBTKAAAAAAoAAAAACgCAAAAdQIAAAAuMHUBAAAAaygCAAAAdQUA\nAABvdGhlcnUEAAAAc2VsZigAAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVu\nY2UucHl1CgAAADxsaXN0Y29tcD4RAAAAcwIAAAAJACgGAAAAdQoAAABpc2luc3RhbmNldQQAAABf\nVmVjdQMAAABzdW11AQAAAGZ1BAAAAGtleXN1DgAAAE5vdEltcGxlbWVudGVkKAIAAAB1BAAAAHNl\nbGZ1BQAAAG90aGVyKAAAAAAoAgAAAHUEAAAAc2VsZnUFAAAAb3RoZXJ1JAAAAC4uL3Jlc291cmNl\ncy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUHAAAAX19tdWxfXw4AAABzBgAAAAACDwEmAmMCAAAA\nAAAAAAIAAAAFAAAAAwAAAHNEAAAAdAAAiAAAagEAhwAAhwEAZgIAZAEAhgAAdAIAiAAAagMAagQA\ngwAAgwEAagUAiAEAagMAagQAgwAAgwEARIMBAIMCAFMoAgAAAE5jAQAAAAAAAAACAAAABQAAABMA\nAABzJQAAAGkAAHwAAF0bAH0BAIgAAHwBABmIAQB8AQAZF3wBAJMCAHEGAFMoAAAAACgAAAAAKAIA\nAAB1AgAAAC4wdQEAAABrKAIAAAB1AQAAAHV1AQAAAHYoAAAAAHUkAAAALi4vcmVzb3VyY2VzL3By\naXZhdGUvaW5kZXBlbmRlbmNlLnB5dQoAAAA8ZGljdGNvbXA+FQAAAHMCAAAACQAoBgAAAHUEAAAA\nX1ZlY3UBAAAARHUDAAAAc2V0dQEAAABmdQQAAABrZXlzdQUAAAB1bmlvbigCAAAAdQEAAAB1dQEA\nAAB2KAAAAAAoAgAAAHUBAAAAdXUBAAAAdnUkAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBl\nbmRlbmNlLnB5dQcAAABfX2FkZF9fFQAAAHMAAAAAYwIAAAAAAAAAAgAAAAIAAABDAAAAcwkAAAB8\nAAB8AQALF1MoAQAAAHU0AAAAUmV0dXJucyBhIHZlY3RvciB3aGljaCBpcyB0aGUgZGlmZmVyZW5j\nZSBvZiBhIGFuZCBiLigAAAAAKAIAAAB1AQAAAGF1AQAAAGIoAAAAACgAAAAAdSQAAAAuLi9yZXNv\ndXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1BwAAAF9fc3ViX18XAAAAcwIAAAAAAk4oCwAA\nAHUIAAAAX19uYW1lX191CgAAAF9fbW9kdWxlX191AwAAAHNldHUIAAAAX19pbml0X191CwAAAF9f\nZ2V0aXRlbV9fdQsAAABfX3NldGl0ZW1fX3UHAAAAX19uZWdfX3UIAAAAX19ybXVsX191BwAAAF9f\nbXVsX191BwAAAF9fYWRkX191BwAAAF9fc3ViX18oAQAAAHUKAAAAX19sb2NhbHNfXygAAAAAKAAA\nAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUEAAAAX1ZlYwQAAABz\nEAAAAAoBEgQJAQkBCQEJAgkHCQJ1BAAAAF9WZWNnmyuhhpuEBj1jAgAAAAAAAAAFAAAABgAAAEMA\nAABzbAAAAGcAAH0CAHhZAHwAAERdUQB9AwB4KAB8AgBEXSAAfQQAfAMAfAMAfAQAFHwEAHwEABQb\nfAQAFBh9AwBxGgBXfAMAfAMAFHwBAGsEAHINAHwCAGoAAHwDAIMBAAFxDQBxDQBXdAEAfAIAgwEA\nUygBAAAATigCAAAAdQYAAABhcHBlbmR1AwAAAGxlbigFAAAAdQEAAABMdQMAAABlcHN1CQAAAHZz\ndGFybGlzdHUBAAAAdnUFAAAAdnN0YXIoAAAAACgAAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0\nZS9pbmRlcGVuZGVuY2UucHl1BwAAAF9SX3JhbmsbAAAAcxIAAAAAAQYBBwAGAQcABgEeARAAFAFj\nAQAAAAAAAAAGAAAABQAAAAMAAABztAAAAHQAAHQBAHQCAIgBAIMBAIMBAIMBAH0BAGQBAH0CAHiP\nAIgBAGQBABlqAwBEXYAAiQAAhwAAhwEAZgIAZAIAhgAAfAEARIMBAH0DAHwDAGcAAGsDAHIsAHwD\nAGQBABl9BAB8AQBqBAB8BACDAQABfAIAZAMAN30CAHgxAHwDAGQDAGQAAIUCABlEXRwAfQUAiAEA\nfAUAGYgBAHwEABkXiAEAfAUAPHGJAFdxLABxLABXfAIAUygEAAAATmkAAAAAYwEAAAAAAAAAAgAA\nAAQAAAATAAAAcyoAAABnAAB8AABdIAB9AQCIAQB8AQAZiAAAGWQAAGsDAHIGAHwBAJECAHEGAFMo\nAQAAAGkAAAAAKAAAAAAoAgAAAHUCAAAALjB1AQAAAHIoAgAAAHUBAAAAY3UHAAAAcm93bGlzdCgA\nAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1CgAAADxsaXN0Y29t\ncD4nAAAAcwIAAAAJAGkBAAAAKAUAAAB1AwAAAHNldHUFAAAAcmFuZ2V1AwAAAGxlbnUBAAAARHUG\nAAAAcmVtb3ZlKAYAAAB1BwAAAHJvd2xpc3R1CQAAAHJvd3NfbGVmdHUBAAAAcnURAAAAcm93c193\naXRoX25vbnplcm91BQAAAHBpdm90dQkAAAByb3dfaW5kZXgoAAAAACgCAAAAdQEAAABjdQcAAABy\nb3dsaXN0dSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1CQAAAF9HRjJf\ncmFuayMAAABzGgAAAAABGAEGAQ4ABgEZAQwBCgENAQoBEQAGASEBYwEAAAAAAAAABAAAAAUAAABD\nAAAAc3EAAABkAQCEAAB8AABEgwEAfQEAeFoAfAAARF1SAH0CAHhJAHwCAGoAAGoBAIMAAERdOAB9\nAwB8AwBkAgBrAwByLQB0AgB8AwB0AwBqBACDAgByWwB0BQB8AQCDAQBTdAYAfAEAgwEAU3EtAFdx\nFwBXZAIAUygDAAAATmMBAAAAAAAAAAIAAAAFAAAAUwAAAHMlAAAAZwAAfAAAXRsAfQEAdAAAfAEA\nagEAfAEAagIAgwIAkQIAcQYAUygAAAAAKAMAAAB1BAAAAF9WZWN1AQAAAER1AQAAAGYoAgAAAHUC\nAAAALjB1AQAAAHUoAAAAACgAAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVu\nY2UucHl1CgAAADxsaXN0Y29tcD4xAAAAcwIAAAAJAGkAAAAAKAcAAAB1AQAAAGZ1BgAAAHZhbHVl\nc3UKAAAAaXNpbnN0YW5jZXUDAAAAR0YydQMAAABPbmV1CQAAAF9HRjJfcmFua3UHAAAAX1JfcmFu\naygEAAAAdQEAAABMdQIAAABMY3UBAAAAdnUBAAAAeCgAAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNl\ncy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUFAAAAX3JhbmswAAAAcxQAAAAAARABBwAGARAABgEM\nARIBCgESAWMBAAAAAAAAAAEAAAAEAAAAQwAAAHM0AAAAdAAAfAAAdAEAdAIAZgIAgwIAcxsAdAMA\nggEAdAQABGoFAGQBADcCXwUAdAYAfAAAgwEAUygCAAAAdXACAABGaW5kcyB0aGUgcmFuayBvZiBh\nIGxpc3Qgb3Igc2V0IG9mIHZlY3RvcnMuCgogICAgQXJnczoKICAgICAgICBMOiBBIGxpc3Qgb3Ig\nc2V0IG9mIHZlY3RvcnMuCgogICAgUmV0dXJuczoKICAgICAgICB4OiBBIG5vbm5lZ2F0aXZlIGlu\ndGVnZXIuICBUaGUgcmFuayBvZiBMLgoKICAgIFJhaXNlczoKICAgICAgICBBc3NlcnRpb25FcnJv\ncjogQW4gZXJyb3Igb2NjdXJzIHdoZW4gTCBpcyBub3QgYSBsaXN0IG9yIHNldC4KCiAgICBFeGFt\ncGxlOgogICAgPj4+IGZyb20gdmVjIGltcG9ydCBWZWMKICAgID4+PiBhMCA9IFZlYyh7J2EnLCAn\nYicsICdjJywgJ2QnfSwgeydhJzogMX0pCiAgICA+Pj4gYTEgPSBWZWMoeydhJywgJ2InLCAnYycs\nICdkJ30sIHsnYic6IDF9KQogICAgPj4+IGEyID0gVmVjKHsnYScsICdiJywgJ2MnLCAnZCd9LCB7\nJ2MnOiAxfSkKICAgID4+PiBhMyA9IFZlYyh7J2EnLCAnYicsICdjJywgJ2QnfSwgeydhJzogMSwg\nJ2MnOiAzfSkKICAgID4+PiByYW5rKFthMCwgYTEsIGEyXSkKICAgIDMKICAgID4+PiByYW5rKHth\nMCwgYTIsIGEzfSkKICAgIDIKICAgID4+PiByYW5rKHthMCwgYTEsIGEzfSkKICAgIDMKICAgID4+\nPiByYW5rKFthMCwgYTEsIGEyLCBhM10pCiAgICAzCiAgICBpAQAAACgHAAAAdQoAAABpc2luc3Rh\nbmNldQQAAABsaXN0dQMAAABzZXR1DgAAAEFzc2VydGlvbkVycm9ydQQAAAByYW5rdQkAAABfX2Nh\nbGxzX191BQAAAF9yYW5rKAEAAAB1AQAAAEwoAAAAACgAAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJp\ndmF0ZS9pbmRlcGVuZGVuY2UucHl1BAAAAHJhbms6AAAAcwYAAAAAGxsBDwFjAQAAAAAAAAABAAAA\nBAAAAEMAAABzQAAAAHQAAHwAAHQBAHQCAGYCAIMCAHMbAHQDAIIBAHQEAARqBQBkAQA3Al8FAHQG\nAHwAAIMBAHQHAHwAAIMBAGsCAFMoAgAAAHXtAgAARGV0ZXJtaW5lcyBpZiBhIGxpc3Qgb3Igc2V0\nIG9mIHZlY3RvcnMgYXJlIGxpbmVhcmx5IGluZGVwZW5kZW50LgoKICAgIEFyZ3M6CiAgICAgICAg\nTDogQSBsaXN0IG9yIHNldCBvZiB2ZWN0b3JzLgoKICAgIFJldHVybnM6CiAgICAgICAgeDogQSBi\nb29sZWFuLiAgVHJ1ZSBpZiB0aGUgdmVjdG9ycyBpbiBMIGFyZSBsaW5lYXJseSBpbmRlcGVuZGVu\ndC4gIEZhbHNlCiAgICAgICAgb3RoZXJ3aXNlLgoKICAgIFJhaXNlczoKICAgICAgICBBc3NlcnRp\nb25FcnJvcjogQW4gZXJyb3Igb2NjdXJzIHdoZW4gTCBpcyBub3QgYSBsaXN0IG9yIHNldC4KCiAg\nICBFeGFtcGxlOgogICAgPj4+IGZyb20gdmVjIGltcG9ydCBWZWMKICAgID4+PiBhMCA9IFZlYyh7\nJ2EnLCAnYicsICdjJywgJ2QnfSwgeydhJzogMX0pCiAgICA+Pj4gYTEgPSBWZWMoeydhJywgJ2In\nLCAnYycsICdkJ30sIHsnYic6IDF9KQogICAgPj4+IGEyID0gVmVjKHsnYScsICdiJywgJ2MnLCAn\nZCd9LCB7J2MnOiAxfSkKICAgID4+PiBhMyA9IFZlYyh7J2EnLCAnYicsICdjJywgJ2QnfSwgeydh\nJzogMSwgJ2MnOiAzfSkKICAgID4+PiBpc19pbmRlcGVuZGVudChbYTAsIGExLCBhMl0pCiAgICBU\ncnVlCiAgICA+Pj4gaXNfaW5kZXBlbmRlbnQoe2EwLCBhMiwgYTN9KQogICAgRmFsc2UKICAgID4+\nPiBpc19pbmRlcGVuZGVudCh7YTAsIGExLCBhM30pCiAgICBUcnVlCiAgICA+Pj4gaXNfaW5kZXBl\nbmRlbnQoW2EwLCBhMSwgYTIsIGEzXSkKICAgIEZhbHNlCiAgICBpAQAAACgIAAAAdQoAAABpc2lu\nc3RhbmNldQQAAABsaXN0dQMAAABzZXR1DgAAAEFzc2VydGlvbkVycm9ydQ4AAABpc19pbmRlcGVu\nZGVudHUJAAAAX19jYWxsc19fdQUAAABfcmFua3UDAAAAbGVuKAEAAAB1AQAAAEwoAAAAACgAAAAA\ndSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1DgAAAGlzX2luZGVwZW5k\nZW50WQAAAHMGAAAAABwbAQ8BdQwAAABpbnN0cnVtZW50ZWQoCQAAAHUDAAAAR0YydQQAAABfVmVj\ndQcAAABfUl9yYW5rdQkAAABfR0YyX3Jhbmt1BQAAAF9yYW5rdQQAAAByYW5rdQ4AAABpc19pbmRl\ncGVuZGVudHUJAAAAX19jYWxsc19fdQsAAABfX3ZlcnNpb25fXygAAAAAKAAAAAAoAAAAAHUkAAAA\nLi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQgAAAA8bW9kdWxlPgIAAABzFAAA\nAAwCEBcMCAkNCQoJHwkgCQEJAQkB\n'
offset = 8
elif magic == b'l\x0c\r\n': # Python 3.2
pycData = b'bAwNChNz/FRjAAAAAAAAAAAAAAAAAwAAAEAAAABzdAAAAGQAAGQBAGwAAFoAAEdkAgCEAABkAwCD\nAgBaAQBkBABkBQCEAQBaAgBkBgCEAABaAwBkBwCEAABaBABkCACEAABaBQBkCQCEAABaBgBkAABl\nBQBfBwBkCgBlBQBfCABkAABlBgBfBwBkCgBlBgBfCABkAQBTKAsAAABpAAAAAE5jAQAAAAAAAAAB\nAAAAAwAAAEIAAABzXwAAAHwAAEVlAABaAQBlAgCDAABpAABkAACEAgBaAwBkAQCEAABaBABkAgCE\nAABaBQBkAwCEAABaBgBkBACEAABaBwBkBQCEAABaCABkBgCEAABaCQBkBwCEAABaCgBkCABTKAkA\nAABjAwAAAAAAAAADAAAAAgAAAEMAAABzFgAAAHwBAHwAAF8AAHwCAHwAAF8BAGQAAFMoAQAAAE4o\nAgAAAHUBAAAARHUBAAAAZigDAAAAdQQAAABzZWxmdQYAAABsYWJlbHN1CAAAAGZ1bmN0aW9uKAAA\nAAAoAAAAAHUkAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQgAAABfX2lu\naXRfXwUAAABzBAAAAAABCQFjAgAAAAAAAAACAAAAAgAAAEMAAABzHgAAAHwBAHwAAGoAAGsGAHIa\nAHwAAGoAAHwBABlTZAEAUygCAAAATmkAAAAAKAEAAAB1AQAAAGYoAgAAAHUBAAAAdnUBAAAAaygA\nAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXULAAAAX19n\nZXRpdGVtX18JAAAAcwAAAABjAwAAAAAAAAADAAAABAAAAEMAAABzFQAAAHQAAAR8AABqAQB8AQA8\nfQIAZAAAUygBAAAATigCAAAAdQgAAABfc2V0aXRlbXUBAAAAZigDAAAAdQEAAAB2dQEAAABrdQMA\nAAB2YWwoAAAAACgAAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1\nCwAAAF9fc2V0aXRlbV9fCgAAAHMAAAAAYwEAAAAAAAAAAQAAAAIAAABDAAAAcwgAAABkAgB8AAAU\nUygDAAAATmkBAAAAaf////8oAAAAACgBAAAAdQEAAAB2KAAAAAAoAAAAAHUkAAAALi4vcmVzb3Vy\nY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQcAAABfX25lZ19fCwAAAHMAAAAAYwIAAAAAAAAA\nAgAAAAQAAAADAAAAcykAAAB0AAB8AABqAQCHAABmAQBkAQCGAAB8AABqAgBqAwCDAABEgwEAgwIA\nUygCAAAATmMBAAAAAAAAAAMAAAAEAAAAEwAAAHMjAAAAaQAAfAAAXRkAXAIAfQEAfQIAiAAAfAIA\nFHwBAJMCAHEGAFMoAAAAACgAAAAAKAMAAAB1AgAAAC4wdQEAAABrdQEAAAB4KAEAAAB1BQAAAGFs\ncGhhKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUKAAAAPGRp\nY3Rjb21wPgwAAABzAgAAAAkAKAQAAAB1BAAAAF9WZWN1AQAAAER1AQAAAGZ1BQAAAGl0ZW1zKAIA\nAAB1AQAAAHZ1BQAAAGFscGhhKAAAAAAoAQAAAHUFAAAAYWxwaGF1JAAAAC4uL3Jlc291cmNlcy9w\ncml2YXRlL2luZGVwZW5kZW5jZS5weXUIAAAAX19ybXVsX18MAAAAcwAAAABjAgAAAAAAAAACAAAA\nAwAAAAMAAABzPQAAAHQAAIgAAHQBAIMCAHI1AHQCAIcAAIcBAGYCAGQBAIYAAIgBAGoDAGoEAIMA\nAESDAQCDAQBTdAUAU2QAAFMoAgAAAE5jAQAAAAAAAAACAAAABQAAABMAAABzIgAAAGcAAHwAAF0Y\nAH0BAIgBAHwBABmIAAB8AQAZFJECAHEGAFMoAAAAACgAAAAAKAIAAAB1AgAAAC4wdQEAAABrKAIA\nAAB1BQAAAG90aGVydQQAAABzZWxmKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2luZGVw\nZW5kZW5jZS5weXUKAAAAPGxpc3Rjb21wPhEAAABzAgAAAAkAKAYAAAB1CgAAAGlzaW5zdGFuY2V1\nBAAAAF9WZWN1AwAAAHN1bXUBAAAAZnUEAAAAa2V5c3UOAAAATm90SW1wbGVtZW50ZWQoAgAAAHUE\nAAAAc2VsZnUFAAAAb3RoZXIoAAAAACgCAAAAdQUAAABvdGhlcnUEAAAAc2VsZnUkAAAALi4vcmVz\nb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQcAAABfX211bF9fDgAAAHMGAAAAAAIPASYC\nYwIAAAAAAAAAAgAAAAUAAAADAAAAc0QAAAB0AACIAABqAQCHAACHAQBmAgBkAQCGAAB0AgCIAABq\nAwBqBACDAACDAQBqBQCIAQBqAwBqBACDAACDAQBEgwEAgwIAUygCAAAATmMBAAAAAAAAAAIAAAAF\nAAAAEwAAAHMlAAAAaQAAfAAAXRsAfQEAiAAAfAEAGYgBAHwBABkXfAEAkwIAcQYAUygAAAAAKAAA\nAAAoAgAAAHUCAAAALjB1AQAAAGsoAgAAAHUBAAAAdXUBAAAAdigAAAAAdSQAAAAuLi9yZXNvdXJj\nZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1CgAAADxkaWN0Y29tcD4VAAAAcwIAAAAJACgGAAAA\ndQQAAABfVmVjdQEAAABEdQMAAABzZXR1AQAAAGZ1BAAAAGtleXN1BQAAAHVuaW9uKAIAAAB1AQAA\nAHV1AQAAAHYoAAAAACgCAAAAdQEAAAB1dQEAAAB2dSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9p\nbmRlcGVuZGVuY2UucHl1BwAAAF9fYWRkX18VAAAAcwAAAABjAgAAAAAAAAACAAAAAgAAAEMAAABz\nCQAAAHwAAHwBAAsXUygBAAAAdTQAAABSZXR1cm5zIGEgdmVjdG9yIHdoaWNoIGlzIHRoZSBkaWZm\nZXJlbmNlIG9mIGEgYW5kIGIuKAAAAAAoAgAAAHUBAAAAYXUBAAAAYigAAAAAKAAAAAB1JAAAAC4u\nL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUHAAAAX19zdWJfXxcAAABzAgAAAAAC\nTigLAAAAdQgAAABfX25hbWVfX3UKAAAAX19tb2R1bGVfX3UDAAAAc2V0dQgAAABfX2luaXRfX3UL\nAAAAX19nZXRpdGVtX191CwAAAF9fc2V0aXRlbV9fdQcAAABfX25lZ19fdQgAAABfX3JtdWxfX3UH\nAAAAX19tdWxfX3UHAAAAX19hZGRfX3UHAAAAX19zdWJfXygBAAAAdQoAAABfX2xvY2Fsc19fKAAA\nAAAoAAAAAHUkAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQQAAABfVmVj\nBAAAAHMQAAAACgESBAkBCQEJAQkCCQcJAnUEAAAAX1ZlY2ebK6GGm4QGPWMCAAAAAAAAAAUAAAAG\nAAAAQwAAAHNsAAAAZwAAfQIAeFkAfAAARF1RAH0DAHgoAHwCAERdIAB9BAB8AwB8AwB8BAAUfAQA\nfAQAFBt8BAAUGH0DAHEaAFd8AwB8AwAUfAEAawQAcg0AfAIAagAAfAMAgwEAAXENAHENAFd0AQB8\nAgCDAQBTKAEAAABOKAIAAAB1BgAAAGFwcGVuZHUDAAAAbGVuKAUAAAB1AQAAAEx1AwAAAGVwc3UJ\nAAAAdnN0YXJsaXN0dQEAAAB2dQUAAAB2c3RhcigAAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9w\ncml2YXRlL2luZGVwZW5kZW5jZS5weXUHAAAAX1JfcmFuaxsAAABzDgAAAAABBgENAQ0BHgEQABQB\nYwEAAAAAAAAABgAAAAUAAAADAAAAc7QAAAB0AAB0AQB0AgCIAQCDAQCDAQCDAQB9AQBkAQB9AgB4\njwCIAQBkAQAZagMARF2AAIkAAIcAAIcBAGYCAGQCAIYAAHwBAESDAQB9AwB8AwBnAABrAwByLAB8\nAwBkAQAZfQQAfAEAagQAfAQAgwEAAXwCAGQDADd9AgB4MQB8AwBkAwBkAACFAgAZRF0cAH0FAIgB\nAHwFABmIAQB8BAAZF4gBAHwFADxxiQBXcSwAcSwAV3wCAFMoBAAAAE5pAAAAAGMBAAAAAAAAAAIA\nAAAEAAAAEwAAAHMqAAAAZwAAfAAAXSAAfQEAiAEAfAEAGYgAABlkAABrAwByBgB8AQCRAgBxBgBT\nKAEAAABpAAAAACgAAAAAKAIAAAB1AgAAAC4wdQEAAAByKAIAAAB1AQAAAGN1BwAAAHJvd2xpc3Qo\nAAAAAHUkAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQoAAAA8bGlzdGNv\nbXA+JwAAAHMCAAAACQBpAQAAACgFAAAAdQMAAABzZXR1BQAAAHJhbmdldQMAAABsZW51AQAAAER1\nBgAAAHJlbW92ZSgGAAAAdQcAAAByb3dsaXN0dQkAAAByb3dzX2xlZnR1AQAAAHJ1EQAAAHJvd3Nf\nd2l0aF9ub256ZXJvdQUAAABwaXZvdHUJAAAAcm93X2luZGV4KAAAAAAoAgAAAHUBAAAAY3UHAAAA\ncm93bGlzdHUkAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQkAAABfR0Yy\nX3JhbmsjAAAAcxYAAAAAARgBBgEUARkBDAEKAQ0BCgEXASEBYwEAAAAAAAAABAAAAAUAAABDAAAA\nc3EAAABkAQCEAAB8AABEgwEAfQEAeFoAfAAARF1SAH0CAHhJAHwCAGoAAGoBAIMAAERdOAB9AwB8\nAwBkAgBrAwByLQB0AgB8AwB0AwBqBACDAgByWwB0BQB8AQCDAQBTdAYAfAEAgwEAU3EtAFdxFwBX\nZAIAUygDAAAATmMBAAAAAAAAAAIAAAAFAAAAUwAAAHMlAAAAZwAAfAAAXRsAfQEAdAAAfAEAagEA\nfAEAagIAgwIAkQIAcQYAUygAAAAAKAMAAAB1BAAAAF9WZWN1AQAAAER1AQAAAGYoAgAAAHUCAAAA\nLjB1AQAAAHUoAAAAACgAAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2Uu\ncHl1CgAAADxsaXN0Y29tcD4xAAAAcwIAAAAJAGkAAAAAKAcAAAB1AQAAAGZ1BgAAAHZhbHVlc3UK\nAAAAaXNpbnN0YW5jZXUDAAAAR0YydQMAAABPbmV1CQAAAF9HRjJfcmFua3UHAAAAX1JfcmFuaygE\nAAAAdQEAAABMdQIAAABMY3UBAAAAdnUBAAAAeCgAAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9w\ncml2YXRlL2luZGVwZW5kZW5jZS5weXUFAAAAX3JhbmswAAAAcxAAAAAAARABDQEWAQwBEgEKARIB\nYwEAAAAAAAAAAQAAAAQAAABDAAAAczQAAAB0AAB8AAB0AQB0AgBmAgCDAgBzGwB0AwCCAQB0BAAE\nagUAZAEANwJfBQB0BgB8AACDAQBTKAIAAAB1cAIAAEZpbmRzIHRoZSByYW5rIG9mIGEgbGlzdCBv\nciBzZXQgb2YgdmVjdG9ycy4KCiAgICBBcmdzOgogICAgICAgIEw6IEEgbGlzdCBvciBzZXQgb2Yg\ndmVjdG9ycy4KCiAgICBSZXR1cm5zOgogICAgICAgIHg6IEEgbm9ubmVnYXRpdmUgaW50ZWdlci4g\nIFRoZSByYW5rIG9mIEwuCgogICAgUmFpc2VzOgogICAgICAgIEFzc2VydGlvbkVycm9yOiBBbiBl\ncnJvciBvY2N1cnMgd2hlbiBMIGlzIG5vdCBhIGxpc3Qgb3Igc2V0LgoKICAgIEV4YW1wbGU6CiAg\nICA+Pj4gZnJvbSB2ZWMgaW1wb3J0IFZlYwogICAgPj4+IGEwID0gVmVjKHsnYScsICdiJywgJ2Mn\nLCAnZCd9LCB7J2EnOiAxfSkKICAgID4+PiBhMSA9IFZlYyh7J2EnLCAnYicsICdjJywgJ2QnfSwg\neydiJzogMX0pCiAgICA+Pj4gYTIgPSBWZWMoeydhJywgJ2InLCAnYycsICdkJ30sIHsnYyc6IDF9\nKQogICAgPj4+IGEzID0gVmVjKHsnYScsICdiJywgJ2MnLCAnZCd9LCB7J2EnOiAxLCAnYyc6IDN9\nKQogICAgPj4+IHJhbmsoW2EwLCBhMSwgYTJdKQogICAgMwogICAgPj4+IHJhbmsoe2EwLCBhMiwg\nYTN9KQogICAgMgogICAgPj4+IHJhbmsoe2EwLCBhMSwgYTN9KQogICAgMwogICAgPj4+IHJhbmso\nW2EwLCBhMSwgYTIsIGEzXSkKICAgIDMKICAgIGkBAAAAKAcAAAB1CgAAAGlzaW5zdGFuY2V1BAAA\nAGxpc3R1AwAAAHNldHUOAAAAQXNzZXJ0aW9uRXJyb3J1BAAAAHJhbmt1CQAAAF9fY2FsbHNfX3UF\nAAAAX3JhbmsoAQAAAHUBAAAATCgAAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2lu\nZGVwZW5kZW5jZS5weXUEAAAAcmFuazoAAABzBgAAAAAbGwEPAWMBAAAAAAAAAAEAAAAEAAAAQwAA\nAHNAAAAAdAAAfAAAdAEAdAIAZgIAgwIAcxsAdAMAggEAdAQABGoFAGQBADcCXwUAdAYAfAAAgwEA\ndAcAfAAAgwEAawIAUygCAAAAde0CAABEZXRlcm1pbmVzIGlmIGEgbGlzdCBvciBzZXQgb2YgdmVj\ndG9ycyBhcmUgbGluZWFybHkgaW5kZXBlbmRlbnQuCgogICAgQXJnczoKICAgICAgICBMOiBBIGxp\nc3Qgb3Igc2V0IG9mIHZlY3RvcnMuCgogICAgUmV0dXJuczoKICAgICAgICB4OiBBIGJvb2xlYW4u\nICBUcnVlIGlmIHRoZSB2ZWN0b3JzIGluIEwgYXJlIGxpbmVhcmx5IGluZGVwZW5kZW50LiAgRmFs\nc2UKICAgICAgICBvdGhlcndpc2UuCgogICAgUmFpc2VzOgogICAgICAgIEFzc2VydGlvbkVycm9y\nOiBBbiBlcnJvciBvY2N1cnMgd2hlbiBMIGlzIG5vdCBhIGxpc3Qgb3Igc2V0LgoKICAgIEV4YW1w\nbGU6CiAgICA+Pj4gZnJvbSB2ZWMgaW1wb3J0IFZlYwogICAgPj4+IGEwID0gVmVjKHsnYScsICdi\nJywgJ2MnLCAnZCd9LCB7J2EnOiAxfSkKICAgID4+PiBhMSA9IFZlYyh7J2EnLCAnYicsICdjJywg\nJ2QnfSwgeydiJzogMX0pCiAgICA+Pj4gYTIgPSBWZWMoeydhJywgJ2InLCAnYycsICdkJ30sIHsn\nYyc6IDF9KQogICAgPj4+IGEzID0gVmVjKHsnYScsICdiJywgJ2MnLCAnZCd9LCB7J2EnOiAxLCAn\nYyc6IDN9KQogICAgPj4+IGlzX2luZGVwZW5kZW50KFthMCwgYTEsIGEyXSkKICAgIFRydWUKICAg\nID4+PiBpc19pbmRlcGVuZGVudCh7YTAsIGEyLCBhM30pCiAgICBGYWxzZQogICAgPj4+IGlzX2lu\nZGVwZW5kZW50KHthMCwgYTEsIGEzfSkKICAgIFRydWUKICAgID4+PiBpc19pbmRlcGVuZGVudChb\nYTAsIGExLCBhMiwgYTNdKQogICAgRmFsc2UKICAgIGkBAAAAKAgAAAB1CgAAAGlzaW5zdGFuY2V1\nBAAAAGxpc3R1AwAAAHNldHUOAAAAQXNzZXJ0aW9uRXJyb3J1DgAAAGlzX2luZGVwZW5kZW50dQkA\nAABfX2NhbGxzX191BQAAAF9yYW5rdQMAAABsZW4oAQAAAHUBAAAATCgAAAAAKAAAAAB1JAAAAC4u\nL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUOAAAAaXNfaW5kZXBlbmRlbnRZAAAA\ncwYAAAAAHBsBDwF1DAAAAGluc3RydW1lbnRlZCgJAAAAdQMAAABHRjJ1BAAAAF9WZWN1BwAAAF9S\nX3Jhbmt1CQAAAF9HRjJfcmFua3UFAAAAX3Jhbmt1BAAAAHJhbmt1DgAAAGlzX2luZGVwZW5kZW50\ndQkAAABfX2NhbGxzX191CwAAAF9fdmVyc2lvbl9fKAAAAAAoAAAAACgAAAAAdSQAAAAuLi9yZXNv\ndXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1CAAAADxtb2R1bGU+AgAAAHMUAAAADAIQFwwI\nCQ0JCgkfCSAJAQkBCQE=\n'
offset = 8
elif magic == b'\x9e\x0c\r\n': # Python 3.3
pycData = b'ngwNChNz/FTtDQAAYwAAAAAAAAAAAAAAAAMAAABAAAAAc4YAAABkAABkAQBsAABaAABHZAIAZAMA\nhAAAZAMAgwIAWgEAZAQAZAUAZAYAhAEAWgIAZAcAZAgAhAAAWgMAZAkAZAoAhAAAWgQAZAsAZAwA\nhAAAWgUAZA0AZA4AhAAAWgYAZAAAZQUAXwcAZA8AZQUAXwgAZAAAZQYAXwcAZA8AZQYAXwgAZAEA\nUygQAAAAaQAAAABOYwEAAAAAAAAAAQAAAAQAAABCAAAAc30AAAB8AABFZQAAWgEAZAAAWgIAZQMA\ngwAAaQAAZAEAZAIAhAIAWgQAZAMAZAQAhAAAWgUAZAUAZAYAhAAAWgYAZAcAZAgAhAAAWgcAZAkA\nZAoAhAAAWggAZAsAZAwAhAAAWgkAZA0AZA4AhAAAWgoAZA8AZBAAhAAAWgsAZBEAUygSAAAAdQQA\nAABfVmVjYwMAAAAAAAAAAwAAAAIAAABDAAAAcxYAAAB8AQB8AABfAAB8AgB8AABfAQBkAABTKAEA\nAABOKAIAAAB1AQAAAER1AQAAAGYoAwAAAHUEAAAAc2VsZnUGAAAAbGFiZWxzdQgAAABmdW5jdGlv\nbigAAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUIAAAA\nX19pbml0X18FAAAAcwQAAAAAAQkBdQ0AAABfVmVjLl9faW5pdF9fYwIAAAAAAAAAAgAAAAIAAABD\nAAAAcx4AAAB8AQB8AABqAABrBgByGgB8AABqAAB8AQAZU2QBAFMoAgAAAE5pAAAAACgBAAAAdQEA\nAABmKAIAAAB1AQAAAHZ1AQAAAGsoAAAAACgAAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9p\nbmRlcGVuZGVuY2UucHl1CwAAAF9fZ2V0aXRlbV9fCQAAAHMAAAAAdRAAAABfVmVjLl9fZ2V0aXRl\nbV9fYwMAAAAAAAAAAwAAAAQAAABDAAAAcxUAAAB0AAAEfAAAagEAfAEAPH0CAGQAAFMoAQAAAE4o\nAgAAAHUIAAAAX3NldGl0ZW11AQAAAGYoAwAAAHUBAAAAdnUBAAAAa3UDAAAAdmFsKAAAAAAoAAAA\nAHUkAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQsAAABfX3NldGl0ZW1f\nXwoAAABzAAAAAHUQAAAAX1ZlYy5fX3NldGl0ZW1fX2MBAAAAAAAAAAEAAAACAAAAQwAAAHMIAAAA\nZAIAfAAAFFMoAwAAAE5pAQAAAGn/////KAAAAAAoAQAAAHUBAAAAdigAAAAAKAAAAAB1JAAAAC4u\nL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUHAAAAX19uZWdfXwsAAABzAAAAAHUM\nAAAAX1ZlYy5fX25lZ19fYwIAAAAAAAAAAgAAAAUAAAADAAAAcywAAAB0AAB8AABqAQCHAABmAQBk\nAQBkAgCGAAB8AABqAgBqAwCDAABEgwEAgwIAUygDAAAATmMBAAAAAAAAAAMAAAAEAAAAEwAAAHMj\nAAAAaQAAfAAAXRkAXAIAfQEAfQIAiAAAfAIAFHwBAJMCAHEGAFMoAAAAACgAAAAAKAMAAAB1AgAA\nAC4wdQEAAABrdQEAAAB4KAEAAAB1BQAAAGFscGhhKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2\nYXRlL2luZGVwZW5kZW5jZS5weXUKAAAAPGRpY3Rjb21wPgwAAABzAgAAAAkAdSEAAABfVmVjLl9f\ncm11bF9fLjxsb2NhbHM+LjxkaWN0Y29tcD4oBAAAAHUEAAAAX1ZlY3UBAAAARHUBAAAAZnUFAAAA\naXRlbXMoAgAAAHUBAAAAdnUFAAAAYWxwaGEoAAAAACgBAAAAdQUAAABhbHBoYXUkAAAALi4vcmVz\nb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQgAAABfX3JtdWxfXwwAAABzAAAAAHUNAAAA\nX1ZlYy5fX3JtdWxfX2MCAAAAAAAAAAIAAAAEAAAAAwAAAHNAAAAAdAAAiAAAdAEAgwIAcjgAdAIA\nhwAAhwEAZgIAZAEAZAIAhgAAiAEAagMAagQAgwAARIMBAIMBAFN0BQBTZAAAUygDAAAATmMBAAAA\nAAAAAAIAAAAFAAAAEwAAAHMiAAAAZwAAfAAAXRgAfQEAiAEAfAEAGYgAAHwBABkUkQIAcQYAUygA\nAAAAKAAAAAAoAgAAAHUCAAAALjB1AQAAAGsoAgAAAHUFAAAAb3RoZXJ1BAAAAHNlbGYoAAAAAHUk\nAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQoAAAA8bGlzdGNvbXA+EQAA\nAHMCAAAACQB1IAAAAF9WZWMuX19tdWxfXy48bG9jYWxzPi48bGlzdGNvbXA+KAYAAAB1CgAAAGlz\naW5zdGFuY2V1BAAAAF9WZWN1AwAAAHN1bXUBAAAAZnUEAAAAa2V5c3UOAAAATm90SW1wbGVtZW50\nZWQoAgAAAHUEAAAAc2VsZnUFAAAAb3RoZXIoAAAAACgCAAAAdQUAAABvdGhlcnUEAAAAc2VsZnUk\nAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQcAAABfX211bF9fDgAAAHMG\nAAAAAAIPASkCdQwAAABfVmVjLl9fbXVsX19jAgAAAAAAAAACAAAABQAAAAMAAABzRwAAAHQAAIgA\nAGoBAIcAAIcBAGYCAGQBAGQCAIYAAHQCAIgAAGoDAGoEAIMAAIMBAGoFAIgBAGoDAGoEAIMAAIMB\nAESDAQCDAgBTKAMAAABOYwEAAAAAAAAAAgAAAAUAAAATAAAAcyUAAABpAAB8AABdGwB9AQCIAAB8\nAQAZiAEAfAEAGRd8AQCTAgBxBgBTKAAAAAAoAAAAACgCAAAAdQIAAAAuMHUBAAAAaygCAAAAdQEA\nAAB1dQEAAAB2KAAAAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUK\nAAAAPGRpY3Rjb21wPhUAAABzAgAAAAkAdSAAAABfVmVjLl9fYWRkX18uPGxvY2Fscz4uPGRpY3Rj\nb21wPigGAAAAdQQAAABfVmVjdQEAAABEdQMAAABzZXR1AQAAAGZ1BAAAAGtleXN1BQAAAHVuaW9u\nKAIAAAB1AQAAAHV1AQAAAHYoAAAAACgCAAAAdQEAAAB1dQEAAAB2dSQAAAAuLi9yZXNvdXJjZXMv\ncHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1BwAAAF9fYWRkX18VAAAAcwAAAAB1DAAAAF9WZWMuX19h\nZGRfX2MCAAAAAAAAAAIAAAACAAAAQwAAAHMJAAAAfAAAfAEACxdTKAEAAAB1NAAAAFJldHVybnMg\nYSB2ZWN0b3Igd2hpY2ggaXMgdGhlIGRpZmZlcmVuY2Ugb2YgYSBhbmQgYi4oAAAAACgCAAAAdQEA\nAABhdQEAAABiKAAAAAAoAAAAAHUkAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNl\nLnB5dQcAAABfX3N1Yl9fFwAAAHMCAAAAAAJ1DAAAAF9WZWMuX19zdWJfX04oDAAAAHUIAAAAX19u\nYW1lX191CgAAAF9fbW9kdWxlX191DAAAAF9fcXVhbG5hbWVfX3UDAAAAc2V0dQgAAABfX2luaXRf\nX3ULAAAAX19nZXRpdGVtX191CwAAAF9fc2V0aXRlbV9fdQcAAABfX25lZ19fdQgAAABfX3JtdWxf\nX3UHAAAAX19tdWxfX3UHAAAAX19hZGRfX3UHAAAAX19zdWJfXygBAAAAdQoAAABfX2xvY2Fsc19f\nKAAAAAAoAAAAAHUkAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRlbmNlLnB5dQQAAABf\nVmVjBAAAAHMQAAAAEAEVBAwBDAEMAQwCDAcMAnUEAAAAX1ZlY2ebK6GGm4QGPWMCAAAAAAAAAAUA\nAAAGAAAAQwAAAHNsAAAAZwAAfQIAeFkAfAAARF1RAH0DAHgoAHwCAERdIAB9BAB8AwB8AwB8BAAU\nfAQAfAQAFBt8BAAUGH0DAHEaAFd8AwB8AwAUfAEAawQAcg0AfAIAagAAfAMAgwEAAXENAHENAFd0\nAQB8AgCDAQBTKAEAAABOKAIAAAB1BgAAAGFwcGVuZHUDAAAAbGVuKAUAAAB1AQAAAEx1AwAAAGVw\nc3UJAAAAdnN0YXJsaXN0dQEAAAB2dQUAAAB2c3RhcigAAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNl\ncy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUHAAAAX1JfcmFuaxsAAABzDgAAAAABBgENAQ0BHgEQ\nABQBdQcAAABfUl9yYW5rYwEAAAAAAAAABgAAAAUAAAADAAAAc7cAAAB0AAB0AQB0AgCIAQCDAQCD\nAQCDAQB9AQBkAQB9AgB4kgCIAQBkAQAZagMARF2DAIkAAIcAAIcBAGYCAGQCAGQDAIYAAHwBAESD\nAQB9AwB8AwBnAABrAwByLAB8AwBkAQAZfQQAfAEAagQAfAQAgwEAAXwCAGQEADd9AgB4MQB8AwBk\nBABkAACFAgAZRF0cAH0FAIgBAHwFABmIAQB8BAAZF4gBAHwFADxxjABXcSwAcSwAV3wCAFMoBQAA\nAE5pAAAAAGMBAAAAAAAAAAIAAAAEAAAAEwAAAHMqAAAAZwAAfAAAXSAAfQEAiAEAfAEAGYgAABlk\nAABrAwByBgB8AQCRAgBxBgBTKAEAAABpAAAAACgAAAAAKAIAAAB1AgAAAC4wdQEAAAByKAIAAAB1\nAQAAAGN1BwAAAHJvd2xpc3QoAAAAAHUkAAAALi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBlbmRl\nbmNlLnB5dQoAAAA8bGlzdGNvbXA+JwAAAHMCAAAACQB1HQAAAF9HRjJfcmFuay48bG9jYWxzPi48\nbGlzdGNvbXA+aQEAAAAoBQAAAHUDAAAAc2V0dQUAAAByYW5nZXUDAAAAbGVudQEAAABEdQYAAABy\nZW1vdmUoBgAAAHUHAAAAcm93bGlzdHUJAAAAcm93c19sZWZ0dQEAAABydREAAAByb3dzX3dpdGhf\nbm9uemVyb3UFAAAAcGl2b3R1CQAAAHJvd19pbmRleCgAAAAAKAIAAAB1AQAAAGN1BwAAAHJvd2xp\nc3R1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUJAAAAX0dGMl9yYW5r\nIwAAAHMWAAAAAAEYAQYBFAEcAQwBCgENAQoBFwEhAXUJAAAAX0dGMl9yYW5rYwEAAAAAAAAABAAA\nAAUAAABDAAAAc3QAAABkAQBkAgCEAAB8AABEgwEAfQEAeFoAfAAARF1SAH0CAHhJAHwCAGoAAGoB\nAIMAAERdOAB9AwB8AwBkAwBrAwByMAB0AgB8AwB0AwBqBACDAgByXgB0BQB8AQCDAQBTdAYAfAEA\ngwEAU3EwAFdxGgBXZAMAUygEAAAATmMBAAAAAAAAAAIAAAAFAAAAUwAAAHMlAAAAZwAAfAAAXRsA\nfQEAdAAAfAEAagEAfAEAagIAgwIAkQIAcQYAUygAAAAAKAMAAAB1BAAAAF9WZWN1AQAAAER1AQAA\nAGYoAgAAAHUCAAAALjB1AQAAAHUoAAAAACgAAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9p\nbmRlcGVuZGVuY2UucHl1CgAAADxsaXN0Y29tcD4xAAAAcwIAAAAJAHUZAAAAX3JhbmsuPGxvY2Fs\ncz4uPGxpc3Rjb21wPmkAAAAAKAcAAAB1AQAAAGZ1BgAAAHZhbHVlc3UKAAAAaXNpbnN0YW5jZXUD\nAAAAR0YydQMAAABPbmV1CQAAAF9HRjJfcmFua3UHAAAAX1JfcmFuaygEAAAAdQEAAABMdQIAAABM\nY3UBAAAAdnUBAAAAeCgAAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5k\nZW5jZS5weXUFAAAAX3JhbmswAAAAcxAAAAAAARMBDQEWAQwBEgEKARIBdQUAAABfcmFua2MBAAAA\nAAAAAAEAAAAEAAAAQwAAAHM0AAAAdAAAfAAAdAEAdAIAZgIAgwIAcxsAdAMAggEAdAQABGoFAGQB\nADcCXwUAdAYAfAAAgwEAUygCAAAAdXACAABGaW5kcyB0aGUgcmFuayBvZiBhIGxpc3Qgb3Igc2V0\nIG9mIHZlY3RvcnMuCgogICAgQXJnczoKICAgICAgICBMOiBBIGxpc3Qgb3Igc2V0IG9mIHZlY3Rv\ncnMuCgogICAgUmV0dXJuczoKICAgICAgICB4OiBBIG5vbm5lZ2F0aXZlIGludGVnZXIuICBUaGUg\ncmFuayBvZiBMLgoKICAgIFJhaXNlczoKICAgICAgICBBc3NlcnRpb25FcnJvcjogQW4gZXJyb3Ig\nb2NjdXJzIHdoZW4gTCBpcyBub3QgYSBsaXN0IG9yIHNldC4KCiAgICBFeGFtcGxlOgogICAgPj4+\nIGZyb20gdmVjIGltcG9ydCBWZWMKICAgID4+PiBhMCA9IFZlYyh7J2EnLCAnYicsICdjJywgJ2Qn\nfSwgeydhJzogMX0pCiAgICA+Pj4gYTEgPSBWZWMoeydhJywgJ2InLCAnYycsICdkJ30sIHsnYic6\nIDF9KQogICAgPj4+IGEyID0gVmVjKHsnYScsICdiJywgJ2MnLCAnZCd9LCB7J2MnOiAxfSkKICAg\nID4+PiBhMyA9IFZlYyh7J2EnLCAnYicsICdjJywgJ2QnfSwgeydhJzogMSwgJ2MnOiAzfSkKICAg\nID4+PiByYW5rKFthMCwgYTEsIGEyXSkKICAgIDMKICAgID4+PiByYW5rKHthMCwgYTIsIGEzfSkK\nICAgIDIKICAgID4+PiByYW5rKHthMCwgYTEsIGEzfSkKICAgIDMKICAgID4+PiByYW5rKFthMCwg\nYTEsIGEyLCBhM10pCiAgICAzCiAgICBpAQAAACgHAAAAdQoAAABpc2luc3RhbmNldQQAAABsaXN0\ndQMAAABzZXR1DgAAAEFzc2VydGlvbkVycm9ydQQAAAByYW5rdQkAAABfX2NhbGxzX191BQAAAF9y\nYW5rKAEAAAB1AQAAAEwoAAAAACgAAAAAdSQAAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVu\nZGVuY2UucHl1BAAAAHJhbms6AAAAcwYAAAAAGxsBDwF1BAAAAHJhbmtjAQAAAAAAAAABAAAABAAA\nAEMAAABzQAAAAHQAAHwAAHQBAHQCAGYCAIMCAHMbAHQDAIIBAHQEAARqBQBkAQA3Al8FAHQGAHwA\nAIMBAHQHAHwAAIMBAGsCAFMoAgAAAHXtAgAARGV0ZXJtaW5lcyBpZiBhIGxpc3Qgb3Igc2V0IG9m\nIHZlY3RvcnMgYXJlIGxpbmVhcmx5IGluZGVwZW5kZW50LgoKICAgIEFyZ3M6CiAgICAgICAgTDog\nQSBsaXN0IG9yIHNldCBvZiB2ZWN0b3JzLgoKICAgIFJldHVybnM6CiAgICAgICAgeDogQSBib29s\nZWFuLiAgVHJ1ZSBpZiB0aGUgdmVjdG9ycyBpbiBMIGFyZSBsaW5lYXJseSBpbmRlcGVuZGVudC4g\nIEZhbHNlCiAgICAgICAgb3RoZXJ3aXNlLgoKICAgIFJhaXNlczoKICAgICAgICBBc3NlcnRpb25F\ncnJvcjogQW4gZXJyb3Igb2NjdXJzIHdoZW4gTCBpcyBub3QgYSBsaXN0IG9yIHNldC4KCiAgICBF\neGFtcGxlOgogICAgPj4+IGZyb20gdmVjIGltcG9ydCBWZWMKICAgID4+PiBhMCA9IFZlYyh7J2En\nLCAnYicsICdjJywgJ2QnfSwgeydhJzogMX0pCiAgICA+Pj4gYTEgPSBWZWMoeydhJywgJ2InLCAn\nYycsICdkJ30sIHsnYic6IDF9KQogICAgPj4+IGEyID0gVmVjKHsnYScsICdiJywgJ2MnLCAnZCd9\nLCB7J2MnOiAxfSkKICAgID4+PiBhMyA9IFZlYyh7J2EnLCAnYicsICdjJywgJ2QnfSwgeydhJzog\nMSwgJ2MnOiAzfSkKICAgID4+PiBpc19pbmRlcGVuZGVudChbYTAsIGExLCBhMl0pCiAgICBUcnVl\nCiAgICA+Pj4gaXNfaW5kZXBlbmRlbnQoe2EwLCBhMiwgYTN9KQogICAgRmFsc2UKICAgID4+PiBp\nc19pbmRlcGVuZGVudCh7YTAsIGExLCBhM30pCiAgICBUcnVlCiAgICA+Pj4gaXNfaW5kZXBlbmRl\nbnQoW2EwLCBhMSwgYTIsIGEzXSkKICAgIEZhbHNlCiAgICBpAQAAACgIAAAAdQoAAABpc2luc3Rh\nbmNldQQAAABsaXN0dQMAAABzZXR1DgAAAEFzc2VydGlvbkVycm9ydQ4AAABpc19pbmRlcGVuZGVu\ndHUJAAAAX19jYWxsc19fdQUAAABfcmFua3UDAAAAbGVuKAEAAAB1AQAAAEwoAAAAACgAAAAAdSQA\nAAAuLi9yZXNvdXJjZXMvcHJpdmF0ZS9pbmRlcGVuZGVuY2UucHl1DgAAAGlzX2luZGVwZW5kZW50\nWQAAAHMGAAAAABwbAQ8BdQ4AAABpc19pbmRlcGVuZGVudHUMAAAAaW5zdHJ1bWVudGVkKAkAAAB1\nAwAAAEdGMnUEAAAAX1ZlY3UHAAAAX1JfcmFua3UJAAAAX0dGMl9yYW5rdQUAAABfcmFua3UEAAAA\ncmFua3UOAAAAaXNfaW5kZXBlbmRlbnR1CQAAAF9fY2FsbHNfX3ULAAAAX192ZXJzaW9uX18oAAAA\nACgAAAAAKAAAAAB1JAAAAC4uL3Jlc291cmNlcy9wcml2YXRlL2luZGVwZW5kZW5jZS5weXUIAAAA\nPG1vZHVsZT4CAAAAcxQAAAAMAhMXDwgMDQwKDB8MIAkBCQEJAQ==\n'
offset = 12
elif magic == b'\xee\x0c\r\n': # Python 3.4
pycData = b'7gwNChNz/FTtDQAA4wAAAAAAAAAAAAAAAAMAAABAAAAAc4YAAABkAABkAQBsAABaAABHZAIAZAMA\nhAAAZAMAgwIAWgEAZAQAZAUAZAYAhAEAWgIAZAcAZAgAhAAAWgMAZAkAZAoAhAAAWgQAZAsAZAwA\nhAAAWgUAZA0AZA4AhAAAWgYAZAAAZQUAXwcAZA8AZQUAXwgAZAAAZQYAXwcAZA8AZQYAXwgAZAEA\nUykQ6QAAAABOYwAAAAAAAAAAAAAAAAQAAABAAAAAc3kAAABlAABaAQBkAABaAgBlAwCDAABpAABk\nAQBkAgCEAgBaBABkAwBkBACEAABaBQBkBQBkBgCEAABaBgBkBwBkCACEAABaBwBkCQBkCgCEAABa\nCABkCwBkDACEAABaCQBkDQBkDgCEAABaCgBkDwBkEACEAABaCwBkEQBTKRLaBF9WZWNjAwAAAAAA\nAAADAAAAAgAAAEMAAABzFgAAAHwBAHwAAF8AAHwCAHwAAF8BAGQAAFMpAU4pAtoBRNoBZikD2gRz\nZWxmWgZsYWJlbHNaCGZ1bmN0aW9uqQByBgAAAPokLi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBl\nbmRlbmNlLnB52ghfX2luaXRfXwUAAABzBAAAAAABCQF6DV9WZWMuX19pbml0X19jAgAAAAAAAAAC\nAAAAAgAAAEMAAABzHgAAAHwBAHwAAGoAAGsGAHIaAHwAAGoAAHwBABlTZAEAUykCTnIBAAAAKQFy\nBAAAACkC2gF22gFrcgYAAAByBgAAAHIHAAAA2gtfX2dldGl0ZW1fXwkAAABzAAAAAHoQX1ZlYy5f\nX2dldGl0ZW1fX2MDAAAAAAAAAAMAAAAEAAAAQwAAAHMVAAAAdAAABHwAAGoBAHwBADx9AgBkAABT\nKQFOKQJaCF9zZXRpdGVtcgQAAAApA3IJAAAAcgoAAADaA3ZhbHIGAAAAcgYAAAByBwAAANoLX19z\nZXRpdGVtX18KAAAAcwAAAAB6EF9WZWMuX19zZXRpdGVtX19jAQAAAAAAAAABAAAAAgAAAEMAAABz\nCAAAAGQCAHwAABRTKQNO6QEAAADp/////3IGAAAAKQFyCQAAAHIGAAAAcgYAAAByBwAAANoHX19u\nZWdfXwsAAABzAAAAAHoMX1ZlYy5fX25lZ19fYwIAAAAAAAAAAgAAAAUAAAADAAAAcywAAAB0AAB8\nAABqAQCHAABmAQBkAQBkAgCGAAB8AABqAgBqAwCDAABEgwEAgwIAUykDTmMBAAAAAAAAAAMAAAAE\nAAAAEwAAAHMjAAAAaQAAfAAAXRkAXAIAfQEAfQIAiAAAfAIAFHwBAJMCAHEGAFNyBgAAAHIGAAAA\nKQPaAi4wcgoAAADaAXgpAdoFYWxwaGFyBgAAAHIHAAAA+go8ZGljdGNvbXA+DAAAAHMCAAAACQB6\nIV9WZWMuX19ybXVsX18uPGxvY2Fscz4uPGRpY3Rjb21wPikEcgIAAAByAwAAAHIEAAAA2gVpdGVt\ncykCcgkAAAByEwAAAHIGAAAAKQFyEwAAAHIHAAAA2ghfX3JtdWxfXwwAAABzAAAAAHoNX1ZlYy5f\nX3JtdWxfX2MCAAAAAAAAAAIAAAAEAAAAAwAAAHNAAAAAdAAAiAAAdAEAgwIAcjgAdAIAhwAAhwEA\nZgIAZAEAZAIAhgAAiAEAagMAagQAgwAARIMBAIMBAFN0BQBTZAAAUykDTmMBAAAAAAAAAAIAAAAF\nAAAAEwAAAHMiAAAAZwAAfAAAXRgAfQEAiAEAfAEAGYgAAHwBABkUkQIAcQYAU3IGAAAAcgYAAAAp\nAnIRAAAAcgoAAAApAtoFb3RoZXJyBQAAAHIGAAAAcgcAAAD6CjxsaXN0Y29tcD4RAAAAcwIAAAAJ\nAHogX1ZlYy5fX211bF9fLjxsb2NhbHM+LjxsaXN0Y29tcD4pBtoKaXNpbnN0YW5jZXICAAAA2gNz\ndW1yBAAAANoEa2V5c9oOTm90SW1wbGVtZW50ZWQpAnIFAAAAchcAAAByBgAAACkCchcAAAByBQAA\nAHIHAAAA2gdfX211bF9fDgAAAHMGAAAAAAIPASkCegxfVmVjLl9fbXVsX19jAgAAAAAAAAACAAAA\nBQAAAAMAAABzRwAAAHQAAIgAAGoBAIcAAIcBAGYCAGQBAGQCAIYAAHQCAIgAAGoDAGoEAIMAAIMB\nAGoFAIgBAGoDAGoEAIMAAIMBAESDAQCDAgBTKQNOYwEAAAAAAAAAAgAAAAUAAAATAAAAcyUAAABp\nAAB8AABdGwB9AQCIAAB8AQAZiAEAfAEAGRd8AQCTAgBxBgBTcgYAAAByBgAAACkCchEAAAByCgAA\nACkC2gF1cgkAAAByBgAAAHIHAAAAchQAAAAVAAAAcwIAAAAJAHogX1ZlYy5fX2FkZF9fLjxsb2Nh\nbHM+LjxkaWN0Y29tcD4pBnICAAAAcgMAAADaA3NldHIEAAAAchsAAADaBXVuaW9uKQJyHgAAAHIJ\nAAAAcgYAAAApAnIeAAAAcgkAAAByBwAAANoHX19hZGRfXxUAAABzAAAAAHoMX1ZlYy5fX2FkZF9f\nYwIAAAAAAAAAAgAAAAIAAABDAAAAcwkAAAB8AAB8AQALF1MpAXo0UmV0dXJucyBhIHZlY3RvciB3\naGljaCBpcyB0aGUgZGlmZmVyZW5jZSBvZiBhIGFuZCBiLnIGAAAAKQLaAWHaAWJyBgAAAHIGAAAA\ncgcAAADaB19fc3ViX18XAAAAcwIAAAAAAnoMX1ZlYy5fX3N1Yl9fTikM2ghfX25hbWVfX9oKX19t\nb2R1bGVfX9oMX19xdWFsbmFtZV9fch8AAAByCAAAAHILAAAAcg0AAAByEAAAAHIWAAAAch0AAABy\nIQAAAHIkAAAAcgYAAAByBgAAAHIGAAAAcgcAAAByAgAAAAQAAABzEAAAAAwBFQQMAQwBDAEMAgwH\nDAJyAgAAAGebK6GGm4QGPWMCAAAAAAAAAAUAAAAGAAAAQwAAAHNsAAAAZwAAfQIAeFkAfAAARF1R\nAH0DAHgoAHwCAERdIAB9BAB8AwB8AwB8BAAUfAQAfAQAFBt8BAAUGH0DAHEaAFd8AwB8AwAUfAEA\nawQAcg0AfAIAagAAfAMAgwEAAXENAHENAFd0AQB8AgCDAQBTKQFOKQLaBmFwcGVuZNoDbGVuKQXa\nAUxaA2Vwc1oJdnN0YXJsaXN0cgkAAABaBXZzdGFycgYAAAByBgAAAHIHAAAA2gdfUl9yYW5rGwAA\nAHMOAAAAAAEGAQ0BDQEeARAAFAFyKwAAAGMBAAAAAAAAAAYAAAAFAAAAAwAAAHO3AAAAdAAAdAEA\ndAIAiAEAgwEAgwEAgwEAfQEAZAEAfQIAeJIAiAEAZAEAGWoDAERdgwCJAACHAACHAQBmAgBkAgBk\nAwCGAAB8AQBEgwEAfQMAfAMAZwAAawMAciwAfAMAZAEAGX0EAHwBAGoEAHwEAIMBAAF8AgBkBAA3\nfQIAeDEAfAMAZAQAZAAAhQIAGURdHAB9BQCIAQB8BQAZiAEAfAQAGReIAQB8BQA8cYwAV3EsAHEs\nAFd8AgBTKQVOcgEAAABjAQAAAAAAAAACAAAABAAAABMAAABzKgAAAGcAAHwAAF0gAH0BAIgBAHwB\nABmIAAAZZAAAawMAcgYAfAEAkQIAcQYAUykBcgEAAAByBgAAACkCchEAAADaAXIpAtoBY9oHcm93\nbGlzdHIGAAAAcgcAAAByGAAAACcAAABzAgAAAAkAeh1fR0YyX3JhbmsuPGxvY2Fscz4uPGxpc3Rj\nb21wPnIOAAAAKQVyHwAAANoFcmFuZ2VyKQAAAHIDAAAA2gZyZW1vdmUpBnIuAAAAWglyb3dzX2xl\nZnRyLAAAAFoRcm93c193aXRoX25vbnplcm9aBXBpdm90Wglyb3dfaW5kZXhyBgAAACkCci0AAABy\nLgAAAHIHAAAA2glfR0YyX3JhbmsjAAAAcxYAAAAAARgBBgEUARwBDAEKAQ0BCgEXASEBcjEAAABj\nAQAAAAAAAAAEAAAABQAAAEMAAABzdAAAAGQBAGQCAIQAAHwAAESDAQB9AQB4WgB8AABEXVIAfQIA\neEkAfAIAagAAagEAgwAARF04AH0DAHwDAGQDAGsDAHIwAHQCAHwDAHQDAGoEAIMCAHJeAHQFAHwB\nAIMBAFN0BgB8AQCDAQBTcTAAV3EaAFdkAwBTKQROYwEAAAAAAAAAAgAAAAUAAABTAAAAcyUAAABn\nAAB8AABdGwB9AQB0AAB8AQBqAQB8AQBqAgCDAgCRAgBxBgBTcgYAAAApA3ICAAAAcgMAAAByBAAA\nACkCchEAAAByHgAAAHIGAAAAcgYAAAByBwAAAHIYAAAAMQAAAHMCAAAACQB6GV9yYW5rLjxsb2Nh\nbHM+LjxsaXN0Y29tcD5yAQAAACkHcgQAAADaBnZhbHVlc3IZAAAA2gNHRjJaA09uZXIxAAAAcisA\nAAApBHIqAAAAWgJMY3IJAAAAchIAAAByBgAAAHIGAAAAcgcAAADaBV9yYW5rMAAAAHMQAAAAAAET\nAQ0BFgEMARIBCgESAXI0AAAAYwEAAAAAAAAAAQAAAAQAAABDAAAAczQAAAB0AAB8AAB0AQB0AgBm\nAgCDAgBzGwB0AwCCAQB0BAAEagUAZAEANwJfBQB0BgB8AACDAQBTKQJhcAIAAEZpbmRzIHRoZSBy\nYW5rIG9mIGEgbGlzdCBvciBzZXQgb2YgdmVjdG9ycy4KCiAgICBBcmdzOgogICAgICAgIEw6IEEg\nbGlzdCBvciBzZXQgb2YgdmVjdG9ycy4KCiAgICBSZXR1cm5zOgogICAgICAgIHg6IEEgbm9ubmVn\nYXRpdmUgaW50ZWdlci4gIFRoZSByYW5rIG9mIEwuCgogICAgUmFpc2VzOgogICAgICAgIEFzc2Vy\ndGlvbkVycm9yOiBBbiBlcnJvciBvY2N1cnMgd2hlbiBMIGlzIG5vdCBhIGxpc3Qgb3Igc2V0LgoK\nICAgIEV4YW1wbGU6CiAgICA+Pj4gZnJvbSB2ZWMgaW1wb3J0IFZlYwogICAgPj4+IGEwID0gVmVj\nKHsnYScsICdiJywgJ2MnLCAnZCd9LCB7J2EnOiAxfSkKICAgID4+PiBhMSA9IFZlYyh7J2EnLCAn\nYicsICdjJywgJ2QnfSwgeydiJzogMX0pCiAgICA+Pj4gYTIgPSBWZWMoeydhJywgJ2InLCAnYycs\nICdkJ30sIHsnYyc6IDF9KQogICAgPj4+IGEzID0gVmVjKHsnYScsICdiJywgJ2MnLCAnZCd9LCB7\nJ2EnOiAxLCAnYyc6IDN9KQogICAgPj4+IHJhbmsoW2EwLCBhMSwgYTJdKQogICAgMwogICAgPj4+\nIHJhbmsoe2EwLCBhMiwgYTN9KQogICAgMgogICAgPj4+IHJhbmsoe2EwLCBhMSwgYTN9KQogICAg\nMwogICAgPj4+IHJhbmsoW2EwLCBhMSwgYTIsIGEzXSkKICAgIDMKICAgIHIOAAAAKQdyGQAAANoE\nbGlzdHIfAAAA2g5Bc3NlcnRpb25FcnJvctoEcmFua9oJX19jYWxsc19fcjQAAAApAXIqAAAAcgYA\nAAByBgAAAHIHAAAAcjcAAAA6AAAAcwYAAAAAGxsBDwFyNwAAAGMBAAAAAAAAAAEAAAAEAAAAQwAA\nAHNAAAAAdAAAfAAAdAEAdAIAZgIAgwIAcxsAdAMAggEAdAQABGoFAGQBADcCXwUAdAYAfAAAgwEA\ndAcAfAAAgwEAawIAUykCYe0CAABEZXRlcm1pbmVzIGlmIGEgbGlzdCBvciBzZXQgb2YgdmVjdG9y\ncyBhcmUgbGluZWFybHkgaW5kZXBlbmRlbnQuCgogICAgQXJnczoKICAgICAgICBMOiBBIGxpc3Qg\nb3Igc2V0IG9mIHZlY3RvcnMuCgogICAgUmV0dXJuczoKICAgICAgICB4OiBBIGJvb2xlYW4uICBU\ncnVlIGlmIHRoZSB2ZWN0b3JzIGluIEwgYXJlIGxpbmVhcmx5IGluZGVwZW5kZW50LiAgRmFsc2UK\nICAgICAgICBvdGhlcndpc2UuCgogICAgUmFpc2VzOgogICAgICAgIEFzc2VydGlvbkVycm9yOiBB\nbiBlcnJvciBvY2N1cnMgd2hlbiBMIGlzIG5vdCBhIGxpc3Qgb3Igc2V0LgoKICAgIEV4YW1wbGU6\nCiAgICA+Pj4gZnJvbSB2ZWMgaW1wb3J0IFZlYwogICAgPj4+IGEwID0gVmVjKHsnYScsICdiJywg\nJ2MnLCAnZCd9LCB7J2EnOiAxfSkKICAgID4+PiBhMSA9IFZlYyh7J2EnLCAnYicsICdjJywgJ2Qn\nfSwgeydiJzogMX0pCiAgICA+Pj4gYTIgPSBWZWMoeydhJywgJ2InLCAnYycsICdkJ30sIHsnYyc6\nIDF9KQogICAgPj4+IGEzID0gVmVjKHsnYScsICdiJywgJ2MnLCAnZCd9LCB7J2EnOiAxLCAnYyc6\nIDN9KQogICAgPj4+IGlzX2luZGVwZW5kZW50KFthMCwgYTEsIGEyXSkKICAgIFRydWUKICAgID4+\nPiBpc19pbmRlcGVuZGVudCh7YTAsIGEyLCBhM30pCiAgICBGYWxzZQogICAgPj4+IGlzX2luZGVw\nZW5kZW50KHthMCwgYTEsIGEzfSkKICAgIFRydWUKICAgID4+PiBpc19pbmRlcGVuZGVudChbYTAs\nIGExLCBhMiwgYTNdKQogICAgRmFsc2UKICAgIHIOAAAAKQhyGQAAAHI1AAAAch8AAAByNgAAANoO\naXNfaW5kZXBlbmRlbnRyOAAAAHI0AAAAcikAAAApAXIqAAAAcgYAAAByBgAAAHIHAAAAcjkAAABZ\nAAAAcwYAAAAAHBsBDwFyOQAAAFoMaW5zdHJ1bWVudGVkKQlyMwAAAHICAAAAcisAAAByMQAAAHI0\nAAAAcjcAAAByOQAAAHI4AAAA2gtfX3ZlcnNpb25fX3IGAAAAcgYAAAByBgAAAHIHAAAA2gg8bW9k\ndWxlPgIAAABzFAAAAAwCExcPCAwNDAoMHwwgCQEJAQkB\n'
offset = 12
elif magic == b'\xf8\x0c\r\n': # Python 3.5
pycData = b'+AwNChNz/FTtDQAA4wAAAAAAAAAAAAAAAAMAAABAAAAAc4YAAABkAABkAQBsAABaAABHZAIAZAMA\nhAAAZAMAgwIAWgEAZAQAZAUAZAYAhAEAWgIAZAcAZAgAhAAAWgMAZAkAZAoAhAAAWgQAZAsAZAwA\nhAAAWgUAZA0AZA4AhAAAWgYAZAAAZQUAXwcAZA8AZQUAXwgAZAAAZQYAXwcAZA8AZQYAXwgAZAEA\nUykQ6QAAAABOYwAAAAAAAAAAAAAAAAQAAABAAAAAc3kAAABlAABaAQBkAABaAgBlAwCDAABpAABk\nAQBkAgCEAgBaBABkAwBkBACEAABaBQBkBQBkBgCEAABaBgBkBwBkCACEAABaBwBkCQBkCgCEAABa\nCABkCwBkDACEAABaCQBkDQBkDgCEAABaCgBkDwBkEACEAABaCwBkEQBTKRLaBF9WZWNjAwAAAAAA\nAAADAAAAAgAAAEMAAABzFgAAAHwBAHwAAF8AAHwCAHwAAF8BAGQAAFMpAU4pAtoBRNoBZikD2gRz\nZWxmWgZsYWJlbHNaCGZ1bmN0aW9uqQByBgAAAPokLi4vcmVzb3VyY2VzL3ByaXZhdGUvaW5kZXBl\nbmRlbmNlLnB52ghfX2luaXRfXwUAAABzBAAAAAABCQF6DV9WZWMuX19pbml0X19jAgAAAAAAAAAC\nAAAAAgAAAEMAAABzHgAAAHwBAHwAAGoAAGsGAHIaAHwAAGoAAHwBABlTZAEAUykCTnIBAAAAKQFy\nBAAAACkC2gF22gFrcgYAAAByBgAAAHIHAAAA2gtfX2dldGl0ZW1fXwkAAABzAAAAAHoQX1ZlYy5f\nX2dldGl0ZW1fX2MDAAAAAAAAAAMAAAAEAAAAQwAAAHMVAAAAdAAABHwAAGoBAHwBADx9AgBkAABT\nKQFOKQJaCF9zZXRpdGVtcgQAAAApA3IJAAAAcgoAAADaA3ZhbHIGAAAAcgYAAAByBwAAANoLX19z\nZXRpdGVtX18KAAAAcwAAAAB6EF9WZWMuX19zZXRpdGVtX19jAQAAAAAAAAABAAAAAgAAAEMAAABz\nCAAAAGQCAHwAABRTKQNO6QEAAADp/////3IGAAAAKQFyCQAAAHIGAAAAcgYAAAByBwAAANoHX19u\nZWdfXwsAAABzAAAAAHoMX1ZlYy5fX25lZ19fYwIAAAAAAAAAAgAAAAUAAAADAAAAcywAAAB0AAB8\nAABqAQCHAABmAQBkAQBkAgCGAAB8AABqAgBqAwCDAABEgwEAgwIAUykDTmMBAAAAAAAAAAMAAAAE\nAAAAEwAAAHMjAAAAaQAAfAAAXRkAXAIAfQEAfQIAiAAAfAIAFHwBAJMCAHEGAFNyBgAAAHIGAAAA\nKQPaAi4wcgoAAADaAXgpAdoFYWxwaGFyBgAAAHIHAAAA+go8ZGljdGNvbXA+DAAAAHMCAAAACQB6\nIV9WZWMuX19ybXVsX18uPGxvY2Fscz4uPGRpY3Rjb21wPikEcgIAAAByAwAAAHIEAAAA2gVpdGVt\ncykCcgkAAAByEwAAAHIGAAAAKQFyEwAAAHIHAAAA2ghfX3JtdWxfXwwAAABzAAAAAHoNX1ZlYy5f\nX3JtdWxfX2MCAAAAAAAAAAIAAAAEAAAAAwAAAHNAAAAAdAAAiAAAdAEAgwIAcjgAdAIAhwAAhwEA\nZgIAZAEAZAIAhgAAiAEAagMAagQAgwAARIMBAIMBAFN0BQBTZAAAUykDTmMBAAAAAAAAAAIAAAAF\nAAAAEwAAAHMiAAAAZwAAfAAAXRgAfQEAiAEAfAEAGYgAAHwBABkUkQIAcQYAU3IGAAAAcgYAAAAp\nAnIRAAAAcgoAAAApAtoFb3RoZXJyBQAAAHIGAAAAcgcAAAD6CjxsaXN0Y29tcD4RAAAAcwIAAAAJ\nAHogX1ZlYy5fX211bF9fLjxsb2NhbHM+LjxsaXN0Y29tcD4pBtoKaXNpbnN0YW5jZXICAAAA2gNz\ndW1yBAAAANoEa2V5c9oOTm90SW1wbGVtZW50ZWQpAnIFAAAAchcAAAByBgAAACkCchcAAAByBQAA\nAHIHAAAA2gdfX211bF9fDgAAAHMGAAAAAAIPASkCegxfVmVjLl9fbXVsX19jAgAAAAAAAAACAAAA\nBQAAAAMAAABzRwAAAHQAAIgAAGoBAIcAAIcBAGYCAGQBAGQCAIYAAHQCAIgAAGoDAGoEAIMAAIMB\nAGoFAIgBAGoDAGoEAIMAAIMBAESDAQCDAgBTKQNOYwEAAAAAAAAAAgAAAAUAAAATAAAAcyUAAABp\nAAB8AABdGwB9AQCIAAB8AQAZiAEAfAEAGRd8AQCTAgBxBgBTcgYAAAByBgAAACkCchEAAAByCgAA\nACkC2gF1cgkAAAByBgAAAHIHAAAAchQAAAAVAAAAcwIAAAAJAHogX1ZlYy5fX2FkZF9fLjxsb2Nh\nbHM+LjxkaWN0Y29tcD4pBnICAAAAcgMAAADaA3NldHIEAAAAchsAAADaBXVuaW9uKQJyHgAAAHIJ\nAAAAcgYAAAApAnIeAAAAcgkAAAByBwAAANoHX19hZGRfXxUAAABzAAAAAHoMX1ZlYy5fX2FkZF9f\nYwIAAAAAAAAAAgAAAAIAAABDAAAAcwkAAAB8AAB8AQALF1MpAXo0UmV0dXJucyBhIHZlY3RvciB3\naGljaCBpcyB0aGUgZGlmZmVyZW5jZSBvZiBhIGFuZCBiLnIGAAAAKQLaAWHaAWJyBgAAAHIGAAAA\ncgcAAADaB19fc3ViX18XAAAAcwIAAAAAAnoMX1ZlYy5fX3N1Yl9fTikM2ghfX25hbWVfX9oKX19t\nb2R1bGVfX9oMX19xdWFsbmFtZV9fch8AAAByCAAAAHILAAAAcg0AAAByEAAAAHIWAAAAch0AAABy\nIQAAAHIkAAAAcgYAAAByBgAAAHIGAAAAcgcAAAByAgAAAAQAAABzEAAAAAwBFQQMAQwBDAEMAgwH\nDAJyAgAAAGebK6GGm4QGPWMCAAAAAAAAAAUAAAAGAAAAQwAAAHNpAAAAZwAAfQIAeFYAfAAARF1O\nAH0DAHgoAHwCAERdIAB9BAB8AwB8AwB8BAAUfAQAfAQAFBt8BAAUGH0DAHEaAFd8AwB8AwAUfAEA\nawQAcg0AfAIAagAAfAMAgwEAAXENAFd0AQB8AgCDAQBTKQFOKQLaBmFwcGVuZNoDbGVuKQXaAUxa\nA2Vwc1oJdnN0YXJsaXN0cgkAAABaBXZzdGFycgYAAAByBgAAAHIHAAAA2gdfUl9yYW5rGwAAAHMO\nAAAAAAEGAQ0BDQEeARAAEQFyKwAAAGMBAAAAAAAAAAYAAAAFAAAAAwAAAHO0AAAAdAAAdAEAdAIA\niAEAgwEAgwEAgwEAfQEAZAEAfQIAeI8AiAEAZAEAGWoDAERdgACJAACHAACHAQBmAgBkAgBkAwCG\nAAB8AQBEgwEAfQMAfAMAZwAAawMAciwAfAMAZAEAGX0EAHwBAGoEAHwEAIMBAAF8AgBkBAA3fQIA\neC4AfAMAZAQAZAAAhQIAGURdHAB9BQCIAQB8BQAZiAEAfAQAGReIAQB8BQA8cYwAV3EsAFd8AgBT\nKQVOcgEAAABjAQAAAAAAAAACAAAABAAAABMAAABzKgAAAGcAAHwAAF0gAH0BAIgBAHwBABmIAAAZ\nZAAAawMAcgYAfAEAkQIAcQYAUykBcgEAAAByBgAAACkCchEAAADaAXIpAtoBY9oHcm93bGlzdHIG\nAAAAcgcAAAByGAAAACcAAABzAgAAAAkAeh1fR0YyX3JhbmsuPGxvY2Fscz4uPGxpc3Rjb21wPnIO\nAAAAKQVyHwAAANoFcmFuZ2VyKQAAAHIDAAAA2gZyZW1vdmUpBnIuAAAAWglyb3dzX2xlZnRyLAAA\nAFoRcm93c193aXRoX25vbnplcm9aBXBpdm90Wglyb3dfaW5kZXhyBgAAACkCci0AAAByLgAAAHIH\nAAAA2glfR0YyX3JhbmsjAAAAcxYAAAAAARgBBgEUARwBDAEKAQ0BCgEXAR4BcjEAAABjAQAAAAAA\nAAAEAAAABQAAAEMAAABzdAAAAGQBAGQCAIQAAHwAAESDAQB9AQB4WgB8AABEXVIAfQIAeEkAfAIA\nagAAagEAgwAARF04AH0DAHwDAGQDAGsDAHIwAHQCAHwDAHQDAGoEAIMCAHJeAHQFAHwBAIMBAFN0\nBgB8AQCDAQBTcTAAV3EaAFdkAwBTKQROYwEAAAAAAAAAAgAAAAUAAABTAAAAcyUAAABnAAB8AABd\nGwB9AQB0AAB8AQBqAQB8AQBqAgCDAgCRAgBxBgBTcgYAAAApA3ICAAAAcgMAAAByBAAAACkCchEA\nAAByHgAAAHIGAAAAcgYAAAByBwAAAHIYAAAAMQAAAHMCAAAACQB6GV9yYW5rLjxsb2NhbHM+Ljxs\naXN0Y29tcD5yAQAAACkHcgQAAADaBnZhbHVlc3IZAAAA2gNHRjJaA09uZXIxAAAAcisAAAApBHIq\nAAAAWgJMY3IJAAAAchIAAAByBgAAAHIGAAAAcgcAAADaBV9yYW5rMAAAAHMQAAAAAAETAQ0BFgEM\nARIBCgESAXI0AAAAYwEAAAAAAAAAAQAAAAQAAABDAAAAczQAAAB0AAB8AAB0AQB0AgBmAgCDAgBz\nGwB0AwCCAQB0BAAEagUAZAEANwJfBQB0BgB8AACDAQBTKQJhcAIAAEZpbmRzIHRoZSByYW5rIG9m\nIGEgbGlzdCBvciBzZXQgb2YgdmVjdG9ycy4KCiAgICBBcmdzOgogICAgICAgIEw6IEEgbGlzdCBv\nciBzZXQgb2YgdmVjdG9ycy4KCiAgICBSZXR1cm5zOgogICAgICAgIHg6IEEgbm9ubmVnYXRpdmUg\naW50ZWdlci4gIFRoZSByYW5rIG9mIEwuCgogICAgUmFpc2VzOgogICAgICAgIEFzc2VydGlvbkVy\ncm9yOiBBbiBlcnJvciBvY2N1cnMgd2hlbiBMIGlzIG5vdCBhIGxpc3Qgb3Igc2V0LgoKICAgIEV4\nYW1wbGU6CiAgICA+Pj4gZnJvbSB2ZWMgaW1wb3J0IFZlYwogICAgPj4+IGEwID0gVmVjKHsnYScs\nICdiJywgJ2MnLCAnZCd9LCB7J2EnOiAxfSkKICAgID4+PiBhMSA9IFZlYyh7J2EnLCAnYicsICdj\nJywgJ2QnfSwgeydiJzogMX0pCiAgICA+Pj4gYTIgPSBWZWMoeydhJywgJ2InLCAnYycsICdkJ30s\nIHsnYyc6IDF9KQogICAgPj4+IGEzID0gVmVjKHsnYScsICdiJywgJ2MnLCAnZCd9LCB7J2EnOiAx\nLCAnYyc6IDN9KQogICAgPj4+IHJhbmsoW2EwLCBhMSwgYTJdKQogICAgMwogICAgPj4+IHJhbmso\ne2EwLCBhMiwgYTN9KQogICAgMgogICAgPj4+IHJhbmsoe2EwLCBhMSwgYTN9KQogICAgMwogICAg\nPj4+IHJhbmsoW2EwLCBhMSwgYTIsIGEzXSkKICAgIDMKICAgIHIOAAAAKQdyGQAAANoEbGlzdHIf\nAAAA2g5Bc3NlcnRpb25FcnJvctoEcmFua9oJX19jYWxsc19fcjQAAAApAXIqAAAAcgYAAAByBgAA\nAHIHAAAAcjcAAAA6AAAAcwYAAAAAGxsBDwFyNwAAAGMBAAAAAAAAAAEAAAAEAAAAQwAAAHNAAAAA\ndAAAfAAAdAEAdAIAZgIAgwIAcxsAdAMAggEAdAQABGoFAGQBADcCXwUAdAYAfAAAgwEAdAcAfAAA\ngwEAawIAUykCYe0CAABEZXRlcm1pbmVzIGlmIGEgbGlzdCBvciBzZXQgb2YgdmVjdG9ycyBhcmUg\nbGluZWFybHkgaW5kZXBlbmRlbnQuCgogICAgQXJnczoKICAgICAgICBMOiBBIGxpc3Qgb3Igc2V0\nIG9mIHZlY3RvcnMuCgogICAgUmV0dXJuczoKICAgICAgICB4OiBBIGJvb2xlYW4uICBUcnVlIGlm\nIHRoZSB2ZWN0b3JzIGluIEwgYXJlIGxpbmVhcmx5IGluZGVwZW5kZW50LiAgRmFsc2UKICAgICAg\nICBvdGhlcndpc2UuCgogICAgUmFpc2VzOgogICAgICAgIEFzc2VydGlvbkVycm9yOiBBbiBlcnJv\nciBvY2N1cnMgd2hlbiBMIGlzIG5vdCBhIGxpc3Qgb3Igc2V0LgoKICAgIEV4YW1wbGU6CiAgICA+\nPj4gZnJvbSB2ZWMgaW1wb3J0IFZlYwogICAgPj4+IGEwID0gVmVjKHsnYScsICdiJywgJ2MnLCAn\nZCd9LCB7J2EnOiAxfSkKICAgID4+PiBhMSA9IFZlYyh7J2EnLCAnYicsICdjJywgJ2QnfSwgeydi\nJzogMX0pCiAgICA+Pj4gYTIgPSBWZWMoeydhJywgJ2InLCAnYycsICdkJ30sIHsnYyc6IDF9KQog\nICAgPj4+IGEzID0gVmVjKHsnYScsICdiJywgJ2MnLCAnZCd9LCB7J2EnOiAxLCAnYyc6IDN9KQog\nICAgPj4+IGlzX2luZGVwZW5kZW50KFthMCwgYTEsIGEyXSkKICAgIFRydWUKICAgID4+PiBpc19p\nbmRlcGVuZGVudCh7YTAsIGEyLCBhM30pCiAgICBGYWxzZQogICAgPj4+IGlzX2luZGVwZW5kZW50\nKHthMCwgYTEsIGEzfSkKICAgIFRydWUKICAgID4+PiBpc19pbmRlcGVuZGVudChbYTAsIGExLCBh\nMiwgYTNdKQogICAgRmFsc2UKICAgIHIOAAAAKQhyGQAAAHI1AAAAch8AAAByNgAAANoOaXNfaW5k\nZXBlbmRlbnRyOAAAAHI0AAAAcikAAAApAXIqAAAAcgYAAAByBgAAAHIHAAAAcjkAAABZAAAAcwYA\nAAAAHBsBDwFyOQAAAFoMaW5zdHJ1bWVudGVkKQlyMwAAAHICAAAAcisAAAByMQAAAHI0AAAAcjcA\nAAByOQAAAHI4AAAA2gtfX3ZlcnNpb25fX3IGAAAAcgYAAAByBgAAAHIHAAAA2gg8bW9kdWxlPgIA\nAABzFAAAAAwCExcPCAwNDAoMHwwgCQEJAQkB\n'
offset = 12
else:
raise ImportError("Unsupported Python version")
pycData = base64.decodebytes(pycData)
assert pycData[:4] == magic, "Bad magic number Independnce"
try:
return marshal.loads(pycData[offset:])
except ValueError:
raise ImportError("Could not read .pyc data")
exec(_get_module())